2016-12-12 12 views
1

キネマティックベースの世界でめちゃめちゃにされては

こんにちは、私はUnity3dで謙虚なARベースのゲームを開発してきた運動キネマティックベースの世界は、マーカーの動き

にめちゃめちゃされています。この時点まで、私はVuforiaを使って自分のシーンを(マルチ)トラッカーに配置していました。しかし、私はKudanでテストを行っており、トラッカーを使用しているときのトラッキングパフォーマンスにはとても満足しています。


http://i.imgur.com/nTHs6cM.png


私のエンジンはraycastsなく "UnityEngine.Physics"(ほぼすべてがキネマティックである)によって衝突に基づいています。宇宙飛行士のエンジンを使って3D環境をトラッカーに配備すると、問題が発生しました。マーカーが動かされた場合、要素はそれと共に移動しますが、軸はマーカーで変化するように見えますが、私の物理は私の古い軸の向きに反応するようです。私のキャラクターは常にワールドY軸上に立っています(トラッカー内のローカルではありません)。もう一つの問題は、私のプレーヤーの3Dアセットが、「立っている」状態と「落ちている」状態を切り換えて、最終的には床を切り落としてしまうことです。これはおそらくカメラ検出のジッタによるものです。気になるソリューションの


http://i.imgur.com/ROn4uEz.png

つのローカル座標系を使用することですが、私はVuforiaを使用していたとき、私はいずれかを実行する必要はありませんでしたので、私は別の解決策があることを願っていますさらに訂正。

リンクやフィードバックは高く評価されます。

+0

九段では、カメラは常に原点(0,0,0)にとどまり、追跡されたオブジェクトはその周囲を移動します。 Kudanを使い続けたい場合は、ローカル座標系に切り替える必要があるようです。 – DisturbedNeo

+0

ありがとうございます。私はちょうどそれを疑っていた。 – Keny

答えて

1

Transform.InverseTransformPointとtransform.InverseTransformDirectionをQuaternion.LookDirectionと組み合わせて使用​​すると、kudanカメラのMarkerTransformDriverオブジェクトに対する位置と回転を取得できます。これにより、ワールド空間にカメラを配置し、ユニティ3D世界起源で静止画を増強したいコンテンツを保持することができます。

cameraPos = markerTransform.InverseTransformPoint(kudanCamera.position); 
cameraRot = Quaternion.LookRotation(markerTransform.InverseTransformDirection (kudanCamera.transform.forward)); 
+0

これは私がARToolKitに必要なものに近いものになってしまった。しかし、それはまさに正しいことではありません。私は軸が回転のために逆転されているかもしれないと思う。私はここで別の質問を作成しました:https://stackoverflow.com/questions/45236934/artoolkit-dynamic-camera-with-single-static-marker –

関連する問題