【问题标题】:Technique World tracking performance is being affected by resource constraints技术世界跟踪性能受到资源限制的影响
【发布时间】:2018-01-12 16:33:02
【问题描述】:

在启用世界跟踪的情况下运行 ARKit 会话时,Xcode 控制台会显示关于(我认为:降低)跟踪性能的日志消息,即使

  • AR Session 处于正常跟踪状态,

  • 我在光线充足的办公室里使用该设备,有很多“功能”需要检测,并且

  • The device moves only subtly.

TLDR:我想了解导致它们的原因,它们可能产生的影响,以及如何防止它们,或在它们确实发生时(重新)对它们采取行动-NB。而不是简单地隐藏这些错误。

[Technique] World tracking performance is being affected by resource constraints [0]
[Technique] World tracking performance is being affected by resource constraints [1]

控制台应用程序显示这些来自库 ARKit 并且属于日志记录类别技术。 尽管它们听起来像警告,但控制台应用程序将它们的类型显示为错误

正如预期的那样,在使用世界跟踪时,控制台应用程序确实在错误发生时显示了大量 CoreMotion 日志,但这些行似乎不包含任何错误、警告或其他有助于我诊断问题的信息继续。

当错误出现在日志中时,没有委托回调,但最终(5 秒或 50 秒之间的任何时间)屏幕将因回调会话失败而冻结:

Error Domain=com.apple.arkit.error Code=200 "World tracking failed." UserInfo={NSLocalizedDescription=World tracking failed., NSLocalizedFailureReason=World tracking cannot determine the device's position.}

ARKit 源/documentation 没有提供任何提示,说明哪些“资源限制”可能导致无法确定设备的位置,它只是显示:

世界跟踪遇到致命错误。

我已经尝试(没有成功)通过以下方式阻止警告出现:

  • 重置会话跟踪:仍然错误,

  • 重置会话并删除所有ARAnchors:仍然错误,

  • 禁用平面检测(一旦不再需要):仍然错误。

暂停 AR 会话会使警告静音(有道理,因为这意味着设备在暂停时停止跟踪其移动),但在恢复会话时,警告会返回。

当关闭会话并重新创建它(即关闭 VC 并重新创建)时,虽然没有移动相机(或更改照明),但问题并不总是再次发生。

我的最佳猜测是,闪烁的 TL 灯是跟踪性能警告的原因,因为 Apple 的 explanation how world tracking works

…视觉惯性里程计。此过程将来自 iOS 设备运动感应硬件的信息与设备摄像头可见场景的计算机视觉分析相结合。 ARKit 识别场景图像中的显着特征,跟踪视频帧中这些特征的位置差异,并将该信息与运动感应数据进行比较。

(iPhone 6S,iOS 11 beta 4,没有其他应用在后台运行)


问题:

  • [0][1] 有什么区别?

  • 什么会导致这些错误?

  • ARSession 还没有失败的情况下,它们有什么影响?我假设我们会看到“跳跃”模型,因为帧更新提供的 世界坐标 不准确 - 注意。重置/停止ARAnchor 跟踪后仍然发生错误。

  • 我们会知道 AR 会话是否即将失败,还是会出乎意料? (同样,ARSession 在跟踪状态更改为“受限”后不会立即失败)

  • 有没有办法解决这个问题,例如释放其中一些提到的“资源”——或其他避免遇到这些限制的方法?

【问题讨论】:

  • 通常,只要将设备连接到 Xcode 调试会话就会大大减慢速度,在 wifi 上更是如此。尝试在未连接到 Xcode 的情况下从 Springboard 启动应用程序,看看是否遇到任何屏幕冻结问题。然后,您甚至可以连接到 Xcode,启动 Mac 控制台应用程序,并检查 system.log 以查看是否记录了任何这些错误。

标签: ios core-motion ios11 xcode9-beta arkit


【解决方案1】:

仅允许纵向设备方向为我解决了此错误。

【讨论】:

  • 为我工作...但想知道是什么问题
【解决方案2】:

我认为这是 xcode 9.1 的错误。如果您使用的是 SceneKit:找到为 ARSCNView 或子类设置 .backgroundColor = "your color" 的位置。评论这一行并清理项目。

【讨论】:

    【解决方案3】:

    这个错误发生在我身上,因为我在情节提要上手动添加了一个视图控制器,并在其中添加了一个ARSKView。这会将其作为子视图添加到UIView,默认情况下它是UIViewController 中的子视图。因此,为了支持横向和纵向,我不得不添加自动布局约束,由于某种原因触发了这个错误

    当我查看股票 AR 项目时,ARSKView 是视图控制器的直接子级,它支持所有开箱即用的视图大小和方向,没有自动布局约束。当我这样设置时,错误消失了。

    【讨论】:

      【解决方案4】:

      我认为这是一种包,因为只有当我尝试使用约束时才会出现这个问题。

      如果我禁用,例如,我的代码下方的约束可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        相关资源
        最近更新 更多