2012-10-18 50 views
0

我一直在嘗試在3D空間中創建飛船。它飛向前方。您可以通過滾動飛船來改變方向並上下傾斜鼻子。Three.js在它自己的軸上旋轉

當我改變宇宙飛船的Z角時,它按預期滾動。當我改變宇宙飛船的X角時,鼻子會向上和向下傾斜。當我做這兩個按預期工作。

看來我的太空飛船正在旋轉在世界的軸上,而不是我的太空船的軸。我的意思是,當一個物體旋轉時,它的軸是否正確?顯然不是。

像往常一樣,非常感謝幫助。

這裏是顯然不行的演示:http://www.timseverien.nl/random/ohnoez/

回答

4

退房四元。在ThreeJS中,你想看的類是THREE.Quaternion。

四元數通常用於飛行模擬遊戲,並允許您在飛行器的局部空間中旋轉,而不會獲得「萬向節鎖定」。 (這時候,你的兩個軸成爲平行的,而你失去了一個自由度。)

這是一個相當不錯的,挺搞笑的,四元的解釋是: http://www.isner.com/tutorials/quatSpells/quaternion_spells_14.htm

我希望把你的正確的軌道......

1

你不必瞭解這個四元 - 只需看看這裏:

Three.js - Rotating a sphere around a certain axis

超過一個簡單的解決方案!

+0

對於Google員工:['Object3D.rotateOnAxis(axis,angle);'](http://threejs.org/docs/#Reference/Core/Object3D) –

+0

是,無論是或者:[quaternion = new THREE。 Quaternion()。setFromAxisAngle(axisOfRotation,angleOfRotation); object.rotation.setEulerFromQuaternion(quaternion);](http://threejs.org/docs/#Reference/Math/Quaternion) –