Próbuję przekonać sesję ARWorldTracking do ponownego zorientowania się na północ po przerwaniu sesji. Kilka razy przeszedłem przez documentation, ale uważam, że jest to mylące.ARKit: Jak zresetować orientację światową po przerwie
Aktualny Zachowanie:
Kiedy zablokować urządzenie i ponownie otworzyć aplikację, wywołując sessionWasInterrupted
, że SCNNodes wszystkie przesunięcie w lewo na kompasie przez ~ 90 stopni lub więcej.
Po wywołaniu run (_: opcje :) metodę z konfiguracji innego typu niż aktualnej konfiguracji sesji użytkownika, sesja zawsze resetuje śledzenia
I interpretować, że mówiąc, że kiedy generuję nowy zestaw konfiguracji, który różni się od viewWillAppear
, sesja zostanie "zresetowana". Nie dostaję tego, co się dzieje, ale orientacja po przerwaniu jest wyłączona. (I removeExistingAnchors
nic nie robi)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARWorldTrackingSessionConfiguration()
configuration.planeDetection = .horizontal
configuration.worldAlignment = .gravityAndHeading
sceneView.session.run(configuration)
}
func sessionWasInterrupted(_ session: ARSession) {
let configuration = ARWorldTrackingSessionConfiguration()
configuration.planeDetection = .horizontal
configuration.worldAlignment = .gravityAndHeading
self.sceneView.session.run(configuration, options: [ARSession.RunOptions.removeExistingAnchors, ARSession.RunOptions.resetTracking])
}
Pożądany Zachowanie:
Gdy aplikacja wykryje przerwanie sesji, chciałbym go ponownie nastawić się z powrotem do prawdziwej północy.