three.js‎ > ‎

Matrix4


位置と角度を収納できる便利なオブジェクト・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() 使った方がいい。




Comments