跟踪丢失时的故障排除

时间:2019-04-05 07:55:33

标签: unity3d arcore

我通过ARCore的HelloAR示例创建了一个用于播放动画的对象。然后他用手遮盖了Camera,并造成跟踪损失。 如果再次照亮该空间,则创建的对象将返回,但动画将从头开始。

  1. 如果在发生跟踪丢失后再次识别出空间,则有时会返回该对象,但不会返回。有区别的方法吗?

  2. 如果在出现跟踪丢失后再次识别出空间,为什么当对象返回时动画又重新开始?您要删除并重新创建对象吗?

1 个答案:

答案 0 :(得分:1)

ARCore使用一种称为Visual Inertial Odometry的技术。它是一种结合了计算机视觉和传感器融合的混合技术。

所以VIO所做的是将从特征点(拐角,斑点,边缘等)提取的数据与从移动设备IMU单元获取的数据相结合。知道设备的位置在ARCore中至关重要。因为您是根据此信息(使用设备姿态进行三角测量)来估算每个可跟踪位置的。

另一方面,当您在房间中移动时,ARCore会构建一个稀疏的环境地图。因此,这些提取的特征点会根据置信度存储在内存中,并在以后用于定位设备。

最后,当失去跟踪时会发生什么情况,例如无法提取特征点,例如由于墙墙较长。当您无法提取特征点时,您无法本地化设备。因此,设备不知道它在上面提到的此稀疏图中的位置。有时您会恢复,是因为您返回了已扫描并保留在此稀疏地图中的位置。

现在提出您的问题:

  1. 如果锚定对象。您的对象将返回,但可能会发生漂移,因为ARCore会在此过程中积累错误,尤其是在设备跟踪丢失的情况下移动时。因此很可能它们会返回,但由于漂移,它们不再处于相同的物理位置。
  2. 如同动画重新启动一样,因为无法跟踪那些锚点,所以它们已停用。另外,由于锚定了对象,它们是锚定的子对象,因此也停用了对象。这就是动画重新启动的原因。

您可以使用即时预览来测试这两个问题,并查看失去跟踪时锚点发生了什么。祝你好运!