a3js API Documentation - v0.0.34
    Preparing search index...

    Interface Transformer

    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などが作られる。

    interface Transformer {
        trans: Transform;
        addForce(f: Vec3): void;
        addForceAtPoint(f: Vec3, p: Vec3): void;
        addOneselfToPhysics(world: PhysicsWorld): void;
        addTorque(t: Vec3): void;
        applyImpulse(i: Vec3): void;
        applyImpulseAtPoint(i: Vec3, p: Vec3): void;
        applyTorqueImpulse(ti: Vec3): void;
        getAngvel(v: Vec3 | undefined): Vec3;
        getLinvel(v: Vec3 | undefined): Vec3;
        init(trans: Transform, objectA3: ObjectA3): void;
        isGrounded(): boolean;
        removeOneselfFromPhysics(world: PhysicsWorld): void;
        resetForce(): void;
        resetTorque(): void;
        setAngvel(angvel: Vec3): void;
        setLinvel(vel: Vec3): void;
        setLocation(loc: Vec3): void;
        setLocationNow(loc: Vec3): void;
        setQuat(quat: Quat): void;
        setQuatNow(quat: Quat): void;
        setScale(scale: Vec3): void;
        setScaleNow(scale: Vec3): void;
        update(dt: number): void;
    }

    Implemented by

    Index

    Properties

    trans: Transform

    このTransformerが管理している位置、回転、拡大・縮小率。 常に最新の位置、回転、拡大・縮小率が、ここに反映されていなければ ならない。

    Methods

    • 力を設定する。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 力点を指定して力を設定する。力点は世界座標での座標。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 物理演算が必要な場合にRigidBodyやColliderを PhysicsWorldに登録する必要があるので、このメソッドで 対応する。必要無い場合は何もしなくてOK。

      Parameters

      Returns void

    • トルク(回転力)を設定する。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 一瞬、力を設定する。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      • i: Vec3

        インパルス

      Returns void

    • 力点を指定して、一瞬、力を設定する。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 一瞬、トルクを設定する。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 角速度を得る。物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は正しい 値を返さない。

      Parameters

      • v: Vec3 | undefined

        値を受け取るためのVec3、またはundefined。

      Returns Vec3

      角速度。

    • 速度を得る。物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は正しい 値を返さない。

      Parameters

      • v: Vec3 | undefined

        値を受け取るためのVec3、またはundefined。

      Returns Vec3

      速度。

    • このTransformerの動作に必要な初期化処理を実装する メソッド。引数にコントロール対象のa3.ObjectA3(中に THREE.Object3Dも入ってる)を渡されるので、必要に応じて それをスキャンして情報を得ることは許可されるが、変更を 加えてはならない。特に初期の位置、回転、拡大・縮小率は、 第一引数のtransから得なければならず、objectA3.object (THREE.Object3D)から得てはならない。すでに設定されている 状態で呼び出された場合には、再設定という意味で対応しなければ ならない。

      Parameters

      • trans: Transform

        初期位置、回転、拡大・縮小率

      • objectA3: ObjectA3

        動きをコントロールする対象となるa3.ObjectA3

      Returns void

    • このTransformerがコントロールする3Dオブジェクトが 地面に接地しているかどうかを返す。実際には CharacterTransformerのようなTransfomerだけが意味の ある応答が可能だが、それ以外の場合は 「return this.trans.loc.y <= 0;」で良し。

      Returns boolean

    • このTransformerが不必要となった時に、PhysicsWorldに 登録していたRigidBodyやColliderを、登録解除する 処理を行うメソッド。

      Parameters

      Returns void

    • addForceで加えられた力をリセットする。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Returns void

    • addTorqueで加えられたトルクをリセットする。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Returns void

    • 角速度を設定する。単位はラジアン/秒。 物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      • angvel: Vec3

        角速度

      Returns void

    • 速度を設定する。物理系のTransformerのみ対応すれば 良い物で、それ以外の場合はメソッドの実装は空で良い。

      Parameters

      Returns void

    • 指定の場所に移動せよとの外部からの要求を受け付ける ためのメソッド。実際にそれを反映させる処理はupdate() メソッドに書く。

      Parameters

      • loc: Vec3

        指定場所

      Returns void

    • 指定の場所に直ちに移動せよとの外部からの要求を受け付ける ためのメソッド。実際にそれを反映させる処理はupdate() メソッドに書く。

      Parameters

      • loc: Vec3

        指定場所

      Returns void

    • 指定の角度に回転せよとの外部からの要求を受け付ける ためのメソッド。実際にそれを反映させる処理はupdate() メソッドに書く。

      Parameters

      • quat: Quat

        指定の回転

      Returns void

    • 指定の角度に直ちに回転せよとの外部からの要求を受け付ける ためのメソッド。実際にそれを反映させる処理はupdate() メソッドに書く。

      Parameters

      • quat: Quat

        指定の回転

      Returns void

    • 指定の大きさ(拡大・縮小率)に変形せよとの外部からの要求を 受け付けるためのメソッド。実際にそれを反映させる処理は update()メソッドに書く。

      Parameters

      • scale: Vec3

        指定の大きさ

      Returns void

    • 指定の大きさ(拡大・縮小率)に直ちに変形せよとの外部からの 要求を受け付けるためのメソッド。実際にそれを反映させる処理は update()メソッドに書く。

      Parameters

      • scale: Vec3

        指定の大きさ

      Returns void

    • 経過時間に応じて、位置、回転、拡大・縮小率を更新するための メソッド。毎フレーム呼び出される。その時点での位置、回転、 拡大・縮小率は必ずthis.transに反映させなければならない。 外部からの指示がなくても自動的に移動するようなことが実現 される。

      Parameters

      • dt: number

        経過時間(秒)

      Returns void