ARKit:跟踪,场景理解,渲染

从ARKit的图片上,可以发现有三层的结构,分别是跟踪,场景理解,渲染

1.追踪

关于世界跟踪 ,这边想要提一下SLAM (同时定位和映射),也就是当iphone来到一个陌生环境时,能同步地,构造出与周遭环境,时间与空间的关系,可以从这篇文章知道更多。

ARKit即是利用VIO (Visual Inertial Odometry)的技术,来构建出虚拟物体与真实环境关系。

AR技术上,相较于google的Tango手机,iphone不需要额外的设备(广角镜头和红外线感测器),关于更多VIO技术,就要再跟google大神请教。

2.场景不足

World Tracking分析并理解,设备当前所处的空间周遭之讯息。

使用hit-Test的方法(见ARHitTestResult类),可以想像成成点击画面中的一个点,iphone发出射线,返回关于那个点在真实环境的资讯,找到相机画面的点,相对于真实世界的位置。

如果在ARWorldTrackingSessionConfiguration启用planeDetection中 ,ARKit会检测相机画面中的水平面,得到其位置与大小,我们就能把虚拟物体放在真实世界的平面上。

目前只有水平面的侦测 ,根据stackflow上的答案,有人在WWDC与Apple工程师对谈中发现, 垂直面的侦测是未来会增加功能。

Light Estimation (环境光预测),利用相机的感测,调整虚拟物体画面,整合虚拟物体在相机画面上,与真实世界划分,不会突出突出,不自然。

3.渲染

与官方的SDK SceneKit,SpiritKit,Metal整合,呈现3D或2D虚拟画面,还有与外部的Unity,虚幻引擎合作。

最佳做法和局限性

  1. 不清晰的场景,会降低AR体验,像是相机对着一面空白的墙,或者太暗的场景。

2.移动得太快或距离太远,也会降低AR体验。

3. planeDetection需要一点时间,一开始可能会检测到的不正确,一但发现完理想的水平面后,最好将planeDetection关掉,避免已设置好的虚拟物体又被更动。

关于了解AR,可以详见Apple提供的官方文件。