▶ Animatable Volume Component
April 14, 2024 · View on GitHub

Animatable Volume Component provides an interface for animating the URP/HDRP PostProcessing Volumes. Use this component to give your game more interactive and dynamic look.
For English README, please take a look at: 👉 README_EN.md
Animatable Volume Component は、URP 及び HDRP のポストプロセス Volume をアニメーションさせるためのインターフェースを提供します。
このパッケージを使用して、より臨場感のあるシーンや演出を作ることができます。
特徴
Animatable Volume Component 以下の特徴があります:
- 各ポストプロセスのパラメータに対して、いつもの操作で簡単にアニメーションのキーを打ち、再生させることが出来る
- コード分析・自動生成により、
- Unity のバージョンごとのパラメータ変更を吸収できる
- カスタムな
VolumeComponentに対してもアニメーションさせることができる
- ツール導入前後、アニメーション時以外の Volume の操作は一切変わらない
導入
Github レポジトリ の右サイドバーの Releases から、最新版の unitypackage をダウンロードして、プロジェクトにインポートしてください。
使い方
この節では、 Animatable Volume Component を使用して、ポストプロセスの各パラメータをアニメーションさせる方法を説明します。
下記の手順でアニメーションを作成します:
- (一度のみ)アニメーション用の補助コンポーネントの自動生成
- 生成後は特に意識して使う必要はありません
- アニメーション用の補助コンポーネントを Volume のゲームオブジェクトにアタッチ
- アニメーションキーイング
0. (下準備) 補助コンポーネントの自動生成
本コンポーネントの UnityPackage を導入後、メニューの Tools > Animatable Volume > Animatable Volume Wizard を選択します。下記のようなポップアップが表示されます。

プロジェクト内に存在する
VolumeComponentのリスト
アニメーションさせたい VolumeComponent にチェックを入れ、[生成]ボタンを押して、VolumeComponent に対応した補助コンポーネント(Animatable + 元のコンポーネント名)を生成します。

これでアニメーションをさせるための下準備は完了です。
1. 補助コンポーネントのアタッチ
アニメーションをさせたい Volume のゲームオブジェクトに、Animator 及び AnimatableVolumeHelper をアタッチします。

AnimatableVolumeHelper のインスペクターの[Add Corresponding Animatable Component]を押して、各 VolumeComponent に対応した補助コンポーネントを追加します。

補助コンポーネントはランタイムの Profile にのみ作動するので、AnimatableVolumeHelper の[Create Runtime Profile]を押して、Profile アセットのコピーを生成します。 (自動で生成される場合があります)

※ 備考:AnimatableVolumeHelper は Start() 時に自動でランタイムの Profile を生成しますので、[Create Runtime Profile]はエディターで編集する時のみ必要です。
※ 備考2:補助コンポーネントは主にアニメーション記録用ですので、アタッチ後は特に操作は必要ありません
2. アニメーションキーイング
補助コンポーネントをアタッチ後、後はいつものアニメーションの付け方と同じです。
アニメーションウィンドウを開き、アニメーションさせたい時間点に、Profile の値を設定して、キーを打っていきます。

キーを打ち終わった後、アニメーションをプレビューして、出来を確認します。

アニメーションに問題が無ければ、アニメーションをアニメーターコントローラーに組み込んで、ゲームを実行すると再生されます。
Timeline でのアニメーションキーイング
また、同じやり方で Timeline のアニメーショントラックにポスプロの各パラメータを直接キーイングすることもできます。
レコードボタンを押して、Profile の値を設定すると、キーを打てます。

実装詳細
この節では、AnimatableVolumeComponent の実装について説明します。
URP 及び HDRP のポストプロセスのパラメータをアニメーションする際の難点として、パラメータを保持する VolumeProfile 及び各ポストプロセスの VolumeComponent は ScriptableObject のため、技術上 Animation でキーが打てません。
これに対処するために、このパッケージは各 VolumeComponent の MonoBehaviour 版の補助コンポーネントを自動で生成します。例えば、Bloom を検出したら、AnimatableBloom という MonoBehaviour を生成します。
MonoBehaviour はアニメーションができますので、MonoBehaviour にアニメーションをさせ、LateUpdate() 時に VolumeComponent に反映させることで、間接的に VolumeComponent のパラメータをアニメーションさせることができます。
制限
Animatable Volume Component は下記の既知の制限があります:
- AnimationCurve を始め、class のパラメータをアニメーションさせることは出来ません
- Unity のアニメーションシステムの制限です。カスタムポストプロセスの場合、class の代わりに struct を使用してください
- Unity のアニメーションシステムの制限です。カスタムポストプロセスの場合、class の代わりに struct を使用してください
- URP 及び HDRP のポストプロセス
LiftGammaGainのアニメーションキーを打つ時に、時々画面がチラチラすることがありますLiftGammaGainのエディタとの相性が悪いようです。再生時は問題ありません