在我的ARKit应用程序中,我有一个“sessionShouldAttemptRelocalization”委托方法返回true,这样会话就可以在中断后恢复。
func sessionShouldAttemptRelocalization(_ session: ARSession) -> Bool {
return true
}
但是,我遇到的问题是,如果用户重置配置一次,进一步的重新定位将失败。
例如:
-
-
-
用户恢复会话并返回原始位置。
(在这里,一切都很顺利,一切都是以中断前的方式展示的。这可以重复多次,每次都有效)
-
-
用户恢复会话,在重新定位成功之前,用户按下“重置AR按钮”
-
用户放置其他AR对象。
-
-
用户继续会话。
(在这里,重新定位永远不会成功。通过按“重置AR按钮”、放置新对象、中断、恢复并尝试重新定位它们,可以重复多次。它永远不会起作用)
func resetTracking() {
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal]
configuration.isLightEstimationEnabled = true
sceneView.session.run(configuration, options: [.resetTracking])
// ... code to remove all nodes...
}