Three.js 利用矩陣編碼描述3D轉換--轉換(位置),旋轉和縮放.對於每個基於Object3D的矩陣(matrix)實例對象都會存儲一個位置,旋轉和縮放.這篇文檔主要描述如何更新一個對象的變換.性能
這裏有兩種方式更新對象的轉換:編碼
修改對象的位置,四元素,和縮放屬性,而後讓Three.js根據這些新的數據從新計算矩陣:code
object.position.copy(start_position); object.quaternion.copy(quaternion);
默認狀況下,matrixAutoUpdate屬性是設置爲true的,而後矩陣就會自動進行從新計算.若是是靜態對象,或者當從新計算的時候你但願手動進行操做,經過設置matrixAutoUpdate爲false能夠得到更好的性能:
object.matrixAutoUpdate = false;
並在更改任何屬性後,手動更新矩陣:
object.updateMatrix();
直接修改對象的矩陣.Matrix4這個類有多種方法來進行修改矩陣:對象
object.matrix.setRotationFromQuaternion(quaternion); object.matrix.setPosition(start_position); object.matrixAutoUpdate = false;
在這裏請注意,matrixAutoUpdate必須設置爲false,並確保不要調用updateMatrix方法.調用updateMatrix將會影響到矩陣的手動更改,以及影響基於位置、縮放等的矩陣從新計算.
對象的矩陣(matrix)存儲對象相對於對象的父對象(parent)的轉換;在世界座標系到對象的轉換,您必須訪問對象的Object3D.matrixWorld
當父或子對象的轉換改變,你能夠調用updateMatrixWorld()對子對象的matrixWorld進行更新.文檔
Three.js 提供兩種方式來進行3D旋轉:歐拉角(Euler angles)和四元素(Quaternions),以及二者之間的相互轉換方法.歐拉角又叫作「萬向節鎖,「在某些配置狀況下回失去一個自由度(如防止物體被繞一個軸)。所以,旋轉對象老是存儲在對象可能所處的四元數中.
之前的版本庫包含一個useQuaternion屬性,當設置爲false的時候,會致使物體的矩陣是由歐拉角計算.這種作法已是不被採用了的,相反,你應該在將更新的四元上使用setRotationFromEuler方法。it