Javascript Three.js-旋转不考虑局部方向

Javascript Three.js-旋转不考虑局部方向,javascript,3d,rotation,three.js,Javascript,3d,Rotation,Three.js,我使用的是围绕场景中心点构建的大型对象阵列,需要围绕其局部轴操纵它们。它们都面向原点,使用一个空白对象和lookAt(),然后我使用。以这种方式获得初始旋转效果非常好,不幸的是,当我尝试使用object.rotation.x=”动态旋转这些对象时。正如您在第129行中看到的,looker.rotation.z工作正常,它正确地沿z轴旋转,但是如果它更改为X或Y,它不会沿局部或全局轴旋转。如果有人能揭开这一现象的神秘面纱,那就太好了。现在发生的事情是,你想在当前方向上添加一些旋转,设置变量look

我使用的是围绕场景中心点构建的大型对象阵列,需要围绕其局部轴操纵它们。它们都面向原点,使用一个空白对象和lookAt(),然后我使用。以这种方式获得初始旋转效果非常好,不幸的是,当我尝试使用
object.rotation.x=”动态旋转这些对象时。正如您在第129行中看到的,
looker.rotation.z
工作正常,它正确地沿z轴旋转,但是如果它更改为X或Y,它不会沿局部或全局轴旋转。如果有人能揭开这一现象的神秘面纱,那就太好了。

现在发生的事情是,你想在当前方向上添加一些旋转,设置变量
looker.rotation.z
意味着其他事情

最后,要计算观察者的旋转矩阵,将有如下内容(伪代码:函数不是这些,但你知道了):

旋转的组合不是直观的。这就是为什么它似乎不遵循任何轴系

如果要对现有矩阵应用某个轴上的旋转,可以使用函数
rotateX(角度)
rotateY(角度)
rotateZ(角度)
,和
rotateOaxis(轴,角度)
<代码>轴
可以是一个
3.Vector3

直接更改
looker.rotation.z
是有效的,因为它是距离几何体最近的旋转,并且不会受到其他旋转的影响(请记住,变换矩阵按相反顺序应用,例如
T*R*g
R
旋转
g
几何体,然后,
T
转换它)

总结 在这种情况下,我建议不要使用该行:

looker.rotation.z += 0.05;
使用


相反。希望这能有所帮助:)

很抱歉没有及时回复,我被其他工作压得喘不过气来。你的答案正是我想要的,谢谢!我以前不知道
rotateX
rotateY
rotateZ
函数。
looker.rotation.z += 0.05;
looker.rotateZ (0.05);
looker.rotateX (0.05);