モデルの切り替え方式の検討

服の変更、ポーズの変更などのモデルの切り替えには幾つかの方法があります。
主に表示と非表示を切り替えることでそれらを実現します。
ここでは各切替方法のメリットや一般的な実装方法について説明します。

一般的には服替えにmoc切り替え方式、腕替えにパーツα方式を使います。
これらは組み合わせることもできます。

アバターにする場合は、服や顔の変更にアバター方式を使います。
腕替えなどポーズの変更はパーツα方式を組み合わせることができます。

moc切り替え方式

特別な仕組みを使わず、モデルデータ(テクスチャデータ)を変更することでモデルを切り替える方式です。
服替えは一般的にこの方式を使います。

モデル製作時
    服替えのモデルなど、共通する要素が多い場合は一つのモデルデータで制作します。
    こうすることでパラメータや各IDを共通かできるので、このあとの作業が楽になります。
    書き出し時に表示を切り替えて別々に書き出します。

モーション製作時
    パラメータを共通化していれば、一つのモデルに対してアニメーションをつけるだけで他のモデルにも使えます。

組み込み時
    切り替え時にはモデルデータと必要ならテクスチャデータを再読み込みします。

メリット
    ・仕組みが単純。
    ・データがモデルごとに分かれるため必要なデータのみを使うことができる。

デメリット
    ・切り替え時にロード時間が発生する。
    ・モデルが増えすぎると管理が大変になる。

パーツα方式(プログラム制御)

パラメータを使わずにIDで管理されたパーツの表示を切り替えることで、服や腕のポーズなどを変更する方法です。
フェードイン、フェードアウトをプログラムで制御します。
腕の切り替えには一般的にこの方式を使います。

モーション製作時の手間を減らすために基準パーツと他のパーツを連動させて変化させます。
モーション製作時には基準パーツのみのモデルを使用します。これにより製作時は軽いモデルデータで扱うことができます。
アニメーションも基準パーツの表示、非表示のみキーを打ちます。
プログラム組み込み時は、設定ファイルを書き換えるだけで基準パーツに合わせてほかのパーツも連動します。

モデル製作時
    表示を切り替えたいパーツを別IDとして制作します。
    一定したルールのわかり易い名前をつけると、これ以降の作業がしやすくなります。
    モデルの書き出し時はすべてのデータが含まれる必要があるので注意してください。
    すべてのパーツを表示した状態で書きだすか、非表示のパーツを書き出すというオプションにチェックを入れて書きだす必要があります。

モーション製作時
    基本的にモーションの最初のフレームにどのパーツを表示するかのキーを打つだけです。

組み込み時
    サンプルに含まれるL2DPoseクラスを使って実装します。
    設定ファイルの読み込みと、更新が必要になります。
    それ以外は通常のモーション再生と同様です。

メリット
    ・自然な切り替えが再現しやすい。
    ・アニメーション付けのときに全データの入ったモデルを使わなくて良いのでデータが軽くなる。
    ・アニメーション付けのときに基準パーツのキーを打つだけで良いのでパーツが多いときに楽。

デメリット
    ・あらかじめ基準パーツをどうするか決めておかないと混乱する。   
    ・プログラム組み込み時にLive2Dライブラリのほかにサンプルフレームワークの知識が必要になる。
    ・データ量は減らないので、大きなポリゴンには適用が難しいことがある。



パラメータ方式

パラメータにキーを打つことでポリゴンの透明度を変化させる方法です。
手軽ですが、応用が効きにくいというデメリットがあります。
一般的にはモデルに組み込むちょっとしたエフェクトなどに使います。

モデル製作時
    基本的にポリゴン変形によるパラメータ付けと同様です。
    パラメータを作成し、表示用と非表示用のキーを打ちます。
    カラー設定から不透明度の設定を変更して、非表示時は0%、表示時は100%にします。
    パラメータの値を変更して、表示が切り替わればOKです。

モーション製作時
    通常のパラメータと同様に扱うことができます。

組み込み時
    通常のモーション(.mtnファイル)を再生するだけで再現できます。
    また、通常のパラメータと同様にsetParamFloatを使ってコード上から直接変更できます。

メリット
    ・簡単に設定できる。モデル製作時に透明度を設定するだけで、アニメーション制作、プログラム組み込み時には何も意識せずに実行できる。

デメリット
    ・ポリゴン変形によるパラメータが増えるので、複雑な変形をするポリゴンには適用が難しいことがある。
    ・データ量は減らないので、大きなポリゴンには適用が難しいことがある。


テクスチャ方式

テクスチャのみを切り替える方式です。
模様や色の変更など立体構造の変化しない場合にはうまくいきますが、複雑な形には適用しづらいです。

モデル製作時
    ツール上では組込み後のテクスチャ変更はサポートされません。
    配置の確認に使うだけになります。

組み込み時
    モデル読み込み後、テクスチャ設定命令でテクスチャを切り替えます。

メリット
    ・色変更などが簡単にできる。

デメリット
    ・活用できる場面が限られる。

パーツα方式(Animator制御)

パラメータを使わずにIDで管理されたパーツの表示を切り替えることで、服や腕のポーズなどを変更する方法です。
切り替えをLive2DAnimatorで制御することでプログラム側の負担を減らすことができます。
モーション制作に制限があるので、ご理解の上で選択してください。

モデル製作時
    パーツα方式(プログラム制御)と同様。

モーション製作時
    通常のパラメータのようにキーを打って変化させることで、自由なタイミングで表示を切り替えることができます。
    パラメータのようなフェードイン、フェードアウトの機能がライブラリにないので、Animator上で設定することになります。
    自動でのフェードイン、フェードアウトについては後述するプログラム制御のほうで説明があります。
    注意
    腕組みポーズ → 腕下げポーズなどのモーションを繰り返すと、不自然なつながりをすることになります。
    そのため現在どのような表示状態にあるのかを正確に管理する必要があります。    

組み込み時
   少量の変更だけでモーション通りに再生できます。

メリット
    ・比較的簡単に設定できる。(自然かどうかはべつとして)

デメリット
    ・自然な切り替えのためには状態の管理が必要。
    ・データ量は減らないので、大きなポリゴンには適用が難しいことがある。

アバター方式(標準)

* アバターの使用には特別なライセンスが必要です。詳しくはお問い合わせください。
表示するパーツを動的に組み合わせてモデルを表示する方式です。
通常モデルデータ(.moc)のほかにパーツデータ(.bkparts)をプログラム上で組み合わせて表示します。
この方式に関してのデータの管理やプログラム上のテクニックなどは、Live2Dの仕様以外のノウハウが重要になるため
それらのルールをCybernoids側におまかせいただくことになります。

モデル製作時
    パーツの作成には必須ではありませんが標準的なルールがあります。
    パーツの書き出しはmoc書き出しとは別になります。

モーション製作時
    Animatorではパーツは読み込めないため、デフォルト状態のモデルを通常のmocで書き出して使います。

組み込み時
    ドキュメントを準備中です。

メリット
    ・モデルの組み合わせが大幅に増える
    ・必要なデータのみを使うことができる。

デメリット
    ・他の方式よりもモデル作成、組み込みのコストが増大する。

アバター方式(カスタム)

表示するパーツを動的に組み合わせてモデルを表示する方式です。
こちらはデータの運用やプログラム上のルールを開発者が任意に決める方式です。
データ作成まではツールで支援しますが、それをどうやって使うかは自由になります。
Live2Dアバター案件が初めての場合は標準の方を推奨します。

Comments