2012-02-21 13 views
7

私はL型システムインタプリタに取り組んでおり、回転の内部表現として四元数を使用しています。私はThreeJsのJavaScriptシーンに結果をエクスポートする必要があり、それを行うための最良の方法としてjsonのシーンが見つかりました。Three.js jsonシーンでquaternion rotationを使う方法

シーンの例がhttps://github.com/mrdoob/three.js/blob/master/examples/scenes/test_scene.jsにありますが、四元数の回転については何もありません。

は、だから私は、THREE.Object3Dプロパティ四元useQuaternionを持っていますが、動作しないようですが、エラーがシーンローダー(おそらく行方不明の「回転によって提起されていることを、http://threejs.org/io/s/quaternionでヘルプを使用してい、私は順序Yを想定し(私もオイラー角に四元を変換しようとした

"obj": { 
    ... 
    "quaternion": [0.38268343236509,0,0,0.923879532511287], 
    "useQuaternion": true 
} 

が、それは文句を言わないせい角度の適用の他のオーダーで、私のために働く: "属性は、)最後にEDITを参照してくださいZ、X)。上記の例では、クォータニオンはZ軸(ピッチ)を中心に135度回転しており、オイラー角[pi、pi、pi/4]に変換されますが、場面では正しく表示されません。

以下の図は、それぞれが11度以上Z軸回転したブロックを示しています。軸はX(赤)、Y(緑)、Z(青)です。ユークリッドへの不正確な変換四元数のため、上半分が正しく回転されませんでした(私はこのページを実装に使用しました:http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/)。

ilustration of the problem
EDIT:さらに検査した後のシーンローダーによって発生したエラーが原因でオブジェクト上の欠落している「回転」属性です。出力後にはエラーが発生せず、シーンがロードされますが、クォータニオンの回転は無視されるため、間違っています(画像と同じ方法で)。

"obj": { 
    ... 
    "rotation": [3.14159265358979,3.14159265358979,0.785398163397449], 
    "quaternion": [0.38268343236509,0,0,0.923879532511287], 
    "useQuaternion": true 
} 
+0

シーンローダーによって生成されたエラーメッセージには、クォータニオンの使用について特に気に入らないものが何であるかが詳細に記載されていますか? –

+0

このエラーは "rotation"属性がないために発生します。シーンローダーはおそらく四元数の回転を全くロードしません。 – NightElfik

答えて

4

私は私の問題を解決したと思います。これは私の質問への直接的な答えではなく、私はそれをどのように回避するかです。

シーンローダーに問題があり、これは四元数の回転では機能しません。 JSでシーンを直接生成するシーン生成スクリプトを書き直しました。

var mesh = new THREE.Mesh(geometry, material); 
... set position & scale ... 
mesh.rotation.x = 3.141; 
mesh.rotation.y = 3.141; 
mesh.rotation.z = 0.785; 
mesh.updateMatrix(); 
scene.add(mesh); 

は、その後、私は私の四元-オイラー変換がために設計された、私の問題(問題の添付画像)を引き起こしていた、デフォルトでは「XYZ」に設定されているをTHREE.Object3D にeulerOrderマジックプロパティを見つけました'YZX'だから私はそれを変えた。

mesh.eulerOrder = 'YZX'; 

それはそれです。私はシーンローダーを試してみる時間がありませんが、私の質問の2番目の部分で解決するよりもシーンローダーでeulerOrderプロパティを設定することが可能な場合。

ベストはシーン定義で直接クォータニオンを設定しますが、おそらくシーンローダー自体に変更が必要になります。

関連する問題