1

オブジェクトを正しく回転させるのに問題があります。私が必要とするのは、ポイントにグラブされた線 (x 軸に沿って) を作成して、水平、垂直、またはこれら 2 つの動きの組み合わせで移動すると、線の終わりが球面の一部と始まりを囲むようにすることです。ラインは静止したままです。

弾丸物理エンジンを使用しています。このエンジンは、クォータニオンや関数などのオブジェクトを提供して値を設定します。たとえば、オイラー角を使用したり、3 つのクォータニオンを作成したり、フィールド (W、X、Y、Z) を埋めたり、最後に乗算したりして、最終的なクォータニオンを取得します。 .

オイラー角を使用しようとしましたが、EulerYXZ 設定 (ヨーとロールのみ) を使用するとうまく機能します。しかし、ピッチ (線の軸の方向に転がる必要があります) を追加すると、オブジェクトは回転しますが、球体を一周しなくなります。おそらく私の追加のローテーションはいくつかの脱臼を含んでいて、それを理解する方法がわかりません.

まず、ヨーとロールを次のように表すクォータニオンを作成しました。

btQuaternion qx,qy,qz, 
 qx.setW(1);
 qx.setX(0);
 qx.setY(0);
 qx.setZ(0);

 qy.setW( btCos( -x*DEGREE/2.0f )); //x is the example angle value, * DEGREE provides radians
 qy.setX(0);
 qy.setY(btSin( -x*DEGREE/2.0f ));
 qy.setZ(0);

 qz.setW(btCos(( y+inclined )*DEGREE/2.0f ));
 qz.setX(0);
 qz.setY(0);
 qz.setZ( btSin( (y+inclined)*DEGREE/2.0f ));

これで、それらを乗算して最終的な四元数を取得できます。

TransformStick.setRotation(qx*qy*qz);

ラインの終了位置を変更しないために、ラインの軸に沿ってローリングを追加するにはどうすればよいですか?

4

0 に答える 0