ARKit 的原理与最佳实践
构建杰出 AR 体验的概念、功能和最佳实践。
简介
任何 AR 体验的基本要求——也是 ARKit 的定义特征——是创建和跟踪用户所在的现实世界空间与可以建模可视化内容的虚拟空间之间对应关系的能力。当 App 将此内容与实时摄像头画面显示在一起时,用户会体验到增强现实:虚拟内容是真实世界中一部分的错觉。
世界追踪的工作原理
为了在真实和虚拟空间之间创建对应关系,ARKit 使用一种叫做视觉惯性测距(visual-inertial odometry)的技术。这个过程将来自 iOS 设备运动传感器的信息和设备相机可见场景的计算机视觉分析相结合。ARKit 识别场景图像中的显著特征,从视频的每一帧中跟踪这些特征位置的差异,并将该信息与运动感测数据进行比较。结果是设备的位置和运动的高精度模型。
世界追踪还分析和理解场景中的内容。使用 hit-testing 方法(见 ARHitTestResult 类)来寻找与相机画面中的点对应的真实世界表面。如果在 session 配置中启用 planeDetection 设置,ARKit 会检测相机画面中的平面,并报告位置和尺寸。可以使用 hit-test 结果或检测到的平面来放置内容,或与场景中的虚拟内容进行交互。
最佳实践与限制
世界追踪是一项不精确的科学。这个过程通常会产生令人震惊的准确性,引领现实的 AR 体验。然而,它依赖于设备的物理环境的细节,这些细节并不总是一致的,或者难以实时测量而没有一定程度的错误。要创建高品质的 AR 体验,请注意这些注意事项和提示。
为可预见的照明条件设计 AR 体验。世界追踪涉及图像分析,需要清晰的图像。如果相机无法看到细节,例如当相机指向大白墙或场景太暗时,追踪质量会降低。
使用追踪质量信息来提供用户反馈。世界追踪与图像分析和设备运动有关。如果设备在移动,ARKit 可以更好地理解场景,哪怕设备只是微微移动。过多的动作——太远、太快或太剧烈的抖动——会导致图像模糊,或者所追踪的视频帧之间距离太远,从而降低视频质量。ARCamera 类提供追踪状态的原因信息,可以借助它开发一个用户界面,告诉用户如何解决低质量的追踪状况。
给平面检测充分的时间以产生清晰的结果,并在获得所需结果后禁用平面检测。平面检测结果随时间变化——首次检测到平面时,其位置和范围可能不准确。随着时间的推移,平面依然保持在场景中,ARKit 会进一步提升对于位置和范围的估计。如果场景中有一个大的平面,ARKit 可能会在你已经在上面放置内容后继续改变平面锚点的位置、范围和变换