js旋转,缩放不发生围绕对象的中心轴

Three.js rotating, scaling not occuring around object central axes

本文关键字:对象 旋转 缩放 js      更新时间:2023-09-26

我在一个场景中有一系列的Object3Ds,我自己从顶点和面创建。应该说,这些对象的顶点可能离世界原点很远(X和Y值高达60万左右)。当试图旋转或缩放它们时,它们似乎是围绕另一个轴旋转,而不是它们的局部中心。

古怪object3D。translateX(或Y - Z)工作良好,如预期的那样,就像简单地移动位置(即:

)一样。
object.position.x = 10

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

我甚至不完全确定这个物体是围绕哪个轴旋转的。当我将几何体移动到0,0,0时。也不会使物体围绕自身旋转的位置

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

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

(尽管可能有更合适的方法?))

事实上,我已经找到了这篇文章,它允许我围绕中心点旋转(XYZ),但是我找不到一种方法来单独旋转XYZ轴,只能一起旋转。

有解决方案吗?这必须是一个常见的尝试实现(缩放和旋转对象围绕其中心轴?)

有趣的是,我发现各种各样的信息来源暗示旋转是围绕一个局部轴,但这似乎不是我的几何图形的情况!说明旋转是围绕对象轴进行的

类似地说同样的事情,但是暗示这可以改变取决于它是如何"构建"的(不确定这是什么意思)

对象围绕网格/对象坐标的0,0,0点旋转。而不是在世界的0,0,0坐标附近。物体可能不在原点的中心。

设置对象为0,0,0,并在0,0,0处创建一个立方体,并查看它们是否在同一位置。

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

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