如何在 three.js 中获取立方体所有角的确切 x、y、z 位置
How to get the exact x,y,z location of all the corners of a cube in three.js
有 another answer to this question,但在实施之后,我发现这些位置并不是顶点绝对 x、y、z 位置的真实表示。我检查了网格,并查看了 geometry:BoxGeometry 属性 中的 _corners 数组。在那里我也可以找到这些值。如果立方体在两个不同的轴上旋转,并在 x 和 z 轴上移动,角位置的 y 值不会改变,因此这些角的 x、y 和 z 位置的值不是准确的值。我可以明显地看到角位置在 x、y 和 z 轴上移动。
我还能如何得出这些角的准确、绝对位置?到目前为止,我找不到确定这一点的属性。我需要使用这些角位置的旋转值来应用某种数学吗?
您只需获取立方体的 WorldMatrix(其中包含所有变换)并将其应用于具有原始顶点位置的 Vector3:
var w = 10;
var h = 15;
var d = 7;
const geom = new THREE.BoxBufferGeometry(w, h, d);
const mat = new THREE.MeshBasicMaterial();
const box = new THREE.Mesh(geom, mat);
// Get world matrix transformation of the box
var boxMatrix = box.matrixWorld;
// Set the initial position of the desired vertex into a Vector3
var vertex = new THREE.Vector3(w / 2, h / 2, d / 2);
// Apply the matrix transformation to the vector
vertex.applyMatrix4(boxMatrix);
// Read the result
console.log(vertex);
有 another answer to this question,但在实施之后,我发现这些位置并不是顶点绝对 x、y、z 位置的真实表示。我检查了网格,并查看了 geometry:BoxGeometry 属性 中的 _corners 数组。在那里我也可以找到这些值。如果立方体在两个不同的轴上旋转,并在 x 和 z 轴上移动,角位置的 y 值不会改变,因此这些角的 x、y 和 z 位置的值不是准确的值。我可以明显地看到角位置在 x、y 和 z 轴上移动。
我还能如何得出这些角的准确、绝对位置?到目前为止,我找不到确定这一点的属性。我需要使用这些角位置的旋转值来应用某种数学吗?
您只需获取立方体的 WorldMatrix(其中包含所有变换)并将其应用于具有原始顶点位置的 Vector3:
var w = 10;
var h = 15;
var d = 7;
const geom = new THREE.BoxBufferGeometry(w, h, d);
const mat = new THREE.MeshBasicMaterial();
const box = new THREE.Mesh(geom, mat);
// Get world matrix transformation of the box
var boxMatrix = box.matrixWorld;
// Set the initial position of the desired vertex into a Vector3
var vertex = new THREE.Vector3(w / 2, h / 2, d / 2);
// Apply the matrix transformation to the vector
vertex.applyMatrix4(boxMatrix);
// Read the result
console.log(vertex);