我有一些"块"这是Three.js(r72)网格对象(主要是从挤压形状创建的)
此网格的边界框是1 x 1 x 1
立方体,XYZ轴帮助器位于0,0,0
,创建此形状后,添加到1,1,0
处的场景。
因此,为了澄清,网格0,0,0
位于世界1,1,0
。
我想围绕Z轴(蓝轴)旋转对象(例如在XY平面中),使曲面朝向我。
如果我这样做,它会围绕Z轴旋转,特别是在网格的原点处,我得到了这个。
然而,这是 NOT 我想要的。
我想围绕 a Z轴旋转网格,特别是穿过网格的质心的网格。例如由当前世界形成的轴协调1.5,1.5,0
到1.5,1.5,1
。
我知道我可以创建我的初始形状/网格,以便"插入点" / origin实际上位于我的形状的质心(或底部中心),因此这将是"解决"我的轮换问题,但我不想这样做,因为它会破坏我以简单,合乎逻辑的方式放置块的能力。
无论是应用矩阵变换还是旋转,我都可以使用任何适用于此的选项。我能想出的唯一 丑陋的 选项是:
orig.x, orig.y, orig.z
((0,0,0) - (meshCentroid.x, meshCentroid.y, meshCentroid.z))
Z Axis
((orig.x, orig.y, orig.z) + (meshCentroid.x, meshCentroid.y, meshCentroid.z))
然而,这似乎极端矫枉过正,如果我想围绕通过质心的轴之外的任意轴旋转,它将无法工作。
我知道这里已经有很多类似的问题,但我发现 破坏了网格的位置点 以便应用轮换。