森栏
如果您有 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]);或者使用创建 mat4const 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);