2017-08-04 1 views
1

Je suis nouveau pour swift, et j'essaie d'obtenir l'emplacement de la caméra dans l'exemple ARKit, mais il me donne nil.Ne pas obtenir la session didUpdate pour la position de la caméra dans ARKit

J'ai utilisé la solution pour this question et définir le délégué à self, mais il ne me donne toujours pas la transformation de la caméra.

Qu'est-ce que je fais mal?

class ViewController: UIViewController, ARSCNViewDelegate { 

@IBOutlet var sceneView: ARSCNView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    sceneView.delegate = self 
} 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    let configuration = ARWorldTrackingSessionConfiguration() 
    sceneView.session.run(configuration) 
} 

func session(_ session: ARSession, didUpdate frame: ARFrame) { 
    print("Hello") // <-- does not run here 
    let currentTransform = frame.camera.transform 
} 
} 
+0

De qui s'agit-il? Avez-vous 'nil' pour la transformation comme indiqué dans votre question, ou la fonction' session: didUpdate' n'est-elle pas appelée du tout, comme indiqué dans votre code? –

+0

Désolé pour la confusion. 'session: didUpdate' n'est pas appelé du tout. J'ai essayé d'accéder à la propriété transform dans 'viewDidLoad' et j'ai obtenu' nil' alors je suppose que la caméra n'a probablement pas été initialisée. Le titre a été mis à jour. – dmr07

Répondre

4

fix simple, d'abord votre définition de classe:

class ViewController: UIViewController, ARSCNViewDelegate, ARSessionDelegate 

Ensuite, vous devez vous définir comme le délégué comme ceci:

sceneView.session.delegate = self 

Et puis tout va travailler juste droite.

+0

Ceci devrait être la réponse acceptée. Cela fonctionne parfaitement. Merci. – nanospeck