CubismParameterStore
最終更新: 2020年1月17日
概要
CubismParameterStoreを使用することで、CubismModelのパラメータとパーツの値を保存/復元することが出来ます。
CubismParameterStoreを使用しない場合、Expressionなどで値を加工した結果が正しいものにならないことがあります。
Expressionなどの値の操作を復元~保存の間で行った場合、値を操作した結果が保存されるため、復元された操作後の値に加算/乗算してしまい、期待通りの結果になりません。
値の操作を復元~保存の外で行う場合、値を操作する前の状態が復元されるため、その後の加算/乗算による値の操作が適正な結果となります。
該当のチュートリアル記事は こちら をご覧ください。
CubismModelのパラメータとパーツの値を保存/復元するには以下の処理を行っています。
- 保存/復元するパラメータとパーツの参照を取得
- パラメータとパーツの値を保存
- パラメータとパーツの値を復元
保存/復元するパラメータとパーツの参照を取得
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()`で行っています。
この記事はお役に立ちましたか?
はいいいえ