代码之家  ›  专栏  ›  技术社区  ›  Pochi

ARKit重新定位在重置跟踪之后不起作用

  •  0
  • Pochi  · 技术社区  · 5 年前

    在我的ARKit应用程序中,我有一个“sessionShouldAttemptRelocalization”委托方法返回true,这样会话就可以在中断后恢复。

    func sessionShouldAttemptRelocalization(_ session: ARSession) -> Bool {
        return true
    }
    

    但是,我遇到的问题是,如果用户重置配置一次,进一步的重新定位将失败。

    例如:

    1. 用户恢复会话并返回原始位置。 (在这里,一切都很顺利,一切都是以中断前的方式展示的。这可以重复多次,每次都有效)
    2. 用户恢复会话,在重新定位成功之前,用户按下“重置AR按钮”
    3. 用户放置其他AR对象。
    4. 用户继续会话。 (在这里,重新定位永远不会成功。通过按“重置AR按钮”、放置新对象、中断、恢复并尝试重新定位它们,可以重复多次。它永远不会起作用)

    func resetTracking() {
        let configuration = ARWorldTrackingConfiguration()
        configuration.planeDetection = [.horizontal]
        configuration.isLightEstimationEnabled = true
        sceneView.session.run(configuration, options: [.resetTracking])
    
        // ... code to remove all nodes...
    }
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Nikunj Acharya    5 年前

    func resetTracking() {
        self.sceneView.session = ARSession()
        self.session = self.sceneView.session
        self.session.delegate = self
        self.session.run(self.configuration)
    }