Three.js旋转,缩放不在物体中心轴周围

时间:2014-07-10 15:17:31

标签: javascript three.js geometry scale

我在场景中有一系列Object3D,我是从顶点和面部创建的。应该说这些物体的顶点可以离世界起源很远(X和Y值高达600&000; 000)。在尝试旋转或缩放它们时,它们似乎围绕另一个轴而不是它们的本地中心旋转。

奇怪的是,object3D.translateX(或Y Z)工作得很好,正如预期的那样,只是移动位置(即:

object.position.x = 10

将x位置递增10(远离0,0,0本地原点)。

我甚至不完全确定这个物体在哪个轴上旋转。当我使用object.position将几何体移动到0,0,0时,它似乎不会使对象绕自身旋转。

如果有任何用处,我有代码来获取对象的中心(使用:

THREE.Box3().setFromObject(object).center

(虽然可能有更合适的方法?))

确实我发现this post允许我围绕中心点旋转(XYZ),但是我无法找到一种方法围绕XYZ轴单独旋转,只能一起旋转。

有什么解决方案吗?这必须是一个常见的尝试(围绕中心轴缩放和旋转物体?)

编辑:有趣的是我发现各种信息来源暗示旋转是围绕局部轴的,但是我的几何形状似乎并非如此! Saying that rotation is around object axis

Similarly saying the same sort of thing, however implying this can change depending on how it is 'built' (not sure what that means)

1 个答案:

答案 0 :(得分:1)

对象围绕网格/对象坐标的0,0,0点旋转。 而不是在世界的0,0,0坐标周围。 并且对象可能不在他们自己的起源中心。

将对象设置为0,0,0并在0,0,0处创建一个多维数据集,并查看它们是否在同一位置。

我需要编辑网格顶点,使它们真正以0,0,0为中心。 之后,我可以毫无问题地旋转它们。

或者将对象放到0,0,0并运行代码以获取对象的中心。我认为它不会是0,0,0。