Javascript 3.js增加局部对象旋转
我的目标是使一个对象像宇宙飞船一样控制,我的理解是我需要使用四元数来实现这个目标。对于“开始”,我试图使立方体在按下一个键时开始向左旋转,下面是代码:Javascript 3.js增加局部对象旋转,javascript,three.js,rotation,quaternions,Javascript,Three.js,Rotation,Quaternions,我的目标是使一个对象像宇宙飞船一样控制,我的理解是我需要使用四元数来实现这个目标。对于“开始”,我试图使立方体在按下一个键时开始向左旋转,下面是代码: if(controls.pressingA === true) { //var pLocal = new THREE.Vector3( 0, 0, -1 ); //var pWorld = pLocal.applyMatrix4( me.matrixWorld ); //var dir = pWorld.sub( me.p
if(controls.pressingA === true)
{
//var pLocal = new THREE.Vector3( 0, 0, -1 );
//var pWorld = pLocal.applyMatrix4( me.matrixWorld );
//var dir = pWorld.sub( me.position ).normalize();
var dir = me.getWorldDirection();
var quaternion = new THREE.Quaternion().setFromAxisAngle( dir, 0.05 );
me.rotation.setFromQuaternion( quaternion );
}
根据我对这段代码的理解,
me.getWorldDirection()
获取对象所面对的轴,然后我在之前获得的轴上创建四元数,并以rad为单位将给定对象旋转0.05度,最后一行代码将四元数应用于我的对象。我遇到的问题是,它不会增加旋转,它只是将我的对象设置为给定旋转,如何使其增加旋转而不是设置旋转?为什么不使用以下一种或几种组合:
mesh.rotation.x += 0.05;
mesh.rotation.y += 0.05;
mesh.rotation.z += 0.05;
为什么不使用以下一种或几种组合:
mesh.rotation.x += 0.05;
mesh.rotation.y += 0.05;
mesh.rotation.z += 0.05;
如果您正在设置所有这些选项,则可以执行此操作
mesh.rotation.set(9,7,3)
如果您正在设置所有这些,则可以执行此操作
mesh.rotation.set(9,7,3)
Get rotation on the axis and+0.05(现在不知道代码)Get rotation on the axis and+0.05(现在不知道代码)这是在全局空间中旋转,反正是在局部空间中旋转?这是在全局空间中旋转,反正是在局部空间中旋转?