05. ポーズの設定

概要

ここではパーツ切り替えを使ったポーズの変更について説明します。
ポーズの変更は主に腕の切り替えなどに使われます。サンプルでもそのように使っています。
基本的にはパーツの表示切り替えです。ライブラリのマニュアルを御覧ください。
ALive2DModelクラスのsetPartsOpacityなどを使っています。

L2DPoseクラス

サンプルではL2DPoseクラスを使って、ポーズの切り替えをスムーズにしています。
必要なのは設定ファイルの読み込みと更新です。

static L2DPose load( byte[] buf )

設定ファイルを読み込みます。

設定したL2DPoseインスタンスを返します。

バイト配列からの読み込みが基本ですが、プラットフォームごとに使いやすいようにオーバロードしてあることがあります。

例えばJava版では同じメソッドでInputStream型からでも読み込むことができます。

void updateParam( ALive2DModel model )

モデルに変更を適用します。

設定に従ってパーツの透明度を設定します。

毎フレーム呼ぶ必要があります。

JSON設定ファイルについて

設定ファイルはJSONで記述されています。
そのため、テキストエディタでの確認や仕様の拡張が容易になっています。

仕様

JSONスキーマ

サンプルはこちら

原理について

モーションファイルから設定できるのはパラメータのみになります。
ですがパラメータとして設定してもパーツの透明度は操作できません。
それを補助する仕組みがこのL2DPoseクラスです。
Animatorでパーツの透明度にキーを打つと、"VISIBLE:XXX"(XXXはパーツID)というような形で書きだされます。
このモーションを再生すると"VISIBLE:XXX"というパラメータは内部で確かに変化するのですが、このままでは透明度は変化しません。
モデルの更新はライブラリではなく外部のプログラムで行う必要があります。
具体的には"VISIBLE:XXX"パラメータを読み取って、setPartsOpacityで透明度を設定します。
( setPartsOpacityで設定する値はパラメータとは呼びません )