モーションマネージャーについて

Live2Dのモーションは、Live2D Animatorから書き出された専用形式のファイルになります。

モーションデータの中には、モデルに使用されているパラメータのIDと、各フレームでのパラメータの値が配列として書かれています。
モーションを再生するときにはこのファイルを読み込み、モーションマネージャーにデータを渡して再生することで、モデルに変更が適用されます。
ここではLive2Dにおけるモーションの概念の説明のため、やや抽象的になります。
具体的な説明は個別にリンクを張っていますのでそちらをご覧下さい。
モーションの再生(通常)


図1. モーションの再生

モーションファイルは通常複数あるため、それらを読み込んで再生したいものをモーションマネージャーに渡します。
つまりモーションはモーションマネージャーを通してモデルのパラメータを変更します。
ここでupdateを呼ばないとモデルとモーションは関連付けられず、つまりモーションは再生されません。
また、モーション開始の合図であるstartを呼ばないとuptateをしても何も変化しません。



一つのモーションマネージャーが扱うモーションは基本的には一つですが、開始直後は前回のモーションデータをまだ参照しています。
これはモーションのフェードインとフェードアウトを管理し、スムーズなパラメータ変更を行うためです。
モーションの再生(フェード)
フェードの図
図2. モーションのフェード再生

モーションAを再生中に、モーションBを割り込みで再生した場合、フェード処理が入ります。
フェードは初期設定でフェードイン1000ms、フェードアウト1000msです。
約一秒後に完全にモーションBに移行しますが、その間はモーションマネージャーは2つのモーションを扱うことになります。



一つのモデルに適用できるモーションマネージャーの数は制限がありません。
例えば、右手のモーションを扱うモーションマネージャーと、左手のモーションを扱うモーションマネージャーを用意して、
別々のタイミングでモーションを制御するなどといったことができます。
モーションの再生(複数)
図3. モーションの同時再生

各モーションマネージャーは他のモーションマネージャーから独立しているため、別の所で開始されたモーションの影響を受けません。
モーションマネージャーが複数ある場合、プログラム上の管理は比較的容易ですが
モーション作成時には注意する必要があります。
この使い方ではそれぞれのモーションマネージャーで、別々のパラメータを扱うことを前提にしています。
複数のモーションマネージャーで同じパラメータを変更しようとした場合、最後に適用したモーションマネージャーで上書きされることになります。
そのため、右手用モーションマネージャーなら右手関連のパラメータのみを扱い、左手モーションマネージャーなら左手関連の
パラメータのみを扱うなどの仕様を決めておく必要があります。


この同じパラメータを複数のモーションマネージャーで扱えないという問題を解決したのが表情モーションです。
表情モーションは差分を足したり掛けたりすることでモーションを再生します。
詳しくは表情モーションについてのチュートリアルを御覧ください。