CubismParameterStore

最終更新: 2020年1月17日

概要

CubismParameterStoreを使用することで、CubismModelのパラメータとパーツの値を保存/復元することが出来ます。

CubismParameterStoreを使用しない場合、Expressionなどで値を加工した結果が正しいものにならないことがあります。

Expressionなどの値の操作を復元~保存の間で行った場合、値を操作した結果が保存されるため、復元された操作後の値に加算/乗算してしまい、期待通りの結果になりません。
値の操作を復元~保存の外で行う場合、値を操作する前の状態が復元されるため、その後の加算/乗算による値の操作が適正な結果となります。

該当のチュートリアル記事は こちら をご覧ください。

CubismModelのパラメータとパーツの値を保存/復元するには以下の処理を行っています。

  1. 保存/復元するパラメータとパーツの参照を取得
  2. パラメータとパーツの値を保存
  3. パラメータとパーツの値を復元

保存/復元するパラメータとパーツの参照を取得

CubismParameterStore.OnEnableでCubismModelのパラメータとパーツへの参照をキャッシュします。

if(DestinationParameters == null)
{
    DestinationParameters = this.FindCubismModel().Parameters;
}

if(DestinationParts == null)
{
    DestinationParts = this.FindCubismModel().Parts;
}

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

パラメータとパーツの値を保存

モデルの現在のパラメータとパーツの値を保存します。
値を保存するタイミングはアニメーションを適用した後、Cubismの各種コンポーネントで値を操作する前に行います。

// パラメータ値をセーブ
for(var i = 0; i < _parameterValues.Length; ++i)
{
    _parameterValues[i] = DestinationParameters[i].Value;
}

// パーツOpacity(不透明度)をセーブ
for(var i = 0; i < _partOpacities.Length; ++i)
{
    _partOpacities[i] = DestinationParts[i].Opacity;
}

この処理は`CubismParameterStore.SaveParameters()`で行います。

パラメータとパーツの値を復元

保存したパラメータとパーツの値を復元します。
値を復元するタイミングは、アニメーションを適用する前に行います。

// セーブしたパラメータ値を設定
for(var i = 0; i < _parameterValues.Length; ++i)
{
    DestinationParameters[i].Value = _parameterValues[i];
}

// セーブしたパーツOpacity(不透明度)を設定
for(var i = 0; i < _partOpacities.Length; ++i)
{
    DestinationParts[i].Opacity = _partOpacities[i];
}

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

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。