CubismUpdateController

[最終更新日:2020/01/30]

概要

CubismUpdateControllerを使用することで、コンポーネントのLateUpdateの実行順を制御することができます。

CubismUpdateControllerを使用しない場合、コンポーネントの実行順はUnity側で決められるため、実行順によってはExpressionなどの機能が正しく処理されないことがあります。

実行順の制御が不要な場合はこのコンポーネントを用いる必要はありません。

コンポーネントの実行順を制御するためには以下の処理を行っています。

  1. ICubismUpdateableの実装
  2. アクションOnLateUpdateに追加
  3. アクションOnLateUpdateを実行

※ Cubism 3 SDK for Unity では実行順を制御するコンポーネントの指定はハードコーディングされています。

以下ではCubismRenderControllerとCubismEyeBlinkControllerを例として詳細の実行順を制御する手順を説明します。

 

1. ICubismUpdateableの実装

実行順の制御対象となるコンポーネントにてICubismUpdateableインターフェイスを継承し、OnLateUpdateを作成してLateUpdateで行う処理を実装します。

※ CubismUpdateControllerがアタッチされていない場合、OnLateUpdateの処理は実行されません。

 

 

2. アクションOnLateUpdateに追加

CubismUpdateControllerのRefreshで実行順の制御対象となるコンポーネントを取得し、アクションOnLateUpdateに追加します。
CubismUpdateControllerはエディターモードでも実行されるのでプレモードのみ実行するコンポーネントの追加は`Application.isPlaying`のチェックが必要です。

この処理は`CubismUpdateController.Refresh()`で行っています。

現在のSDKでの処理の実行順は以下となります。

  1. ParameterStore.RestoreParameters()
  2. アニメーションの再生
  3. ParameterStore.SaveParameters()
  4. モーション関連(Motion、Fade)
  5. パラメータ操作(Expression、Poseなど)

RestoreParameters()では1フレーム前の値を操作する前の状態に戻りますので、最初で行います。
アニメーション再生とモーション関連では値が上書きされますので、値の操作する前で行う必要があります。

 

3. アクションOnLateUpdateを実行

CubismUpdateControllerのLateUpdateでアクションOnLateUpdateを実行します。

この処理は`CubismUpdateController.LateUpdate()`で行っています。

© 2010 - 2020 Live2D Inc.