【Unity備忘録】 ポストプロセスの始め方
Unityで一部のオブジェクトを光らせたかったので、ポストプロセスの始め方を調べてみました。この記事は初学者向けの備忘録で、私のように古いバージョンのUnityを使っている方には参考になるかと思います。Unity2019.4、Built-in RP向けの内容です。調べ始めたときに、URPやHDRPとは手順が異なるため最初は戸惑いました。
ポストプロセスの詳細についてはReferencesに記載している、Post Processing Stack v2のマニュアルを参照すると良さそうです。英語ですが。
環境
Unity 2019.4.40f1 / Built-in RP / Post Processing 3.2.2
Windows 10
ポストプロセスの使用例
Bloomで窓や電灯、星などを発光させています。
Color SpaceをLinearに
まずは、Edit> Project Setting> PlayerでColor SpaceをLinearにします。ここをリニアにしないと色や明るさのコントロールしづらくなります。詳しくはUnityマニュアルの”リニアのワークフローとガンマのワークフロー”をご参照ください。
Post Processingパッケージのインストール
Built-in RPではPost Processingがあらかじめインストールされていないので、Package ManagerでPost Processingをインストールする必要があります。
Window> Package ManagerからPackage Managerを開き、Unity RegistryからPost Processingを探します。ダイアログ左下のボタンからインストールします。
Layerを追加
Edit>Project Settings>Tag and Layers>Layersで空いているUser Layerに”PostProcessing”などを設定します。
カメラにPost Processingのコンポーネントを追加
Main Camera(任意のカメラ)でAdd Componentして、Post Processingを追加します。インスペクターに追加されたPost Processing Layer > Volume blending > Layerのプルダウンから”PostProcessing”レイヤーを選択します。<ここ重要
Defaultレイヤーでもポストプロセスを効かせることはできますが、以下のアラートがでます。パフォーマンスが悪くなるので、止めた方が良いようです。
ボリュームブレンディングプロセスが遅くなるので、”Everything”や”Default”を使用しないでください。最高のパフォーマンスを得るために、ポストプロセスボリュームを独自の専用レイヤーに配置してください。
Post-process Volumeを作成
ヒエラルキーで右クリック(または+ボタンから)でPost-process Volumeを作成します。
Post-process Volumeのインスペクターで、Layerを上記で作成した”PostProcessing”レイヤーにセットします。<ここ重要
続いて、Post-process VolumeコンポーネントのProfileが”None (Post Process Profile)”になっていれば、Newを押しPost-process Volume Profileが新規に作成されセットされます。Profileファイルは、シーンファイルフォルダ以下に作成されます。
Bloomエフェクトを適用する
Post-process Volumeコンポーネントで、Add Effectを押します。今回はオブジェクトを光らせたいので、Bloomを選択します。
Bloomエフェクトの調整例
追加されたBloomコンポーネントの設定を以下のようにしてみました。
マテリアルのEmissionを設定する
ところが、このままではBloomで発光しません。
BloomのThresholdを下げると床など明度が高いところ全体から発光してしまいます。狙ったところだけを発光させたいです。
そこで、マテリアルのEmissionの数値を調整します。ここではStandardシェーダーを使用しています。単にテクスチャが貼ってあるだけでは不十分で、HDRと書かれたところをクリックし、Intensityを1. 0以上にします。ここに気がづかず苦労しました。(EXR画像などで1.0以上の値があれば発光する?)
以上の手順で、窓や電灯、星などを発光させることができました。
お疲れ様でした!
References
以下のサイトを参考にさせていただきました。ありがとうございました。
Discussion