
ゲーム制作者
ゲームを作っていると言うと何故かアニメと漫画にも詳しいとレッテルを貼られる被害者の会の皆さんこんにちは。そりゃ鬼滅ぐらいは知ってますが呪術廻戦もチェンソーマンも観てないのでキャラクターの名前とか出されても答えようがないです。何だレゼって?「今期おすすめのアニメは何ですか?」とか聞かれても何が放送されているのかすら知らないので聞かないでください。でもフェルン可愛い。
東京ゲームダンジョン11
2/8(日)に東京・浜松町の東京都立産業貿易センターで開催される東京ゲームダンジョン11に制作中のリズムゲーム「Under A Groove」を出展します。
今回は2,3Fの2フロワーで開催されていますが、私のブースは2Fの【2G-13】となっています。

東京ゲームダンジョンへの出展は去年夏の東京ゲームダンジョン9以来、通算4度目となるので出展自体はかなり慣れてきましたが、今回は私のブースの周りに有名なタイトルが多くていつも以上に埋没してしまわないか心配です。
隣や眼前のブースにパブリッシャーやらマスコミやらサークルのファンやらが集まって和気あいあいと談笑しているのを横目にポツンと座っている姿が想像できますが、今回の出展を終えると次の出展まで大きく間が空きそうなので、とりあえず配布用に用意したクリアファイル、缶バッチをすべて配り終える程度に頑張りたいと思います。
PostProcessingStack
今回はRender PiplineにBuilt-inを指定している時のお話となります。
Unityではカメラ映像に対してPostProcessingStackを利用してグレイスケール化やBloomなどのエフェクトをかけることが出来ます。
手順としてはエフェクトをかけたいカメラ側にPost-Process Layerのコンポーネントをアタッチし、任意のオブジェクト(空オブジェクトでも可)にPost-Process Volumeのコンポーネントをアタッチ、Post-Process Volumeのコンポーネント側に「Grayscale」や「Bloom」などの効果を追加して行きカメラにエフェクトを掛けていきます。
ここら辺の手順はこのブログでも紹介しているので参考にしてください。
UnityのPostProcessingStackはとても便利で使いやすいですが、あくまで「カメラが描画した映像に対してエフェクトを適用される」ものなので、基本的には映像の一部だけとか特定のオブジェクトだけを絞ってエフェクトを適用することはできません。
もしポストプロセスの効果を限定的にしたい場合は映像を撮影するカメラを別にしてカメラ単位にポストプロセスを分ける必要があります。
例えば下のようなゲーム画面にて

遠くのオブジェクト(山や空)に対しては距離感を出すためにFogエフェクトを掛けたいが、手前のオブジェクトに対してはコミックチックな表現のためにエッジ検出したいと考えた場合、一つのカメラで捉えた映像でそれを賄うことはできないので、遠景用と近景用でカメラとオブジェクトを分け、それぞれでポストプロセスのエフェクトを掛けることになります。

近景用カメラで捉えた映像

遠景用カメラで捉えた映像
レイヤー分けとプロファイル分け
しかしカメラを分けてそれぞれにPost-Process Layerのコンポーネントをアタッチ、Post-Process Volumeのコンポーネントをアタッチしたオブジェクトを作成しただけではエフェクト効果を別々に掛けることはできません。
カメラ単位にエフェクトの効果を分けるにはその設定ファイル(プロファイル)とレイヤーを分ける必要があります。
■設定ファイル(プロファイル)
ポストプロセスのエフェクトは場面毎にその効果を使い分け出来るように、設定ファイル(プロファイル)に保持する必要があります。今回の場合は近景と遠景のカメラそれぞれで使いたいエフェクトが異なるため、近景用と遠景用それぞれで設定ファイル(プロファイル)を用意します。
Post-Process VolumeのInspector内にProfile項目がありその右側にNewボタンがあるのでクリックして設定ファイル(プロファイル)を作成します。

■レイヤー
カメラにアタッチされたPost-Process Layerコンポーネントには、シーン内に存在するどのPost-Process Volumeコンポーネントのエフェクト定義を採用するのか、を定義します。
そのためには
- Post-Process Volume側のオブジェクトのレイヤーを近景用のレイヤー(Post-Process)と遠景用のレイヤー(Far-Post-Process)それぞれに設定
- Post-Process Layerコンポーネントの「Layer」の項目に「近景用のレイヤー(Post-Process)」「遠景用のレイヤー(Far-Post-Process)」を指定
します。

Post-Process Volumeのレイヤー

Post-Process Layerの設定
上記の設定を行った後に近景用のPost-Process Volumeにはエッジ検出のポストプロセスを追加し、遠景用のPost-Process VolumeにはFogのポストプロセスを追加。それぞれで別のエフェクトを掛けることが出来ます。

それを重ね合わせるとこんな感じになります。

注意すべき点
近景用と遠景のカメラはDepth値によって近景>遠景となるように設定し、遠景の映像の上に近景の映像が重なって描画されます。
その為、近景側のエフェクト効果は遠景の映像にも掛けられてしまう事になるので、Color Grading(色調補正)などの画面全体に関わるエフェクトはDepth値の高いカメラ側に設定した方が良いです。