【问题标题】:Why does an ARCore anchor lose tracking?为什么 ARCore 锚点会丢失跟踪?
【发布时间】:2021-08-20 15:18:43
【问题描述】:

我注意到 Google 没有提供一种方法让我们知道锚点丢失跟踪的原因。这很奇怪,因为我们可以通过调用Camera.getTrackingFailureReason() 很容易地得到相机跟踪失败的原因,但是锚点没有这个功能。

在我的实验中,我注意到你经常失去对锚点的跟踪的一种常见情况是,当你离锚点太远并进入一个视觉上不同的环境,与你放置锚点的环境相比,这个环境有很大的不同.

但是,我仍然想知道是否有任何特殊的函数调用可以准确地告诉我们锚点丢失跟踪的原因。到目前为止,我能在 Google 文档中找到的唯一内容是 this

【问题讨论】:

    标签: android-studio augmented-reality arcore sceneform


    【解决方案1】:

    世界跟踪状态

    ARCore TrackingFailureReason 枚举有六种情况。我认为这六个案例对于 ARCore 开发者来说是非常详尽和详尽的,因为它们引入了常见的跟踪状态(例如,在 ARKit 中,有几乎相同的状态集)。

    • BAD_STATE | 由于内部状态不佳而导致跟踪丢失
    • CAMERA_UNAVAILABLE | 由于摄像头正在被另一个应用使用而暂停跟踪
    • EXCESSIVE_MOTION | 由于过度运动而丢失跟踪
    • INSUFFICIENT_FEATURES | 由于视觉特征数量少而导致跟踪丢失
    • INSUFFICIENT_LIGHT | 由于光照条件不佳导致跟踪丢失
    • | 表示会话正在正常初始化


    关于被跟踪锚点的状态

    与上述相比,跟踪锚点的场景更多。这是因为任何单个锚点都可能被遮挡、遮挡、漂移、视觉难以察觉等。请考虑两件重要的事情:首先,在 AR 中,跟踪误差会随着时间的推移而迅速累积,其次,不同的 Android 设备具有经过校准的传感器不相同的条件。因此,我认为 ARCore 工程师很难描述由于场景中每个锚点的跟踪丢失而可能出现的所有错误变体。

    此外,我们必须区分两种类型的跟踪:camera tracking(也称为世界跟踪)和object tracking。第二种类型,即object tracking,是关于跟踪另外符合 Trackable 接口的锚点(对于 Planes、AugmentedFaces、DepthPoints、AugmentedImages 至关重要)。


    为什么锚会丢失跟踪?

    ARCore 中没有针对跟踪不良的锚点的调试工具。在 ARCore 中,您的应用可能无法跟踪任何特定的锚点:

    • 设备距离检测到的平面及其锚点太远(>100 米)
    • AR 体验中的环境理解更新
    • 照明条件发生了巨大变化
    • 由于表面不可靠,锚正在漂移
    • 单个锚点被完全或部分遮挡
    • 您在跟踪时累积了太多跟踪错误
    • 锚位于金属或反射表面上
    • 表面纹理具有重复图案
    • 不使用 ToF 时,表面纹理在一定距离内难以辨认
    • 不使用 ToF 时,表面纹理几乎不亮
    • 不使用 ToF 时,视觉特征数量不足
    • 不使用 ToF 时,锚点放置在没有纹理的表面上
    • 使用 ToF 时,场景重建的最大距离为 8 米
    • ARCore 的未知内部错误
    • 等等……


    关于锚点的更多信息

    更多信息,请阅读this official article。在Reuse anchors when possible部分你可以找到以下句子:

    请记住,如果场景中的每个对象都有自己的锚点,则这些锚点将根据 ARCore 对每一帧中的世界空间的估计相互独立地调整对象姿势。 单独锚定的对象可以相对于彼此移动或旋转,从而打破 AR 场景中虚拟对象应该相对于彼此保持原位的错觉

    【讨论】:

    • 对于您所说的锚点跟踪原因,请提供证据来支持您的论点。 TrackingFailureReason 用于相机而不是锚(正如我在问题中明确提到的)。顺便说一句,很多时候即使我远离锚点并进入不同的环境,我也不会失去对锚点的跟踪。
    • 正如我之前所说,如果我们正在跟踪锚点,很难提供证据(我们没有锚点的调试工具)。向 ARCore 团队成员提出您的问题(您可以在 GitHub 上这样做),我相信他们会给您与我类似的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多