因部分设备支持ARKit,部分设备不支持,因此程序需判断该设备是否支持ARKit,在执行后续操作
1、Unity切换IOS平台,导入SDK,新建scene
2、新建Skode_Test脚本进行测试,内容如下
using UnityEngine;
using UnityEngine.XR.iOS;
using UnityEngine.UI;
public class Skode_Test : MonoBehaviour {
public Text text01, text02;
void Start () {
//第一种判断方法
ARKitSessionConfiguration configuration = new ARKitSessionConfiguration();
text01.text = configuration.IsSupported.ToString();
//第二种判断方法
ARKitWorldTrackingSessionConfiguration configuration02 = new
ARKitWorldTrackingSessionConfiguration();
text02.text = configuration02.IsSupported.ToString();
}
}
3、根据脚本,Unity场景新建两个Text,并绑定到脚本
4、导出XCode:不必勾选Development Build
5、XCode Build到手机,若手机支持ARKit,则显示True。
XCode需像上篇博客一样进行配置:配置地址(自第5步开始)
若用户手机不支持ARKit,则不希望用户下载该应用
该步在XCode进行配置
点击设计树中的Info.plist,为其添加下方红色框中的一栏
1、Unity的Main Camera——Camera组件——Clear Flags改为Depth Only
2、为Main Camera添加Unity AR Video
Unity AR Video的Clear Material赋值为YUVMaterial,该脚本功能是将摄像头拍摄到的画面渲染出来
测试是使用ARKit remote App进行测试(ARKit remote App打包方法),观看是否能将手机拍到的画面渲染到Unity屏幕
3、为Unity场景添加ARKitRemoteConnection预制体
4、运行Unity,Unity可看到手机拍摄的画面,即启动了相机
目的:添加组件,使检测到现实平面后,手机出现虚拟平面和点云
在启动相机基础上,进行如下操作:
1、为MainCamera添加UnityARCameraManager脚本,将MainCamera赋值给该脚本的Camera
该脚本中含有检测检测手机是否支持ARKit的功能,所以就不需要再做检测手机是否支持ARKit的这份工作
2、添加平面:Unity添加空物体,改名GeneratePlane,位置归零,为其添加UnityARGeneratePlane脚本
为该脚本的PlanePrefab赋值,例:debugPlanePrefab
3、添加点云:创建空物体PointCloud,位置归零,添加PointCloudParticleExample脚本
点云预制体Point Cloud Particle Prefab:ParticlePainterPrefab
点的最大数目Max Points To Show:1000
点的大小Particle Size:0.01
4、启动手机Remote App,运行Unity,可看到检测到平面,出现点云
Remote App开发地址:ARKit Remote
大家还有什么问题,欢迎在下方留言!