译自官方文档
概述
任何AR体验——以及对ARKit功能的定义——的基础要求是创建和跟踪用户所在的现实世界和你所模拟虚拟内容物的一致性。当你的应用将内容物展示在实时的摄影图像中时,用户就感受到了增强现实:一种把你的虚拟内容物当成真实世界一部分的错觉。
World Tracking如何工作
为了建立现实和虚拟空间的一致性,ARKit运用了一种叫视觉惯性计量的技术。该技术把来自iOS设备动作传感器的信息和对设备可见场景的视觉分析数据结合。ARKit识别场景图像中的显著特征点,跟踪视频图像中各个特征点的位置变化,并把这些数据同动作感应数据对比。最终得到设备位置和动作的高进度模型。
World Tracking也会分析和理解场景的内容。使用撞击测试的方法(参见ARHitTestResult类)找到摄影图像中的点所对应真实世界里的表面。如果你启用了session configuration中planeDetection的设置,ARKit会检测摄影图像中的平面并报告它们的位置和大小。你可以使用撞击测试结果或检测平面,在场景中放置或交互虚拟内容物。
最优方法和局限
World Tracking是一门非精确技术。这个过程时常能得到极高的精度,产生逼真的AR体验。但是,它依赖于设备物理环境的各个细节,这些不总是一致的或者难以实时精确测量。为了打造高质量的AR体验,要了解这些警告和提示。
只为可预见的照明条件设计AR体验。World Tracking涉及图像分析,而它要求图像清晰。当摄像头无法捕捉细节时跟踪的质量会下降,例如摄像头被对准空白的墙壁或者场景过于昏暗。
用跟踪质量信息给用户提供反馈。World Tracking将图像分析同设备动作相关联。ARKit更理解设备移动时的场景,即使是细微的移动。过度的动作——太大,太快,后者剧烈震动——会导致图像模糊或者视频帧之间跟踪特征点的距离过大,使跟踪质量下降。ARCamera 类提供了提供了跟踪状态的原因信息,你可以用它开发UI以告知用户如何解决跟踪质量低的情况。
给平面检测提供足够时间来得出清晰的结论,并且在得到你需要的结果后禁用平台检测。平台检测的结果会随时变化——当检测到一个平台,它的位置和范围可能并不精确。如果平台随时保持在场景中,ARKit会提炼它的位置和范围。当场景中存在一个大平面时,在你已经给这个平台放置内容物后,ARKit会持续改变它的锚点位置,范围和变换。