Unity版本2020.3.7f1c1
一、准备
新建unity项目,参考基本配置操作
Unity AR Foundation 的 ARCore 扩展入门 | Google Developers
。
适用于 Android 的 ARCore 扩展快速入门 | Google Developers
-
导航到
Window
>
Package Manager
。 -
在
Packages
旁边,选择
Unity Registry
。
安装两个包,如下图,
安装 ARCore 扩展包
,
Releases · google-ar/arcore-unity-extensions (github.com)
网址中下载。
导入过程中,我选择了json文件,因为参考导入第二个add package from tarball ,在安装软件到Android过程中会中断build,参考网上解决办法,
选择了第一种的add package from disk
。
安卓:
-
导航到
编辑
>
项目设置
>
XR 插件管理
>
. -
在
Plug-in Providers
下检查
ARCore
。安卓:
-
导航到“
编辑”
>“
项目设置”
>“
XR 插件管理”
>“
ARCore”
。
Requirement
默认设置为
Required
。 -
单击
Edit > Project Settings > Player
,选择带有 Android 图标的选项卡。在
其他设置 > 标识下,
指定
24
或更高的
最低 API 级别
。 -
完成以下修改
二、平面检测放置模型
删除原来的Main Camera,右键添加——XR——AR Session Origin、AR Session。
点击AR Session Origin,1.在右侧添加AR Plane Manager组件(搜索添加),扫描后平面的预制件Plane Prefab需要设置,在Hierarchy场景区域,右键——XR——AR default Plane,将其拖入到文件夹中,修改名字,设置为Plane Prefab。2.为了在扫描后的平面中点击放置三维模型,需要添加AR Raycast Manager。
添加脚本,射线检测,添加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<ARRaycastHit> Hits;
private ARRaycastManager mRaycastManager;
private GameObject spawnedObject = null;
private void Start()
{
Hits = new List<ARRaycastHit>();
mRaycastManager = GetComponent<ARRaycastManager>();
}
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;
}
}
}
}
设置预制件,可设置自己的三维模型。
最后是打包安装,运行结果如图