THREEJS如何围绕物体局部轴旋转

时间:2017-12-06 18:04:01

标签: javascript three.js rotation

我很难理解局部轴旋转在ThreeJS中是如何工作的。我看到了这个Rotate around local axis答案,它的工作方式与我的预期完全不同。

如果我创建一个圆柱并旋转它

const geometry = new THREE.CylinderBufferGeometry( 10, 10, 20 );
geometry.rotateX(Math.PI/2)

如何沿着长轴旋转圆柱?

我希望这可以完成这项工作:geometry.rotateY(Math.PI/5)但似乎是围绕世界轴旋转它。我想围绕局部轴旋转它,使其看起来像我做的那样

geometry.rotateY(Math.PI/5)
geometry.rotateX(Math.PI/2)

任何人都可以帮忙解释如何绕物体内轴旋转吗?

实际发生的事情: https://jsfiddle.net/h20hnn3n/46/

我希望它看起来像: https://jsfiddle.net/81j6g2ms/1/

我的用例要求我先围绕X和任意数量旋转,然后我需要围绕旧的Y轴旋转,所以如果我能按此顺序进行旋转会很棒

编辑: 看起来无论是旋转几何还是网格都很重要。它不应该等同于这样做吗?

我真的很困惑为什么这种行为不一样:https://jsfiddle.net/10L8se71/2/

1 个答案:

答案 0 :(得分:0)

如果遇到其他人,我会发布一个解决方案。

旋转几何体的工作方式与旋转网格物体的工作方式不同。所以你需要先将它添加到网格中。以下结果是正确的结果:

const mesh = new THREE.Mesh( geometry, material ) ;
mesh.rotateX(Math.PI/2)
mesh.rotateY(Math.PI/5)