2

Three JS のクォータニオン回転は、ジンバル ロックから解放されていないようです。

再現する手順:

1) Three JS Editorを開きます。2) Cylinder を追加し、z の値を 1.57 に設定します (回転中の中央のテキスト ボックス)。3) ここで、y または x ラジアンで値を変更してみてください (左または右のテキスト ボックスを回転させます)。

x と y の両方が同じ回転を実行していることがわかります。それを回避する方法はありますか?

AFAIK Three JS はデフォルトでクォータニオンを使用し、ジンバル ロックは eular 角度を使用している場合にのみ発生します。

ありがとう!

4

2 に答える 2

0

コード内: 回転プロパティの代わりに 3 つの js でオブジェクトのクォータニオン プロパティを変更してみてください。このように、クォータニオンを使用することで、ジンバル ロックを確実に回避できます。

エディターでは、オイラー角でのみ編集できます。また、多くのオイラー角表現が同じ四元数になる可能性があるため、回転はあいまいです。

于 2014-06-24T11:56:42.563 に答える
-1

通常の回転 (mesh.rotation.set) は、メッシュ オブジェクトを観察する場合、オイラー角を使用します。これにより、クォータニオンを使用して Y 軸を中心にメッシュが 90 度回転します。

mesh.rotation.setFromQuaternion(some_quaternion, "XYZ", true);
var some_quaternion = new THREE.Quaternion();
some_quaternion.setFromAxisAngle(new THREE.Vector(0,1,0), Math.PI/2);
于 2015-09-30T19:52:12.970 に答える