【问题标题】:Three.js - rotating an Object3D around an axisThree.js - 围绕轴旋转 Object3D
【发布时间】:2015-06-15 01:30:06
【问题描述】:

我正在尝试使用OBJMTLLoader 旋转加载到Object3D 中的网格。

var obj = new THREE.Object3D();
// loading and stuff

obj.rotation.y += 0.1; //inside the update function

这可以正常工作,但仅适用于 y 和 z 轴。使用相同的代码,但对于 x 轴产生与围绕 z 轴旋转相同的结果,但顺时针而不是逆时针。

很遗憾,我需要绕 x 轴旋转它。

var xAxis = new THREE.Vector3(1,0,0);
obj.rotateOnAxis( xAxis, 0.1 );

这确实围绕 x 轴旋转对象。

但是,我想对对象的旋转进行补间,因此我需要一种方法来显式更改对象旋转的角度,而不是将其旋转特定的量。

知道为什么obj.rotation.yobj.rotation.z 可以正常工作,而obj.rotation.x 不能正常工作吗?

【问题讨论】:

  • 举一个活生生的例子,例如作为一个 jsfiddle 将有助于解决这个问题。到目前为止听起来很奇怪,但可能很简单。
  • @antont 谢谢,但我想通了。
  • 感谢分享解决方案,现在很有意义,我很高兴了解到这种情况是如何发生的。

标签: javascript rotation three.js


【解决方案1】:

加载网格后(在尝试围绕 x 轴旋转之前),我将它围绕 y 轴旋转了 90 度。由于默认的欧拉顺序(XYZ),局部坐标轴不再对应世界坐标轴。

obj.eulerOrder = 'YXZ';

在围绕 y 轴旋转网格之前使用上面的代码行解决了这个问题。

欧拉阶的很好解释可以在here找到。

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2012-05-31
    • 1970-01-01
    • 2013-04-25
    • 2015-01-06
    • 1970-01-01
    • 2012-07-23
    • 2017-02-10
    • 2016-02-29
    相关资源
    最近更新 更多