【发布时间】:2021-03-06 03:45:24
【问题描述】:
早上好,我正在尝试在每个平面上定位子面板,但似乎使用我用来创建网格(平面)的方法矩阵和 matrixWorld 没有更新。我需要“更新”每个平面矩阵,以便能够相应地平移和旋转子平面。下面我添加了一张带有几何生成步骤的图片。我正在使用 BufferGeometry 创建面板的顶点,然后对它们进行三角剖分以创建网格。下面我包括一步一步的图像。 任何帮助都会有所帮助!
【问题讨论】:
标签: javascript three.js
早上好,我正在尝试在每个平面上定位子面板,但似乎使用我用来创建网格(平面)的方法矩阵和 matrixWorld 没有更新。我需要“更新”每个平面矩阵,以便能够相应地平移和旋转子平面。下面我添加了一张带有几何生成步骤的图片。我正在使用 BufferGeometry 创建面板的顶点,然后对它们进行三角剖分以创建网格。下面我包括一步一步的图像。 任何帮助都会有所帮助!
【问题讨论】:
标签: javascript three.js
最后,我想通了。我直接从角向量构建了变换矩阵4。也许它对某人有用(下面的代码):
let vX = new THREE.Vector3(ndes[3][0] - ndes[0][0], ndes[3][1] - ndes[0][1], ndes[3][2] - ndes[0][2]).normalize(),
vY = new THREE.Vector3(ndes[1][0] - ndes[0][0], ndes[1][1] - ndes[0][1], ndes[1][2] - ndes[0][2]).normalize(),
vZ = new THREE.Vector3().crossVectors(vX, vY).normalize();
let matrix = new THREE.Matrix4();
matrix.set( vX.x, vY.x, vZ.x, ndes[0][0],
vX.y, vY.y, vZ.y, ndes[0][1],
vX.z, vY.z, vZ.z, ndes[0][2],
0, 0, 0, 1);
panels.applyMatrix4( matrix );
【讨论】: