在three.js中将向量从全局空间转换为本地向量

4
在我的场景中有一个旋转的物体,我应该如何将全局向量转换为该旋转对象的本地空间,以便它们在全局向量的相同位置渲染?
例如,考虑一个在全局原点旋转的立方体。现在我想为每个全局维度(x、y、z)绘制线条,但是将它们作为子级添加到旋转的立方体而不是全局场景中。 我该如何计算并在three.js中实现这些向量的旋转,使它们保持对齐?

object.worldToLocal( vector ) 是您正在寻找的吗? - WestLangley
@WestLangley 那也是我的第一反应,但是似乎不能得到我想要的结果... 所以要么我使用错误,要么那不是解决方案。假设这样做可以达到我想要的效果,沿以下向量绘制一条线应与全局X轴对齐(对于我来说没有对齐),难道不应该吗?var translatedAxis = myRotatedObject.worldToLocal(new THREE.Vector3(1, 0, 0)); - kontur
你能提供一个简单的实时示例,比如 jsfiddle 吗? - WestLangley
请查看此处:http://jsbin.com/datiyekaroti/1/ - kontur
嘿@WestLangley,谢谢你再次检查。最终我使用applyMatrix4翻译了Vector3本身,但是parent.updateMatrixWorld(); // important!是关键缺失的部分。请随意将其作为答案的参考添加,我会很乐意接受。 :) - kontur
糟糕,我的代码出错了。我删除了之前的评论,请查看下面发布的答案。 - WestLangley
1个回答

8
你想将一个对象作为父对象的子对象添加,使得子对象的世界位置和方向不改变。
可以使用以下模式实现:
parent.attach( object );

three.js r.107


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接