我很难理解局部轴旋转在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/
答案 0 :(得分:0)
如果遇到其他人,我会发布一个解决方案。
旋转几何体的工作方式与旋转网格物体的工作方式不同。所以你需要先将它添加到网格中。以下结果是正确的结果:
const mesh = new THREE.Mesh( geometry, material ) ;
mesh.rotateX(Math.PI/2)
mesh.rotateY(Math.PI/5)