three.js/docs 日本語訳

英語力のない僕のための日本語版のthree.js/docsサイト (respect three.js/docs) 本家サイトhttp://threejs.org/docs/#Manual/Introduction/Creating_a_scene

イントロダクション-次元変換-

Three.jsは、3D変換を、コード化するために、行列を使用します。

変換位置、回転、そして、機能拡張していく。

全てのObject3Dのインスタンスは、物体の位置や、回転そして、規模を保持している行列を持っている。

このページは、どのようにオブジェクトの変換をアップデートしていくのかについて描写していく。

 

便利な特性と、matrixAutoUpdate

 

物体の変換のアップデートのためには、二つの方法がある。

 

物体の位置、4元数、そして規模の特性を、修正し、それらの特性から、物体の行列をthree.jsに再計算

させます。

 

object.position.copy(start_position);

object.quaternion.copy(quaternion);

 

規定では、matrixAutoUpdateの特性は trueにセットされていて、

行列は、自動的に再計算されます。 

もし、物体が静的なら、再計算が起こった時、主導でコントロールしたいのなら、

よりよいパフォーマンスは、特性をfalseにしたら得られる。

 

object.matrixAutoUpdate = false;

そして、多くの特性を変えた後、 行列は、アップデートされます。

 

  1. object.updateMatrix();

 

物体の行列を直接修正する。Matrix4クラスは、行列を修正するための様々なメソッド

持っています。

 

object.matrix.setRotationFromQuaternion(quaternion); object.matrix.setPosition(start_position); object.matrixAutoUpdate = false;

 

matrixAutoUpdateは、このケースでは、falseにセットされていて、必ずしもmatrixAutoUpdateを呼び出す必要はないってことに、注意してください。

updateMatrixを呼び出すことが、行列や、位置からの再計算、規模やその他へ作られる変化

手動での変化をなくします。

 

物体と、WorldMatrix

 

物体の行列は、物体のparentとの関係性への物体の変化を蓄えています。

世界の同等での物体の変化を得るために、物体のObject3D.matrixWorld.にアクセスする

必要があります。

 

parentかchild objectの転換が変わる時、childオブジェクトのupdateMatrixWorld()を呼んだことによってアップデートされたmatrixworldを呼ぶ事ができます。

 

Rotationと、Quaternion

 

Three.js は、3D回転を再表現することの2つの方法を提供してくれます。

二つの間で、転換するための方法と同等の オイラー角と、Quaternions。オイラー角と、gimbal lockと呼ばれる。そこでは、ある配置では、自由の度合いを失います。

(物体が一つの軸でしか回転しなくなることを防ぐ)

この理由によって、物体の回転は、常に4元数に保存されます。