原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】カメラ毎に違うPostProcessを適用する(Built-in)

ゲーム制作者

ゲームを作っていると言うと何故かアニメと漫画にも詳しいとレッテルを貼られる被害者の会の皆さんこんにちは。そりゃ鬼滅ぐらいは知ってますが呪術廻戦もチェンソーマンも観てないのでキャラクターの名前とか出されても答えようがないです。何だレゼって?「今期おすすめのアニメは何ですか?」とか聞かれても何が放送されているのかすら知らないので聞かないでください。でもフェルン可愛い。

 

東京ゲームダンジョン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」などの効果を追加して行きカメラにエフェクトを掛けていきます。
ここら辺の手順はこのブログでも紹介しているので参考にしてください。

www.karvan1230.com

UnityのPostProcessingStackはとても便利で使いやすいですが、あくまで「カメラが描画した映像に対してエフェクトを適用される」ものなので、基本的には映像の一部だけとか特定のオブジェクトだけを絞ってエフェクトを適用することはできません。
もしポストプロセスの効果を限定的にしたい場合は映像を撮影するカメラを別にしてカメラ単位にポストプロセスを分ける必要があります。

例えば下のようなゲーム画面にて

 

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

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

 

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

 

レイヤー分けとプロファイル分け

しかしカメラを分けてそれぞれにPost-Process Layerのコンポーネントをアタッチ、Post-Process Volumeのコンポーネントをアタッチしたオブジェクトを作成しただけではエフェクト効果を別々に掛けることはできません。
カメラ単位にエフェクトの効果を分けるにはその設定ファイル(プロファイル)とレイヤーを分ける必要があります。

 

■設定ファイル(プロファイル)

ポストプロセスのエフェクトは場面毎にその効果を使い分け出来るように、設定ファイル(プロファイル)に保持する必要があります。今回の場合は近景と遠景のカメラそれぞれで使いたいエフェクトが異なるため、近景用と遠景用それぞれで設定ファイル(プロファイル)を用意します。

Post-Process VolumeのInspector内にProfile項目がありその右側にNewボタンがあるのでクリックして設定ファイル(プロファイル)を作成します。

 

■レイヤー

カメラにアタッチされたPost-Process Layerコンポーネントには、シーン内に存在するどのPost-Process Volumeコンポーネントのエフェクト定義を採用するのか、を定義します。

そのためには

  1. Post-Process Volume側のオブジェクトのレイヤーを近景用のレイヤー(Post-Process)と遠景用のレイヤー(Far-Post-Process)それぞれに設定
  2. 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値の高いカメラ側に設定した方が良いです。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。