Three.js飞机的3D旋转

时间:2012-11-03 16:00:22

标签: javascript math rotation three.js

我正在尝试制作一款简单的飞机飞行游戏。我希望用户使用箭头键围绕360度区域旋转平面,其中上下是相对于飞机水平位置的Y轴。左箭头和右箭头应该围绕它的z轴旋转平面,并允许它具有新的Y轴位置。我的问题是 - 如何在相对于新水平位置的Y轴上旋转飞机?

我有一个叫做飞机的小组,他做过像飞机。旋转。(用于左右)和airplane.rotation.x(向上和向下)的东西 - 但x轴不是沿着新的水平面。我也尝试使用airplane.children [1] .matrix.rotation.x访问组内的模型/网格,看看是否可以改变相对的Y轴...但是这会导致同样的问题。如何找到相对于其当前水平位置的Y轴?

我的代码可以在jsfiddle here

上看到

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

坦率地说,我很难理解你的问题,但我认为你的问题是:“如何使用箭头键围绕它的内部z轴或x轴旋转物体?”

像这样的例程会这样做:

var _q1 = new THREE.Quaternion();

function rotateOnAxis( object, axis, angle ) {

    _q1.setFromAxisAngle( axis, angle );
    object.quaternion.multiplySelf( _q1 );

}    

此例程使用四元数实现。这真的没什么大不了的 - 你只需要设置:

object.useQuaternion = true;

这是一个更新的小提琴:http://jsfiddle.net/Lc8gH/20/


编辑:您现在可以使用Object3D.rotateOnAxis( axis, angle );

three.js r.58

相关问题