三个 JS:获取旋转点的更新位置

THREE JS: Get updated position of a rotated point

我在三个 JS 中渲染了一些点并旋转了它们。我想获取具有特定索引的点的更新位置。我该怎么做?

这里有一个CodePen用于演示: https://codepen.io/joshua-holly-fraunhofer/pen/VwyGBVO (注意注释第 64 和 65 行)。

function render() {
  points.rotation.x += 0.01;
  points.rotation.y += 0.02;
  renderer.render(scene, camera);
  
  // console.log(points[34].position.x);
  // console.log(points[34].position.y);
}

Position 是大小为 3 的几何图形的 Float32 BufferAttribute,对应于每个顶点的 x、y、z:https://threejs.org/docs/?q=geom#api/en/core/BufferGeometry

const positionArray = points.geometry.attributes.position.array;
const [x, y, z] = [positionArray[34*3], positionArray[34*3 + 1], positionArray[34*2]];
console.log(x, y, z);

感谢Deep的回答,我找到了解决办法。当我直接设置旋转值时(参见问题),几何中的位置值保持不变。但是当我旋转几何体时,更新内的位置值:

    points.geometry.rotateX(0.01);
    points.geometry.rotateY(0.02);
    renderer.render(scene, camera);
  
    const positionArray = points.geometry.attributes.position.array;
    const [x, y, z] = [positionArray[34*3], positionArray[34*3 + 1], positionArray[34*3 + 2]];
    console.log(x, y, z);

虽然文档说不要在循环中使用旋转函数:https://threejs.org/docs/?q=geom#api/en/core/BufferGeometry