0

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

我尝试过这样的事情:

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);

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

谢谢帮助。

4

1 回答 1

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;

}
于 2016-10-25T01:40:58.900 回答