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 旋转和平移对象_Javascript_Three.js - Fatal编程技术网

Javascript 旋转和平移对象

Javascript 旋转和平移对象,javascript,three.js,Javascript,Three.js,我需要旋转和平移对象。我可以两者都做,但在旋转方向丢失后——物体会朝着它们所面对的方向移动 if( keyboard.pressed("up")) objects[movementControls.translate].translateX(1); if( keyboard.pressed("down")) objects[movementControls.translate].translateX(-1);

我需要旋转和平移对象。我可以两者都做,但在旋转方向丢失后——物体会朝着它们所面对的方向移动

        if( keyboard.pressed("up"))
            objects[movementControls.translate].translateX(1);
        if( keyboard.pressed("down"))
            objects[movementControls.translate].translateX(-1);
        if( keyboard.pressed("left"))
            objects[movementControls.translate].translateZ(-1);
        if( keyboard.pressed("right"))
            objects[movementControls.translate].translateZ(1);
        if( keyboard.pressed("x"))
            objects[movementControls.rotate].rotation.x+=0.1;
        if( keyboard.pressed("y"))
            objects[movementControls.rotate].rotation.y+=0.1;
        if( keyboard.pressed("z"))
            objects[movementControls.rotate].rotation.z+=0.1;

有一种方法可以只旋转对象而不旋转轴?

使用
parent.Add(yourobject)将对象添加到另一个父对象中。然后移动父对象,旋转子对象

如果我理解您的问题,那么您需要使用
位置。applyAxisAngle
代替
旋转

所有旋转和平移操作都是围绕原点(0,0,0)应用的。如果要在旋转时保留平移,则需要保存当前对象位置,首先将对象平移到(0,0,0),然后旋转,然后再向后平移。也许值得研究一种管理复杂对象和场景的方法——WebGL就是其中之一。