對 Three.js 的物件來說,給變數賦值的順序沒有關係。這些變數不是命令。你在旋轉之前或是之後設定平移,得到的都是相同結果。你設定的變數通常在繪製時以固定順序運算(縮放、旋轉、平移)。

舉例來說,你旋轉平移一個物件如下:

1
2
box.position.x = 3.0;
box.rotation.y = 5.7;

這樣沒問題,而以下的程式:

1
2
box.rotation.y = 5.7;
box.position.x = 3.0;

會做完全一樣的事。再一個例子:

1
2
3
4
box.rotation.y = 122113.01;
box.rotation.y = 5.7;
box.position.x = 78893.02;
box.position.x = 3.0;

結果也是一樣;只有最後一個賦值有效。你在設置場景時如何賦值都沒有關係,只有在繪圖時最後一個設定的值才會被取出使用。Three.js 在世界座標空間以固定順序運算: 縮放、旋轉、平移(位置)。

這個行為隨不同的圖學程式庫會有不同,有些會把座標變換當成命令,直接依照你給的順序運算。這裡你是設定變數,不是發出命令,變數之後以固定順序施加在物件上。

如果你想要不同的順序,需要使用 Object3D,我們不久後會提到。