2017-12-22 19 views
1

現時点では、自分のコードが3Dモデルに読み込まれ、そのモデルを使用してノードが作成され、そのノードがシーンに表示されます。ノードのスケール/回転(オイラー角)を設定するとうまく動作します。しかし、私はノードの位置を世界起源に相対的に設定しようとしています。ノードを平面に取り付けることは望ましくありません。ARKit - 世界起点を基準に世界にノードを配置

node.positionnode.worldPositionを無効に設定しようとしました。ノードの位置は変化するが、カメラが動くとき、ノードは静的ではなく、カメラと共に動く。私はARKitを初めて使うので、何か愚かなことをやっているかもしれませんが、私はそれが何であるかを理解できないので、どんな助けでも大歓迎です。

編集: 私がSCNVector3(0、3、0)と言う座標を設定すると、それは問題ありませんが、特定の数のメートルを超えると失敗するようです。これが期待されている

答えて

0

まず、これらの一般的な問題によって世界トラッキングが不十分になる可能性があります。

  1. 不十分な結束。

を失敗する追跡原因ぼやけた画像を引き起こす

  • 高速運動を追跡するための特徴点の数が少ないが利用できるの原因テクスチャの

  • 不足を追跡するための特徴点の数が少ないが、利用可能の原因

    しかし、あなたのケースでは(デバッグするのがもう少し難しい)私が信じているのは、ロードされたモデルを検出するシーン内の水平面を横切る。すなわち

    は、負のYを用いSCNNodeを配置している場合があり、水平下ノードを配置した座標平面を検出し、cameraView

    を変更するように周りにドリフトするモデルを引き起こすはY位置を設定してみてください0.1メートルのような0または小さな正の値のいずれかのノード

    node.position = SCNVector3(0, 0, -1) // SceneKit/AR coordinates are in meters 
    
    sceneView.scene.rootNode.addChildNode(node) 
    

    Z = -1あなたcameraViewの前にSCNNode 1メートル置きます。

    注:テスト用に使用している遊び場を使用してこの問題を確認しました。

  • +0

    返信いただきありがとうございます。悲しいことに、ARTrackingStateのチェックを使用しているので、それが問題ではないと私は考えていません。それは正常であると言っています。また、負のY座標を使用してノードを配置することはありません。 私がSCNVector3(0,3,0)と言う座標を設定すると、それは問題ありませんが、特定の数のメートルを超えると失敗するようです。これは期待されていますか? ああ、おめでとう! – Henry

    +0

    こんにちはヘンリー、メリークリスマス...私はシドニーオーストラリアにいますので、私たちはそれが象徴的でした!私は追跡が本当に一般的に良いと思った。私はヘリコプターシミュレータアプリを構築しました。このアプリは、距離が1km、高さが1kmのヘリコプターを2kmほど飛んで、ノードが1ピクセルほど小さくなると、画面から消えます。これらのテストでは、トラッキングが本当に印象的であることがわかりました。 – Ash

    +0

    ノード(ヘリコプター)は画面から消える(1ピクセルより小さい)さえあり、ノードが1ピクセルよりも大きくなるように戻る前に再び表示されます。 – Ash