我正在研究L系統解釋器,並使用四元數作爲旋轉的內部表示。我需要將結果導出到ThreeJs JavaScript場景,我發現json場景是最好的方法。如何在Three.js json場景中使用四元數旋轉
我在https://github.com/mrdoob/three.js/blob/master/examples/scenes/test_scene.js上發現了一個場景的例子,但是沒有關於四元數旋轉的東西。
所以我用幫助在http://threejs.org/io/s/quaternion和發現,THREE.Object3D具有性能四元和useQuaternion,但它似乎不工作,錯誤是由現場裝載機提高(失蹤可能是因爲「旋轉「屬性,請參閱編輯末):
"obj": {
...
"quaternion": [0.38268343236509,0,0,0.923879532511287],
"useQuaternion": true
}
我也試圖轉換四元數歐拉角,但它不會爲我工作,可能是因爲應用角度的其他命令,(我假設秩序Y, Z,X)。在上面的例子中,四元數表示圍繞Z軸(音高)的135度旋轉,將其轉換爲歐拉角[pi,pi,pi/4],但在場景中顯示不正確。
下面的圖片顯示每個塊比Z軸多旋轉11度。軸是X(紅色),Y(綠色)和Z(藍色)。由於轉換四元數不正確導致Euclid上半部分旋轉不正確(我使用此頁面實現:http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/)。
編輯:進一步檢查後由現場裝載機引發的錯誤是因爲對對象失蹤「旋轉」屬性。以下輸出不會拋出錯誤和場景被加載,但它是錯誤的(以與所示圖像相同的方式),因爲四元數旋轉被忽略。
"obj": {
...
"rotation": [3.14159265358979,3.14159265358979,0.785398163397449],
"quaternion": [0.38268343236509,0,0,0.923879532511287],
"useQuaternion": true
}
有沒有更多的由場景加載器引發的錯誤信息,具體說明什麼它不喜歡使用四元數? – 2012-02-29 22:13:57
好的,錯誤是由於缺少「旋轉」屬性造成的。場景加載器可能根本不加載四元數旋轉。 – NightElfik 2012-03-06 10:47:04