8

3D キャラクターの上腕の回転を表すクォータニオンがあります。そのキャラクターの腕の新しい位置を表すはずの線もあります。その線の位置は、2 つの 3D 点によって与えられます。

これは私が持っている唯一のデータであり、2 つの方向ベクトルを取り、腕を新しい位置に移動するために必要な回転を表すクォータニオンを返す 3D パッケージ (デジタル ルーン) のメソッドを呼び出そうとしています。

問題は、軸が混同されていて、通常は動作していないかのように、奇妙な動作が見られることです。また、3D 男の腕を表す Quaternion オブジェクト (3D パッケージからのもの) には、W、X、Y、および Z があります。X、Y、および Z は方向ベクトルを表しますか? それが関数を適切に呼び出す必要があるからです。私はこれを線の端点から計算した方向ベクトルと一緒に使用していますが、私が言ったように、それはおかしいように見えます.

X、Y、Z が方向ベクトルでない場合、方向ベクトルを計算できるようにクォータニオンから 2 つのエンドポイントに変換する方法を教えてください。

4

1 に答える 1

8

コンテキスト (およびほとんどのコンピュータ グラフィックス コンテキスト) では、回転を表すためにクォータニオンが使用されます。X、Y、Z を直接使用したくありません。代わりに (上記のリンク先のチュートリアルで説明されているように)、これを使用して回転行列を生成します。次に、他の3D 変換マトリックスと同様に回転マトリックスを使用する必要があります。元のクォータニオンで記述されているように、原点を中心にポイントを回転させます。

クォータニオンの X、Y、Z は回転の軸を表しますが、クォータニオンは回転の大きさもエンコードしますが、特に単純な方法ではありません。パッケージに四元数を返す関数が含まれている場合は、その四元数を回転行列に変換する関数も含める必要があります。可能であれば、パッケージ化された関数を使用する必要があります (それらを生成したメソッドと同じ規則を使用する必要があるため)。

クォータニオンと変換行列を読んだ後、問題の関数のドキュメントを注意深く読み直して、正しい種類の引数を提供していることを確認し、正しい方法で結果を使用していることを確認する必要があります (数学に慣れていても、それを台無しにするのは簡単です...)。

于 2011-12-24T21:59:48.647 に答える