Appearance
ActionObjectについて
ActionObjectとは
ActionObjectは複数のアクション(アニメーション)を持つ 3Dオブジェクトの基底クラスです。3Dモデルファイルを読み込む GLTFクラスとAcerola3Dクラスは、 このクラスを継承しています。
アクションは名前で管理されていて、getActionNames()で 一覧を取得できます。
モデルファイルの読み込みは非同期で行われるので、 await obj.readyで読み込み完了を待ってからシーンに追加します。
js
const obj = await new a3.GLTF('/a3js/assets/RobotExpressive.glb').ready;
console.log(obj.getActionNames()); // アクション名の一覧を表示
view.scene.add(obj);StateとEmote
アクションの再生方法には2種類あります。
setState(name)— アクションをループ再生します。歩く・走る など、続けるアニメーションに使います。setEmote(name)— アクションを一度だけ再生します。再生が 終わるとsetState()で設定していたアクションに自動的に戻ります。 ジャンプ・手を振るなど、一回きりの動作に使います。
js
obj.setState('Walking'); // 歩き続ける
obj.setEmote('Jump'); // 一度ジャンプして、歩きに戻る以下のサンプルで動きを確認できます(3秒歩いた後にジャンプして、 また歩きに戻ります)。
js
import * as a3 from 'a3js';
const view = new a3.Window(600,300);
view.camera.setPosition(0,0,5);
const obj = await new a3.GLTF('/a3js/assets/RobotExpressive.glb').ready;
console.log(obj.getActionNames());
obj.setPosition(0,-2,0);
obj.setState('Walking');
view.scene.add(obj);
await a3.asyncSleep(3000);
obj.setEmote('Jump');GLTFクラス
glTF形式(.glb/.gltf)の3Dモデルを読み込むクラスです。
Acerola3Dクラス
Acerola3D形式(.a3)のファイルを読み込むクラスです。
Action・Figure・Motion
ActionObjectが持つ1つ1つのアクションはActionクラスで 表されます。Actionは以下の2つをセットで管理しています。
Figure— 3Dモデルの形状(ルートのObject3Dとボーン・ スケルトン情報)。Motion— モーション(アニメーション)。再生位置や終了リスナー などを持ちます。
アクションはgetAction(name)で取り出したり、removeAction(name)で 取り外したり、addAction(name, action)で別の名前で取り付けたり できます。
js
const action = obj.removeAction('Running');
obj.addAction('走る', action);
obj.setState('走る');Motionの仕組みは、各種Jointなどを使った複雑な物理演算にも 利用できます。詳しくは 複雑な物理シミュレーションを参照してください。
また、移動速度に応じて止まる・歩く・走るのアクションを自動で 切り替える機能もあります。詳しくは 向きとアクションの自動制御を 参照してください。
詳細はAPIドキュメントを 参照してください。