2017-08-04 21 views
1

私は迅速で、ARKitの例でカメラの位置を取得しようとしていますが、それは私にnilを与えています。ARKitのカメラ位置のセッションが更新されていません

私はこのソリューションをthis questionに使用し、代理人をselfに設定しましたが、それでも私にカメラの変換が与えられていません。

私は間違っていますか?

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

どちらですか?あなたの質問に記載されている変換のための 'nil'を取得していますか、' session:didUpdate'関数はあなたのコードに記述されているように全く呼び出されていませんか? –

+0

混乱して申し訳ありません。 'session:didUpdate'はまったく呼び出されていません。 'viewDidLoad'でtransformプロパティにアクセスしようとしましたが、' nil'を取得してカメラが初期化されていない可能性があります。タイトルが更新されました。 – dmr07

答えて

4

簡単な修正、最初のクラス定義:次に

class ViewController: UIViewController, ARSCNViewDelegate, ARSessionDelegate 

あなたがそうのようなデリゲートとして自分自身を設定する必要があります:

sceneView.session.delegate = self 

そして、すべてがうまく動作するだろう右。

+0

これは受け入れられる回答である必要があります。それは完全に動作します。ありがとう。 – nanospeck

関連する問題