Home

Awesome

▶ Animatable Volume Component

AnimationPreview

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. <br/>For English README, please take a look at: 👉 README_EN.md

Animatable Volume Component は、URP 及び HDRP のポストプロセス Volume をアニメーションさせるためのインターフェースを提供します。<br/>このパッケージを使用して、より臨場感のあるシーンや演出を作ることができます。

<img src="./ReadmeImages/AnimatableVolumeComponent_Logo.png" width="750">

<br/><br/>

特徴

Animatable Volume Component 以下の特徴があります:

  1. 各ポストプロセスのパラメータに対して、いつもの操作で簡単にアニメーションのキーを打ち、再生させることが出来る
  2. コード分析・自動生成により、
    • Unity のバージョンごとのパラメータ変更を吸収できる
    • カスタムな VolumeComponent に対してもアニメーションさせることができる
  3. ツール導入前後、アニメーション時以外の Volume の操作は一切変わらない
<br/>

導入

Github レポジトリ の右サイドバーの Releases から、最新版の unitypackage をダウンロードして、プロジェクトにインポートしてください。

使い方

この節では、 Animatable Volume Component を使用して、ポストプロセスの各パラメータをアニメーションさせる方法を説明します。

下記の手順でアニメーションを作成します:

  1. (一度のみ)アニメーション用の補助コンポーネントの自動生成
    • 生成後は特に意識して使う必要はありません
  2. アニメーション用の補助コンポーネントを Volume のゲームオブジェクトにアタッチ
  3. アニメーションキーイング
<br/>

0. (下準備) 補助コンポーネントの自動生成

本コンポーネントの UnityPackage を導入後、メニューの Tools > Animatable Volume > Animatable Volume Wizard を選択します。下記のようなポップアップが表示されます。

 Wizard_1

プロジェクト内に存在する VolumeComponent のリスト

<br/>

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

 Wizard_2

これでアニメーションをさせるための下準備は完了です。

<br/>

1. 補助コンポーネントのアタッチ

アニメーションをさせたい Volume のゲームオブジェクトに、Animator 及び AnimatableVolumeHelper をアタッチします。

 Helper_1

<br/>

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

 Helper_2-all

<br/>

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

 Helper_3-all

<br/>

※ 備考:AnimatableVolumeHelperStart() 時に自動でランタイムの Profile を生成しますので、[Create Runtime Profile]はエディターで編集する時のみ必要です。 ※ 備考2:補助コンポーネントは主にアニメーション記録用ですので、アタッチ後は特に操作は必要ありません

<br/>

2. アニメーションキーイング

補助コンポーネントをアタッチ後、後はいつものアニメーションの付け方と同じです。 <br/>アニメーションウィンドウを開き、アニメーションさせたい時間点に、Profile の値を設定して、キーを打っていきます。

 AnimationKeying

<br/>

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

 AnimationPreview

<br/>

アニメーションに問題が無ければ、アニメーションをアニメーターコントローラーに組み込んで、ゲームを実行すると再生されます。

<br/>

Timeline でのアニメーションキーイング

また、同じやり方で Timeline のアニメーショントラックにポスプロの各パラメータを直接キーイングすることもできます。 <br/>レコードボタンを押して、Profile の値を設定すると、キーを打てます。

 TimelineKeying

<br/>

実装詳細

この節では、AnimatableVolumeComponent の実装について説明します。

URP 及び HDRP のポストプロセスのパラメータをアニメーションする際の難点として、パラメータを保持する VolumeProfile 及び各ポストプロセスの VolumeComponent は ScriptableObject のため、技術上 Animation でキーが打てません。

これに対処するために、このパッケージは各 VolumeComponent の MonoBehaviour 版の補助コンポーネントを自動で生成します。例えば、Bloom を検出したら、AnimatableBloom という MonoBehaviour を生成します。

MonoBehaviour はアニメーションができますので、MonoBehaviour にアニメーションをさせ、LateUpdate() 時に VolumeComponent に反映させることで、間接的に VolumeComponent のパラメータをアニメーションさせることができます。

制限

Animatable Volume Component は下記の既知の制限があります:

  1. AnimationCurve を始め、class のパラメータをアニメーションさせることは出来ません
    • Unity のアニメーションシステムの制限です。カスタムポストプロセスの場合、class の代わりに struct を使用してください<br/><br/>
  2. URP 及び HDRP のポストプロセス LiftGammaGain のアニメーションキーを打つ時に、時々画面がチラチラすることがあります
    • LiftGammaGain のエディタとの相性が悪いようです。再生時は問題ありません