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 に答える