Object 设置对象在其轴上的旋转

Object 设置对象在其轴上的旋转,object,rotation,three.js,Object,Rotation,Three.js,我尝试使用以下方法设置对象在其自身轴上的旋转: object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI) 在渲染函数中,但对象在每次渲染中都在旋转。是否有一种方法可以在其自身的轴上设置旋转,如使用: object.rotation.x = Math.PI 或 要设置世界轴的旋转?只需从渲染方法中删除以下代码 object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI) 您可以将其放入对象

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

object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)
在渲染函数中,但对象在每次渲染中都在旋转。是否有一种方法可以在其自身的轴上设置旋转,如使用:

object.rotation.x = Math.PI


要设置世界轴的旋转?

只需从
渲染方法中删除以下代码

object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)
您可以将其放入
对象的声明中。当然,您也可以在那里设置旋转(在
渲染
中),但这将不必要地降低性能

只需将其置于渲染函数之外。

编辑:您可以简单地使用

object.rotation.x += rotationSpeed; 

渲染
方法中,让它旋转。

只需从
渲染
方法中删除以下代码即可

object.rotateOnAxis(new THREE.Vector3(1,0,0) , Math.PI)
您可以将其放入
对象的声明中。当然,您也可以在那里设置旋转(在
渲染
中),但这将不必要地降低性能

只需将其置于渲染函数之外。

编辑:您可以简单地使用

object.rotation.x += rotationSpeed; 

渲染
方法中,使其旋转。

如果旋转必须在渲染功能中进行,则表示模型在每次渲染时都在更改旋转。只需找到旋转差异,并使用上述代码将其应用于模型:

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

。只需找到旋转差异,并使用上述代码将其应用于模型:

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

我需要更改每个渲染中的旋转,因为模型在具有不同高程的地形模型上移动。我找到了一个解决方案,我将发布它:)sry,我误解了这个问题。我编辑了我的答案。object.rotation.x的问题是我的模型改变了方向。想象一辆汽车在3d空间中移动。如果汽车与z轴平行移动,我旋转。x++汽车将旋转,就像它在山上行驶一样。现在,如果模型与x轴平行移动,我进行旋转。x模型将在世界轴x处旋转,而不是其自身,因此汽车的一侧(左侧或右侧)将旋转,而不是我想要的前部或后部。我需要在每个渲染中更改旋转,因为模型在具有不同高程的地形模型处移动。我找到了一个解决方案,我将发布它:)sry,我误解了这个问题。我编辑了我的答案。object.rotation.x的问题是我的模型改变了方向。想象一辆汽车在3d空间中移动。如果汽车与z轴平行移动,我旋转。x++汽车将旋转,就像它在山上行驶一样。现在,如果模型与x轴平行移动,我进行旋转。x模型将在世界轴x处旋转,而不是它自己的轴,因此汽车的一侧(左侧或右侧)将旋转,而不是我想要的前部或后部。应该有一种更简单的方法让物体旋转。我编辑了我的答案。应该有一个更简单的方法让物体旋转。我编辑了我的答案。