我尝试使用以下方法设置对象在其自身轴上的旋转:
object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)
在渲染函数中,但对象在每次渲染时都会旋转。有没有办法在它自己的轴上设置旋转,就像使用:
object.rotation.x = Math.PI
或
object.rotation.set(Math.PI,0,0)
设置世界轴的旋转?
答案 0 :(得分:0)
只需从render
方法中删除以下代码即可。
object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)
您可以将其置于object
的声明中。当然,您也可以在那里设置旋转(在render
中),但这会不必要地降低性能。
只需将其放在渲染功能之外。
编辑:你可以简单地使用
object.rotation.x += rotationSpeed;
在render
方法中让它旋转。
答案 1 :(得分:0)
如果旋转必须在渲染功能处进行,则意味着模型在每次渲染时都在改变旋转。只需找到旋转差异并使用上述代码将其应用于模型:
object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI);
将旧旋转和新旋转存储在变量中并应用差异:
var old_rotation = value1;
var new_rotation = value2;
var Drotation = value1-value2;
如果差异为负或正,则显示旋转方向,因此只需应用:
object.rotateOnAxis(new THREE.Vector3(1,0,0) , Drotation);
<强>更新强>: 我找到的最简单的方法是:
object.rotateX(angle);
object.rotateY(angle);
object.rotateZ(angle);
这会使物体围绕其轴旋转:D