1

クォータニオンを使用しているオブジェクトがあります。このクォータニオンは、ユーザーがキーを押すと更新され、オブジェクトが内部軸を回転できるようになります。回転は素晴らしく機能しています。デフォルトの状態 (ユーザーが回転を調整する前) の場合、私のクォータニオンは w:1、x:0、y:0、z:0 を読み取ります

このオブジェクトが内部の z 軸 (THREE.Vector3(0,0,-1)) を介して常に前方に移動するようにします。quat を使用して、z 軸がどこにあるかを知り、前方に移動するにはどうすればよいですか?

たとえば、クォータニオンが w:0.7、x:0.7、y:0、z:0 を読み取る場合、オブジェクトは回転して z 軸が上向きになります。内部軸を介してオブジェクトを移動する方法はありますか?

jsfiddle の例を次に示します: http://bitly.com/RXPy5w - 正方形が常に z 軸に対して前方に移動するようにします

どんな助けでも大歓迎です。

4

2 に答える 2

2

レンダリング ループに次の行を追加するだけです。

airplane.translateZ( 1 );

更新されたフィドル: http://jsfiddle.net/Lc8gH/21/ お楽しみください!

ちなみに、「四元数を変換」することはできません。このコードが何をしているかを理解するまで勉強を続けてください。

于 2012-11-08T04:42:24.543 に答える
2

ここでのクォータニオンは、3 空間での回転を表します。最初に、回転元の初期方向を指定する必要があります。それを開始方向の単位ベクトルにします。

ここで、現在の向きの方向に移動するために、現在のクォータニオンによって記述された回転を介して初期方向ベクトルを回転させることができます。これで、正しい方向を指す単位ベクトルが得られました。

最後に、もちろん、その単位ベクトルをスケーリングして、単位以外の距離で動きを表現し、それを現在の位置に追加すれば完了です。

于 2012-11-08T01:28:33.730 に答える