Three.js學習筆記-注意事項
阿新 • • 發佈:2018-11-03
旋轉
尤拉角(Euler angles)容易遭遇一個所謂“萬向節鎖(gimbal lock)”的難題,也就是在某些特定點(類似於地球南北極極點),物體的座標突變會導致某個維度的旋轉變換失效。Gimbal_lock因此,物件旋轉總是使用其四元數 quaternion 屬性來儲存。
矩形變換
1.修改position,quaternion,scale屬性後交Three.js重新計算物件矩陣
object.position.copy(position);
object.quaternion.copy(quaternion);
預設matrixAutoUpdate 屬性被設定為 true,這樣矩陣將會被自動重新計算。 如果物件是靜止的,或者你想手動控制計算過程來獲得更好的效能,你可以設定該屬性為false:object.matrixAutoUpdate = false; 在修改物件屬性後,手動更新矩陣:
object.updateMatrix();
2.直接修改物件的矩陣
object.matrix.setRotationFromQuaternion(quaternion);
object.matrix.setPosition(position);
object.matrixAutoUpdate = false;
在這種情況下,matrixAutoUpdate 必須 被設定為 false,並且你應該要確保 不去 呼叫 updateMatrix。 否則手動修改會被自動計算所覆蓋。
相機位置和目標自動更新
camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix();