Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 3.js增加局部对象旋转_Javascript_Three.js_Rotation_Quaternions - Fatal编程技术网

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(现在不知道代码)这是在全局空间中旋转,反正是在局部空间中旋转?这是在全局空间中旋转,反正是在局部空间中旋转?