我尝试使用矩阵进行旋转和前进,但我没有找到解决方案。
我尝试过这样的事情:
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);
结果是网格围绕原点旋转,半径可变。 但是我想要一个网格转向并继续前进。
寻求帮助。
答案 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;
}