1 回答

TA貢獻1810條經驗 獲得超5個贊
如果您有 3 個表示對象 3 軸對齊的向量和一個坐標,您可以手動構建一個矩陣以根據這 4 個向量定位該對象。
軸向量 {x,y,z} 的長度應該表示沿該軸的比例。如果對向量進行歸一化,則比例將為 1。將向量相乘以縮放對象。
所以 3 軸為xAxis, yAxis,zAxis并且位置coord在世界空間中
作為數組的 4 x 4 矩陣
const matrix4 = new Float32Array([
xAxis.x, xAxis.y, xAxis.z, 0,
yAxis.x, yAxis.y, yAxis.z, 0,
zAxis.x, zAxis.y, zAxis.z, 0,
coord.x, coord.y, coord.z, 1
]);
或者
const matrix4 = new Float32Array([...xAxis, 0, ...yAxis, 0, ...zAxis, 0, ...coord, 1]);
或者使用創建 mat4
const mat = mat4.create().fromValues(...xAxis, 0, ...yAxis, 0, ...zAxis, 0, ...coord, 1);
請記住,軸向量的長度會縮放該軸。
有時 3 軸并不完全垂直,可能會使物體傾斜。您可以使用 2 軸的叉積來找到第 3 軸。例如,z 軸未知或未對齊。
const mat = mat4.create().fromValues(
...xAxis, 0,
...yAxis, 0,
...vec3.cross(vec3.create(), xAxis, yAxis), 0,
...coord, 1
);
添加回答
舉報