1. 程式人生 > >Three.js學習筆記-注意事項

Three.js學習筆記-注意事項

旋轉

尤拉角(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();