2016-10-26 5 views
0

私はまだ3つのjを使用しています。私がカメラオブジェクトを回転させるとき、x、y、zの値を持つ回転プロパティがあります。 オブジェクト3Dの回転のどこにx、y、zがあるのだろうか? x、y、zはオブジェクトオイラー角のラジアンを表しますが、リンクthree.jsの文書によれば、https://en.wikipedia.org/wiki/Euler_anglesはαとγの範囲が2πラジアンをカバーし、βの範囲がπラジアンをカバーします。しかし、すべてのx、y、zの範囲は、私がそれをテストするときにπラジアンしかカバーしません。 最初はx = 0、y = 0、z = 0、真っ直ぐルックアップ、なぜx値だけが変わったのですか? Object3Dがカメラの場合、カメラビューの中央のピクセルはx軸を表しますか? あなたのお手伝いをお待ちしています。3JS Object3Dローテーション

答えて

0

あなたの質問を少し明確にして、エラーを再現するためのコードを書いているかもしれません。 x、y、zはあなたが周りを回転させるを表しているので、あなたがまっすぐに(0,0,0)から見て、なぜ唯一のx vaue変更問題で

です。 3jsと3Dグラフィックスの標準は、横軸をx、縦軸をy、zを深度軸とします。 まっすぐ上を向いて見ると、水平方向のx軸を90度回転させ、回転のx値を変更します。私は https://threejs.org/docs/#Reference/Math/Euler

Three.jsにあなたのリンクを与えることができ

は、3D回転を表現する2つの方法を提供します:オイラー角と四元だけでなく、両者の間に変換するための方法。オイラー角には、ジンバルロックと呼ばれる問題があります。このジンバルロックでは、ある構成が自由度を失うことがあります(オブジェクトが1つの軸を中心に回転しないようにする)。このため、オブジェクトの回転は常にオブジェクトの四元数に格納されます。

ライブラリの以前のバージョンにはuseQuaternionプロパティが含まれていました。これをfalseに設定すると、オブジェクトの行列がオイラー角から計算されます。このプラクティスは廃止されました。代わりに、あなたはquaternionを更新するsetRotationFromEulerメソッドを使うべきです。

https://threejs.org/docs/manual/introduction/Matrix-transformations.html