位置と角度を収納できる便利なオブジェクト・4x4のマトリックス
setPosition()とsetTranslation()の違いどちらも、n14,n24,n34に値を設定するが、setTranslationの方は、setRotationFromEuler()などで設定したrotationの値をクリアーします。
Matrix4.setTranslation() this.set(
1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1
);
消す目的じゃなければ、setPosition()使うほうがよさそうです。
ちなみに、 setPosition(); setRotationFromEuler(); と setTranslation()したMatrixとsetRotationFromEuler()したMatrixをmultiplyしても結果は同じです。 (ただし、逆の順番で、setRotationFromEuler()が先でsetTranslation()すると、別の結果になるのがmultiply())
Matrix4のポジションをVector3に変換するVector3.setPositionFromMatrix()とMatrix4.getPosition()のどちらでもいい、ただしgetPosition()は方は、内部キャッシュなので値をそのまま、所有しないこと
Vector3 setPositionFromMatrix: function ( m ) {
this.x = m.n14; this.y = m.n24; this.z = m.n34;
},
Matrix4 getPosition: function () {
return THREE.Matrix4.__v1.set( this.n14, this.n24, this.n34 );
}, これで帰ってきた値使うと、参照でおかしくなる?保持するならclone() 使った方がいい。
|