技术世界跟踪性能受资源限制的影响

时间:2017-08-04 16:44:37

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

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

  • AR会话处于正常跟踪状态,

  • 我在光线充足的办公室里使用这个设备,有很多功能和#34;检测,和

  • 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 ,并且属于日志记录类别 Technique 。 虽然它们听起来像是警告,但控制台应用会将其类型显示为错误

正如预期的那样,在使用世界跟踪时,控制台应用确实会在错误发生时显示大量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并未提供有关资源限制的任何提示。可能导致无法确定设备的位置,它只是读取:

  

世界追踪遇到致命错误。

我已尝试(未成功)阻止警告出现:

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

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

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

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

关闭会话并重新创建会话(即关闭VC并重新创建)时,如果没有移动相机(或更改了灯光),则问题不会再次发生。

我最好的猜测是, 闪烁的TL-lights 是跟踪效果警告的原因,给出了Apple的explanation how world tracking works

  

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

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

问题:

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

  • 可能导致这些错误的原因是什么?

  • ARSession还没有失败,对他们有什么影响?我假设我们会看到"跳跃"由帧更新提供的世界坐标的模型不准确 - NB。重置/停止后ARAnchor跟踪仍然发生的错误。

  • 我们是否知道AR会话即将失败,还是意外? (同样,ARSession在跟踪状态更改为"限制")后立即失败

  • 有没有办法解决这个问题,例如:释放这些提到的"资源限制" - 甚至可以防止它们发生?

4 个答案:

答案 0 :(得分:4)

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

enter image description here

答案 1 :(得分:3)

我认为这是xcode 9.1 bug。如果您使用SceneKit:找到您为ARSCNView或子类设置.backgroundColor =“您的颜色”的位置。评论此行和清理项目。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

enter image description here