OptionalcolliderOptionalcolliderOptionalcontrollerOptionalobjectこのTransformerが管理している位置、回転、拡大・縮小率。 常に最新の位置、回転、拡大・縮小率が、ここに反映されていなければ ならない。
物理演算が必要な場合にRigidBodyやColliderを PhysicsWorldに登録する必要があるので、このメソッドで 対応する。必要無い場合は何もしなくてOK。
登録対象のPhysicsWorld
このTransformerの動作に必要な初期化処理を実装する メソッド。引数にコントロール対象のa3.ObjectA3(中に THREE.Object3Dも入ってる)を渡されるので、必要に応じて それをスキャンして情報を得ることは許可されるが、変更を 加えてはならない。特に初期の位置、回転、拡大・縮小率は、 第一引数のtransから得なければならず、objectA3.object (THREE.Object3D)から得てはならない。すでに設定されている 状態で呼び出された場合には、再設定という意味で対応しなければ ならない。
このTransformerがコントロールする3Dオブジェクトが 地面に接地しているかどうかを返す。実際には CharacterTransformerのようなTransfomerだけが意味の ある応答が可能だが、それ以外の場合は 「return this.trans.loc.y <= 0;」で良し。
このTransformerが不必要となった時に、PhysicsWorldに 登録していたRigidBodyやColliderを、登録解除する 処理を行うメソッド。
解除対象のPhysicsWorld
addForceで加えられた力をリセットする。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。
addTorqueで加えられたトルクをリセットする。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。
角速度を設定する。単位はラジアン/秒。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。
指定の大きさ(拡大・縮小率)に変形せよとの外部からの要求を 受け付けるためのメソッド。実際にそれを反映させる処理は update()メソッドに書く。
指定の大きさ(拡大・縮小率)に直ちに変形せよとの外部からの 要求を受け付けるためのメソッド。実際にそれを反映させる処理は update()メソッドに書く。
経過時間に応じて、位置、回転、拡大・縮小率を更新するための メソッド。毎フレーム呼び出される。その時点での位置、回転、 拡大・縮小率は必ずthis.transに反映させなければならない。 外部からの指示がなくても自動的に移動するようなことが実現 される。
ObjectA3のobjectプロパティに保存されているTHREE.Object3Dの position,quaternion(rotation),scaleのみをコントロールする モーションのインタフェース。コントロールするというだけでなく、 ObjectA3の位置、回転、拡大・縮小率に関する情報はこの インタフェースのインスタンスが管理しており、これがObjectA3の 正式な情報で、ObjectA3.object.positionなどは表示の都合で 管理されている情報という位置付けとなる。
ObjectA3に各種方法で登録されることで、そのObjectA3の 移動などに関する処理に影響を与える。ObjectA3に登録することが できるTransformerは必ず一つである。
このインタフェースにはsetLocation()やsetQuat()などの外部の プログラムから位置や回転を指定す要求を受け付けるメソッドが あるが、これらは必ずしも要求に応答しなければならないという わけではない。例えばInterpolationTransformerでは、移動が 目視できるように1秒ほど時間をかけて移動するし、物理系の Transformerの場合は、基本的に要求を無視して物理法則通りに 移動させるというのが正解の場合もある。ただし、setLocationNow()や setQuatNow()のようにメソッドの最後にNowが付いている物については 可能なかぎり要求に即座に答えなければならない。
このTransformerを実装することでInterpolateTransformer、 BillboardTransformer、CharacterTransformerなどが作られる。