Unity使用AR Foundation(1)

Unity版本2020.3.7f1c1

 

一、准备

新建unity项目,参考基本配置操作Unity AR Foundation 的 ARCore 扩展入门  |  Google Developers。适用于 Android 的 ARCore 扩展快速入门  |  Google Developers

  1. 导航到Window > Package Manager 。

  2. Packages旁边,选择Unity Registry 。

安装两个包,如下图,Unity使用AR Foundation(1)_第1张图片

安装 ARCore 扩展包 ,Releases · google-ar/arcore-unity-extensions (github.com)网址中下载。

导入过程中,我选择了json文件,因为参考导入第二个add package from tarball ,在安装软件到Android过程中会中断build,参考网上解决办法,选择了第一种的add package from disk

Unity使用AR Foundation(1)_第2张图片

Unity使用AR Foundation(1)_第3张图片

安卓:

  1. 导航到编辑>项目设置XR 插件管理> .
  2. Plug-in Providers下检查ARCore 。

    安卓:Unity使用AR Foundation(1)_第4张图片

  3. 导航到“编辑” >“项目设置” >“ XR 插件管理” >“ ARCore” 。 Requirement默认设置为Required 。

    Unity使用AR Foundation(1)_第5张图片

  4. 单击Edit > Project Settings > Player ,选择带有 Android 图标的选项卡。在其他设置 > 标识下,指定24或更高的最低 API 级别。 

  5. 完成以下修改Unity使用AR Foundation(1)_第6张图片

 二、平面检测放置模型

删除原来的Main Camera,右键添加——XR——AR Session Origin、AR Session。

Unity使用AR Foundation(1)_第7张图片

点击AR Session Origin,1.在右侧添加AR Plane Manager组件(搜索添加),扫描后平面的预制件Plane Prefab需要设置,在Hierarchy场景区域,右键——XR——AR default Plane,将其拖入到文件夹中,修改名字,设置为Plane Prefab。2.为了在扫描后的平面中点击放置三维模型,需要添加AR Raycast Manager。

Unity使用AR Foundation(1)_第8张图片

添加脚本,射线检测,添加AppControler。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

[RequireComponent(typeof(ARRaycastManager))]
public class AppControler : MonoBehaviour
{
    public GameObject spawnPrefab;
    static List Hits;
    private ARRaycastManager mRaycastManager;
    private GameObject spawnedObject = null;
    private void Start()
    {
        Hits = new List();
        mRaycastManager = GetComponent();
    }

    void Update()
    {
        if (Input.touchCount == 0)
            return;
        var touch = Input.GetTouch(0);
        if (mRaycastManager.Raycast(touch.position, Hits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds))
        {
            var hitPose = Hits[0].pose;
            if (spawnedObject == null)
            {
                spawnedObject = Instantiate(spawnPrefab, hitPose.position, hitPose.rotation);
            }
            else
            {
                spawnedObject.transform.position = hitPose.position;
            }
        }
    }
}


设置预制件,可设置自己的三维模型。

Unity使用AR Foundation(1)_第9张图片 

 最后是打包安装,运行结果如图

Unity使用AR Foundation(1)_第10张图片

参考(12条消息) ARFoundation之路-Raycasting_DavidWang-CSDN博客。

 

你可能感兴趣的:(学习,unity)