Ich versuche, die ARWorldTracking Sitzung nach einer Sitzungsunterbrechung nach Norden zu orientieren. Ich bin ein paar Mal über die documentation gegangen, aber ich finde es verwirrend.ARKit: Wie Welt-Orientierung nach der Unterbrechung zurückgesetzt
Aktuelles Verhalten:
Wenn ich das Gerät zu sperren und die App wieder öffnen, die sessionWasInterrupted
Auslösung, die SCNNodes aller Verschiebung gegen den Uhrzeigersinn auf dem Kompass von ~ 90 Grad oder so.
Wenn Sie rufen den Lauf (_: Optionen :) Methode mit einer Konfiguration eines anderen Typs als die aktuelle Konfiguration der Session, die Sitzung immer zurücksetzt Tracking
ich interpretierte, dass mit den Worten, Wenn ich einen neuen Satz von Konfigurationen erzeuge, der sich von dem viewWillAppear
unterscheidet, wird die Sitzung "zurückgesetzt". Ich verstehe nicht, was tatsächlich passiert, aber die Ausrichtung nach der Unterbrechung ist aus. (Und removeExistingAnchors
tut nichts)
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])
}
Gewünschtes Verhalten:
Wenn die App eine Sitzung Unterbrechung erkennt, würde Ich mag es neu zu orientieren sich zurück zu wahren Norden.