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

问题描述 投票:0回答:2

我想在我的.gravityAndHeading配置上使用ARWorldTrackingConfiguration.worldAlignment。但是,我不断收到此错误:

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

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

有没有经历过同样的人/制定出解决方案?

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

swift arkit
2个回答
2
投票

你有没有把这些钥匙添加到你的info.plist

enter image description here

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

CMErrorTrueNorthNotAvailable

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

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

enter image description here


1
投票

除了@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])
}
© www.soinside.com 2019 - 2024. All rights reserved.