directX の D3DXQuaternionRotationMatrix() 関数を使用して、マトリックスから回転クォータニオンを取得しようとしています。マトリックスは Blender (オープンソースの 3D グラフィックス環境 ) によって生成され、DirectX で使用するためにメッシュ オブジェクトの向きを変更するために使用されます。問題は、上記の関数がクォータニオンの "w" 値のみを返すことです。関数が続く行列は次のとおりです。
D3DXMATRIX mA;
._11 = 1;
._12 = 0;
._13 = 0;
._14 = 0;
._21 = 0;
._22 = 0;
._23 = 1;
._24 = 0;
._31 = 0;
._32 = 1;
._33 = 0;
._34 = 0;
._41 = 0;
._42 = 0;
._43 = 0;
._44 = 1;
D3DXQUATERNION qA;
D3DXQuaternionRotationMatrix( &qA, &mA );
D3DXQuaternionConjugate( &qA, &qA );
result:
qA.x =
qA.y =
qA.z = 0;
qA.w = 0.707
この四元数は回転を表していません...しかし、行列には回転があります...この回転は何ですか? 関数が正確な結果を提供しないのはなぜですか?