Three.js增加局部对象旋转

时间:2016-08-01 12:50:48

标签: javascript three.js rotation quaternions

我的目标是让对象控件像宇宙飞船,我理解的是我需要使用四元数来实现这个目标。首先,当我按下A键时,我试图让我的立方体开始向左旋转,这就是代码:

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()得到了对象所面对的轴,然后我在之前得到的轴上创建了四元数,并将给定对象旋转了0.05度的rad,最后是最后一个代码行我只是将tetternion应用于我的对象。我得到的问题是它没有增加旋转,它只是将我的对象设置为给定的旋转,我怎样才能使它增加旋转而不是设置?

2 个答案:

答案 0 :(得分:0)

为什么不使用其中一个或组合:

mesh.rotation.x += 0.05;
mesh.rotation.y += 0.05;
mesh.rotation.z += 0.05;

JSFiddle

答案 1 :(得分:0)

如果你要设置所有这些,你可以这样做

mesh.rotation.set(9, 7, 3)