首页 文章

ARKit将WorldTrackingConfiguration设置为gravityAndHeading会产生错误

提问于
浏览
0

我想在我的 ARWorldTrackingConfiguration.worldAlignment 配置上使用 .gravityAndHeading . 但是,我一直收到这个错误:

设备方向错误:错误域= CMErrorDomain代码= 102“(空)”2018-03-01 20:08:25.218445 0000应用程序[759:84092] [会话]会话(0x10ba12ce0):确实失败并出现错误:错误域= com.apple.arkit.error Code = 102“所需传感器失败 . ” UserInfo = {NSLocalizedFailureReason =传感器未能提供所需的输入 . ,NSUnderlyingError = 0x1c0850740 ,NSLocalizedRecoverySuggestion =确保应用程序具有所需的隐私设置 . ,NSLocalizedDescription =必需传感器失败 . }会话失败 . 更改worldAlignment属性 .

文档说确保Info.plist包含相关的隐私要求 - 我添加了相机,位置,动作等但无济于事 .

有没有经历过相同/解决方案的人?

我正在使用这个特定的设置,因为我需要将节点映射到物理世界,而不仅仅是用户的相对位置 .

2 回答

  • 0

    您是否已将这些密钥添加到 info.plist

    enter image description here

    基于其他研究,例如What Does Error Code 102 Mean以下情况似乎适用于您的情况:

    CMErrorTrueNorthNotAvailable

    从上面的帖子中,一个 StackOverFlow 用户似乎通过更改其设备上的以下设置解决了该问题:

    设置>隐私>位置服务>系统服务>指南针校准:

    enter image description here

  • 2

    除了上面@JoshRobbins的答案之外,我还有一个新的iPhone,并注意到它默认关闭了,所以应用程序崩溃了 . 最终用户不知道他必须进入设置并打开罗盘校准 . 以下绕过:

    let configuration = ARWorldTrackingConfiguration()
    
    func session(_ session: ARSession, didFailWithError error: Error) {
    
        switch error.code {
        case 102:
            configuration.worldAlignment = .gravity
            restartSession()
        default:
            configuration.worldAlignment = .gravityAndHeading
            restartSession()
        }
    }
    
    @objc func restartSession() {
    
        self.sceneView.session.pause()
    
        self.sceneView.session.run(configuration, options: [
            .resetTracking,
            .removeExistingAnchors])
    }
    

相关问题