Three.js矩阵旋转并向前移动

时间:2013-10-20 04:01:19

标签: three.js

我尝试使用矩阵进行旋转和前进,但我没有找到解决方案。

我尝试过这样的事情:

var finalMatrix = new THREE.Matrix4();
var rotationMatrix = new THREE.Matrix4();
var translationMatrix = new THREE.Matrix4();

rotationMatrix.makeRotationFromEuler(new THREE.Vector3(0,addedAngle,0),"XYZ");
translationMatrix.makeTranslation(0,0,step);

finalMatrix.multiply(rotationMatrix);
finalMatrix.multiply(translationMatrix);

myMesh.applyMatrix(finalMatrix);

结果是网格围绕原点旋转,半径可变。 但是我想要一个网格转向并继续前进。

寻求帮助。

1 个答案:

答案 0 :(得分:0)

你不能做一个简单的矩阵乘以得到你的目的。 在这里使用代码。要手动设置对象矩阵,请确保已将object.matrixAutoUpdate设置为false。

var finalMatrix = new THREE.Matrix4();
var rotationMatrix = new THREE.Matrix4();

rotationMatrix.makeRotationFromEuler(new THREE.Vector3(0,addedAngle,0),"XYZ");

finalMatrix.multiply(rotationMatrix);
finalMatrix.setPosition(0,0,step);

myMesh.applyMatrix(finalMatrix);

你可以参考matrix4.setPosition的three.js源代码来确保转换操作。 这里是setPosiiotn源代码:

setPosition: function ( v ) {

    var te = this.elements;

    te[ 12 ] = v.x;
    te[ 13 ] = v.y;
    te[ 14 ] = v.z;

    return this;

}