【发布时间】:2018-01-12 16:33:02
【问题描述】:
在启用世界跟踪的情况下运行 ARKit 会话时,Xcode 控制台会显示关于(我认为:降低)跟踪性能的日志消息,即使
-
AR Session 处于正常跟踪状态,
-
我在光线充足的办公室里使用该设备,有很多“功能”需要检测,并且
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