Javascript localToWorld的怪异行为

Javascript localToWorld的怪异行为,javascript,three.js,Javascript,Three.js,晚上好 在我的项目中,我将从字体几何体创建TextMesh,并将其放入pivot空对象中。我需要得到TextMesh每个顶点的世界坐标,因为我需要使用它们来对文本进行一些变换(自定义弯曲等) 代码如下: var pivot = new THREE.Object3D(); pivot.add(textMesh); pivot.position.set(x, y, z); pivot.rotation.set(roll, pitch, yaw); scene.add(pivot); pivot.

晚上好

在我的项目中,我将从字体几何体创建TextMesh,并将其放入pivot空对象中。我需要得到TextMesh每个顶点的世界坐标,因为我需要使用它们来对文本进行一些变换(自定义弯曲等)

代码如下:

var pivot = new THREE.Object3D();
pivot.add(textMesh);

pivot.position.set(x, y, z);
pivot.rotation.set(roll, pitch, yaw);
scene.add(pivot);

pivot.updateMatrixWorld(true);
for(var i = 0; i < textMesh.geometry.vertices.length; i++)
{
    var worldCoords = textMesh.localToWorld(textMesh.geometry.vertices[i]);
}
var pivot=new THREE.Object3D();
添加(textMesh);
枢轴位置设定(x,y,z);
枢轴。旋转。设置(滚动、俯仰、偏航);
场景。添加(轴);
pivot.updateMatrix世界(true);
对于(var i=0;i
发生的事情是,我的textMesh的位置被“localToWorld”函数更改了,这是我没有预料到的。 有没有一种方法可以在不移动网格的情况下获取网格每个顶点的世界位置? 我做错了什么? 是否有更简单的方法沿圆柱体弯曲文本网格?我已经检查过MOD3之类的东西,但找不到任何适合我的设置的东西,所以我试着自己做

谢谢你的帮助

试试这个:

var worldCoords = textMesh.localToWorld(textMesh.geometry.vertices[i].clone());
或者,如果您想重复使用
worldCoords

var worldCoords = new THREE.Vector3();
textMesh.localToWorld(worldCoords.copy(textMesh.geometry.vertices[i]));

这里重要的一点是,
localToWorld
(和
worldToLocal
)会破坏传递给它的数据。如果您想保持数据不变,但只获取值,请复制/克隆原始的
Vector3
,然后将副本传递到
localToWorld
/
worldToLocal
@jim01 Correct。但对于用户来说,这似乎并不明显,因为在关于的文档中有这样一句话:“将向量从局部空间转换为世界空间”。谁在乎看这份文件呢