发现构建一个很棒的AR体验的支撑概念、特性和最佳实践

概述

一个AR体验的基本需求,也是ARKit的关键特性,就是创建并追踪 用户所处的真实世界空间 和 你可以建模虚拟内容的虚拟环境 之间的一致性。当你的app将虚拟内容和摄像头实时图像一起展示时,用户便体验到了增强过的现实: 即你的虚拟内容是真实世界的一部分的假象。

在所有的AR体验当中,ARKit所使用的世界和摄像头坐标系都沿用右手公约: Y轴指向上方,Z轴(相关时)指向观察者,X轴指向观察者的右侧。

通过会话的配置项,可以改变相对于现实世界的坐标系的原点和方向(详见worldAlignment)。AR会话中的任意一个锚点定义了他自己的坐标系,同样沿用右手,Z轴指向观察者公约;举例来说,ARFaceAnchor 类定义了一个用来定位面部特性的坐标系。

世界追踪如何工作

为了创建真实和虚拟空间的一致性,ARKit使用了一个叫做视觉惯性测距的技术。这个过程结合了 iOS设备的运动传感硬件 和 设备摄像头可见场景的计算机视觉分析 的信息。ARKit识别场景图像中的显著特征,在视频帧之间追踪这些特征位置的不同点,并将这些信息与运动传感数据相比较。最终将会得到一个设备的位置和运动信息的高准确度模型。

世界追踪同时会分析和理解场景的内容。使用撞击测试方法(详见ARHitTestResult 类)来找到与摄像头图像中的点相对应的真实世界的表面。如果你在会话的配置项中启用了planeDetection ,ARKit将会在摄像头图像中检测到平坦的表面并上报这些表面的位置和大小。你可以使用撞击测试结果或者检测到的平面来在你的场景中放置或者与你的虚拟内容交互。

最佳实践和局限

世界追踪是一个不精确的科学。这个过程大多会产令人印象深刻的精准度,从而带来真实的AR体验。然而它依赖于设备的物理环境的细节,这些细节又不总是一致的或者难以在没有一定程度的错误前提下进行实时测量。因此为了构建一个高质量的AR体验,需要知晓这些注意事项和提示。

针对可预知的光照条件设计AR体验。世界追踪相关的图像分析需要一个清晰的图像。

使用追踪质量信息来提供用户反馈。世界追踪将图像分析与设备移动相结合。即使设备移动哪怕是很小的移动,ARKit也可以很好的理解场景。大幅度移动--太远、太快或者晃动过于猛烈--都会导致一个对于视频帧之间的追踪特性 模糊的图像或者太远的距离,从而降低追踪质量。ARCamera 类提供了追踪状态原因信息,你可以用它来开发UI从而告知用户如何解决低质量的追踪环境。

允许平面检测的耗时来生成清晰的结果,当你得到你需要的结果时停止即可平面检测。 平面检测结果的生成需要一段时间--当一个平面第一次被检测时,它的位置和程度可能是不准确的。随着平面持续在场景中一段时间后,ARKit将会优化它对于位置和程度的评估。当一个大的平整表面在场景中时,ARKit可能会在你已经使用平面来放置内容后继续变化平面锚点的位置、程度和变形。