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

在启用世界跟踪的情况下运行ARKit会话时,Xcode控制台显示有关(我认为:减less)跟踪性能的日志消息 ,尽pipe

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

  • 我在一个光线充足的办公室里用了很多“function”来检测,

  • 该设备只能巧妙地移动 。

TLDR:我想了解什么可能导致他们,他们有什么影响,以及如何防止他们,或者当他们发生时重新采取行动 不是简单地隐藏错误。

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

控制台应用程序显示这些来自图书馆ARKit并落在日志类别技术 。 尽pipe听起来像是警告 ,但控制台应用程序将其types显示为错误

按照预期,在使用世界追踪时,控制台应用程序会在错误发生时显示大量的CoreMotion日志,但这些行似乎没有包含任何错误,警告或其他信息,这些信息可以帮助我诊断正在发生的事情。

在日志中显示错误的那一刻, 没有委托callback ,但最终(5秒或50秒之间的任何情况)屏幕将冻结,并且callback会话失败:

 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的源文件没有提供什么“资源约束”可能导致无法确定设备的位置的提示 ,它只是写道:

世界追踪遇到了一个致命的错误。

我试过(没有成功),以阻止警告出现:

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

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

  • 禁用飞机检测(一旦不再需要):仍然错误,

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

当closures会议并重新创build(即closuresVC和重新创build),而没有移动相机(或改变照明),问题并不总是重新发生。

我最好的猜测是闪烁的TL灯是跟踪性能警告的原因,因为苹果的解释是如何跟踪世界的 :

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

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


问题:

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

  • 什么会导致这些错误?

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

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

  • 有没有办法解决这个问题,例如解放这些提到的“资源约束” – 甚至阻止它们发生?

只允许纵向设备方向为我解决了这个错误。

在这里输入图像说明

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

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

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

我认为这是一种袋子,因为这个问题发生在我只有在我使用约束的时候才会发生。

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

在这里输入图像说明