设置物体在其轴上的旋转三个js

Set the rotation of an object at its axis three js

我尝试使用以下方法设置对象在其自身轴上的旋转:

object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)

在渲染函数中,但对象在每次渲染中都在旋转。有没有办法在它自己的轴上设置旋转,就像使用时一样:

object.rotation.x = Math.PI

object.rotation.set(Math.PI,0,0)

设置世界轴的旋转?

只需从 render 方法中删除以下代码。

object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)

你可以把它放在object的声明中。当然,您也可以在那里设置旋转(在 render 中),但这会不必要地降低性能。

干脆放在render函数外

编辑:您可以简单地使用

object.rotation.x += rotationSpeed; 

render方法中让它旋转。

如果旋转必须在渲染函数中进行,这意味着模型在每次渲染时都会改变旋转。简单地找到旋转差异并使用提到的代码将其应用于模型:

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