Cubism 2.1から3.0へのフレームワークの変更点について
最終更新: 2019年9月3日
2.1のSDKでは、物理演算や視線追従などの機能はframework内のクラスや、モデルクラスのUpdateにハードコーディングされていました。
3.0以降のCubismComponentsでは、それらの機能の構成を全面的に見直し、それぞれを機能毎にひとつのコンポーネントとして作り変えています。
プロパティの値をInspector上で視覚的に設定ができ、各機能をランタイム上で追加や削除することも容易となっております。
CubismComponents内の各機能のコンポーネントは基本的に以下のような構造になっています。
- コントローラ
- 出力先の指定
- コントローラに処理させる値の入力
コントローラ
これは、CubismComponentsの制御を行う、各機能の根幹のコンポーネントです。
「Cubism[機能名]Controller」という名前が設定されています。
機能に関する各種の設定はこのコンポーネントで設定され、後述するコントローラで処理する値の入力元の指定もここにあります。
コントローラ初期化時に、後述の出力先の指定用のコンポーネントの参照を取得しています。
そのため、参照の取得を外部から呼び出せるようにすれば、出力先用コンポーネントを実行中に追加削除することも可能です。
使用する場合は、生成されたモデルのルートにあるGameObjectアタッチします。
出力先の指定
これは、コントローラが処理した結果を反映させる出力用のコンポーネントです。
このコンポーネントを使う場合は、[モデルのルート]/Parameters/以下のパラメータや[モデルのルート]/Parts/以下のパーツ、
[モデルのルート]/Drawables/以下のメッシュのGameObjectにアタッチします。
このコンポーネントには「Cubism[機能名]Parameter」「Cubism[機能名]Part」「Cubism[機能名]able」という名前が設定されているため、
どのオブジェクトにアタッチすればいいのかを名前から推測することができます。
コントローラに処理させる値の入力
このコンポーネントは、リップシンクで使用するための音量や、視線を追従させるための座標など、
コントローラが処理するための値を入力するコンポーネントです。
2.1ではハードコーディングされていた部分ですが、3.0からはインターフェースを実装して扱うため自由度が高く、
ユーザによるカスタマイズが非常に容易になっています。
using UnityEngine; namespace Live2D.Cubism.Framework.LookAt { /// <summary> /// Target to look at. /// </summary> public interface ICubismLookTarget { /// <summary> /// Gets the position of the target. /// </summary> /// <returns>The position of the target in world space.</returns> Vector3 GetPosition(); /// <summary> /// Gets whether the target is active. /// </summary> /// <returns><see langword="true"/> if the target is active; <see langword="false"/> otherwise.</returns> bool IsActive(); } }
このコンポーネントを使用するには、このコンポーネントを任意のGameObjectにアタッチし、その参照をコントローラにある入力用のプロパティに設定します。