Unity ARKit的基本使用
- 资源下载
- 使用
- ARKit至少需要以下三个类
- UnityARSessionNativeInterface
- 接收ARKit检测到的特征点
- 接收ARKit检测到的平面信息
- 根据现实显示影子
- 在Unity编辑器上进行调试
- 原文链接
资源下载
Bitbucket: https://bitbucket.org/Unity-Technologies/unity-arkit-plugin
使用
ARKit至少需要以下三个类
UnityEngine.XR.iOS.UnityARVideo :通过CommandBuffer 将iOS设备的摄像头图像绘制到Unity的Camera中的类。将AddComponent 添加到相机并使用它。请将YUVMaterial 设置为ClearMaterial 属性。
此外,如果SkyBox等出现在相机上,相机的图像将被隐藏,因此您需要将相机的清除标志设置为仅适用于深度。UnityARCameraNearFar :在Unity镜头剪切面的近/远类适当设置。将它添加到主相机并使用它。UnityARCameraManager :除了使摄像机的运动与终端的运动同步以外,还可以设置多个项目的类别。将AddComponent 添加到任意的GameObject 中,使用相机的引用并使用它。
UnityARSessionNativeInterface
顾名思义,它有一个与本地ARKit桥接的作用,可以接收后面描述的检测结果的获取作为这个类的代表。
接收ARKit检测到的特征点
可以使用名为
1 2 3 4 5 6 7 8 | public void Start() { UnityARSessionNativeInterface.ARFrameUpdatedEvent + = ARFrameUpdated; } public void ARFrameUpdated(UnityAR Camera camera) { Vecter3 [] pointCloud = camera.pointCloudData; } |
在Unity ARKit插件的示例中,相应的处理在名为
接收ARKit检测到的平面信息
接收ARKit检测到的平面信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public void Start() { UnityARSessionNativeInterface.ARAnchorAddedEvent + = AddAnchor; UnityARSessionNativeInterface.ARAnchorUpdatedEvent + = UpdateAnchor; UnityARSessionNativeInterface.ARAnchorRemovedEvent + = RemoveAnchor; } public void AddAnchor(ARPlane Anchor arPlaneAnchor) { Debug.Log(); } public void RemoveAnchor(ARPlane锚arPlaneAnchor) { Debug.Log(); } public void UpdateAnchor(ARPlaneAnchor arPlaneAnchor) { Debug.Log(); } |
平面信息存储在ARPlane Anchor结构中。
为了实现计划信息游戏物体,
在存储必要的信息,
受到游戏物体和如下
1 2 3 4 | targetGameObject.name = arPlaneAnchor.identifier; ARPlaneAnchorGameObject arpag = new ARPlaneAnchorGameObject(); arpag.planeAnchor = arPlaneAnchor; arpag.gameObject = UpdatePlaneWithAnchorTransform(targetGameObject,arPlaneAnchor); |
另外,由于
1 | UpdatePlaneWithAnchorTransform(arpag.gameobject,arPlaneAnchor); |
在Unity ARKit插件的示例中,相应的处理在名为
根据现实显示影子
为了显示阴影,需要以下三个步骤。
- 将
UnityARCameraManager 的EnableLightEstimation 设置为true 。 - 在Unity
DirectionalLight 的创建,UnityARAmbient 到AddComponent 的。 - 由于
shadowPlaneMaterial 是作为仅显示阴影的素材准备的,请将其设置为floor等。
在Unity编辑器上进行调试
在Unity ARKit插件中有一个名为UnityARKitRemote的场景文件。
通过在iPhone真机上移动场景,您可以像Unity Remote一样在Unity Editor上操作ARKit。
程序如下。
ARKitRemoteConnection 装配式放置在现场的- 统一编辑器中的运行运行
- 在iOS的终端
UnityARKitRemote 打开的场景的含有应用程序 - 统一控制台的,连接的播放机,诸如从该选择的“iPhone”
- “开始在统一游戏窗口远程ARKit会话“按钮出现,所以点击
借助此功能,您可以使用Unity Editor在iOS设备上接收相机信息和ARKit信息。
有时视频和识别结果会不断跳过,延迟时间相当长,但我认为这对于需要时间构建的项目会很有用。
原文链接
https://www.jianshu.com/p/251b0893fa86