モーションについて

モーションを再生するまでの流れ

1. モーションクラス
a. インスタンスの作成(mtnの読み込み)
b. 設定

2. モーション管理クラス
a. インスタンスの作成
b. モーション再生
c. モデルのパラメータ更新
d. モーションの終了



1-a. モーションのインスタンスの作成(mtnの読み込み)

モーションの再生にはLive2DMotionというクラスを使用します。
モーションに利用するデータは拡張子が「.mtn」となっているモーションファイルです。
この.mtnモーションデータを読み込むためには loadMotion関数 を利用します。
ほとんどのプラットフォームではファイルのパスから読み込む方法とバイト配列から読み込む方法の2つが提供されています。


Live2DMotion motion = Live2DMotion::loadMotion( path );

または

Live2DMotion motion = Live2DMotion::loadMotion( byteArray, size );

のようにして読み込みます。



1-b. モーションの設定

モーションには主に以下の項目を設定します。
これらの設定は行わなくても再生することができます。

* モーション開始時のフェードインの時間
setFadeIn関数で設定、getFadeIn関数で取得できます。
フェードインの時間をミリ秒で指定します。フェードの時間について
設定しない場合の初期値は1000です。

* モーション終了時のフェードアウトの時間
setFadeOut関数で設定、getFadeOut関数で取得できます。
フェードアウトの時間をミリ秒で指定します。
設定しない場合の初期値は1000です。

* ループ再生のON/OFF
setLoop関数で設定、isLoop関数で現在の値を取得できます。
trueを設定すると終了時に最初から再生します。
他のモーションが割り込むか終了命令が呼ばれるまで無限にループ再生し続けます。
設定しない場合の初期値はfalse(ループしない)です。

設定例 (※これらの設定はモーションの再生前に行ってください)
motion->setFadeIn( 1000 );//フェードインの時間を1000msに設定
motion->setFadeOut( 1000 );//フェードアウトの時間を1000msに設定
motion->setLoop( true );//ループ再生を行う


2-a. モーション管理クラスのインスタンスの作成

個別のモーションファイルの読み込み、設定にはLive2DMotionクラスを使用しましたが、
それらのモーションをモデルに適用する(アニメーションする)ためにはMotionQueueManagerクラスを使用します。

MotionQueueManager motionManager = new MotionQueueManager();//モーション管理クラスの作成



2-b. モーションの再生

モーションの再生にはMotionQueueManagerのstartMotion関数を使用します。

メモリの自動解放について (C++のみ)
2つ目の引数はモーション終了時にメモリから削除するかどうかの指定です。
trueにするとLive2D内部で自動的にdeleteが呼ばれ、メモリから削除されます。
C++以外の言語では意味を持ちません。


motionManager->startMotion( motion, false );//モーションの再生



2-c. モデルのパラメータ更新

startMotionでモーションを再生しただけでは、モデルはアニメーションしません。
現在再生中のモーションのパラメータをモデルに設定するためにupdateParam関数を使用します。
再生速度などを操作することもできます。詳細

motionManger->updateParam( live2DModel );//モーションの更新




2-d. モーションの終了

モーションは再生時間が終われば自動で終了しますが
任意のタイミングで終了したいときはstopAllMotions関数を使用します。
フェードの途中だと同時に2つ以上のモーションを再生している
ことがありますがそれらはすべて終了します。

motionManger->stopAllMotions();//モーション終了