【Unity】CinemachineとPost Processingを組み合わせて使う方法まとめ

CinemachineとPost Processingを組み合わせて使う方法をまとめました。

Unity2018.4.0
Cinemachine2.2.9
Post Processing2.1.7

準備

まず、CinemachineとPostprocessingをPackage Manager経由でインストールします。
Package Managerの使い方は次の記事でまとめているので必要に応じて参照してください。

light11.hatenadiary.com

インストールが終わったらシーンにVirtual Cameraを置いてCinemachineでカメラを操作できる状態にしておきます。
このあたりの手順はCinemachineの記事を参照してください。

light11.hatenadiary.com

ちなみに、ポストエフェクトの簡単な使い方は次の記事にまとめています。
こちらも一読してから本記事を読んでいただくと理解しやすいかと思います。

light11.hatenadiary.com

Post Processing Adapterをインポートする

さて次にPost Processingと連携するためのCinemachineのExtensionコンポーネントをインポートします。
上部メニューからCinemachine > Import Post Processing V2 Adapter Asset Packageを選択します。

f:id:halya_11:20190707231558p:plain

インポート確認画面が表示されるのでImportボタンを押してインポートします。

f:id:halya_11:20190707231622p:plain

まずはメインカメラをセットアップする

さて次にメインカメラのセットアップを行います。
ここまでの手順でメインカメラにはCinemachine Brainがアタッチされているはずです。

f:id:halya_11:20190707232324p:plain

これに加えて、このGame ObjectにPost Process Layerをアタッチします。
Volume blendingのLayerにはPostProcessingを指定しておきます(どのレイヤーでもいいですが)。

f:id:halya_11:20190707232444p:plain

これでメインカメラのセットアップは完了です。

Virtual Camera毎にポストエフェクトを掛ける場合

さてここからは、ポストエフェクトをVirtual Camera毎に掛ける場合と
全てのVirtual Cameraに共通のポストエフェクトを掛ける場合で手順が異なります。

まずVirtual Camera毎に掛ける方法について説明します。
Virtual CameraにPost Processingを適用する場合、Virtual Camera最下部のExtensionsからCinemachinePostProcessingを選択してアタッチします。

f:id:halya_11:20190707232740p:plain

あとはPost-process Profileを作って好きなように設定するだけです。
このカメラ用のProfileがまだない場合はNewボタンを押してProfileを作ります。
Profileが追加されたらAdd effect... から好きなエフェクトを追加します。
今回はビネットを追加してみました。

f:id:halya_11:20190707234204p:plain

再生すると次のようになります。
あくまでエフェクトはカメラごとにかかるため、カメラを切り替えると効果が消えていくことが確認できます。

f:id:halya_11:20190707234111g:plain

すべてのVirtual Cameraに共通のポストエフェクトを掛ける場合

次にすべてのVirtual Cameraに共通のポストエフェクトを掛ける手順を紹介します。

まず、Hierarchyで右クリック > Create > 3D Object > Post-process VolumeからPost-process Volumeオブジェクトを作成します。
次にこのGameObjectのレイヤーをPost Process Layerで設定したもの(今回はPostProcessing)にします。
さらに、Post Process VolumeコンポーネントのIs Grobalにチェックを入れます。

f:id:halya_11:20190707235303p:plain

あとは前節と同様にPost-process Profileを作って好きなように設定するだけです。
今回は色相をずらしました。

f:id:halya_11:20190707235239g:plain

カメラが切り替わっても共通のポストエフェクトがかかっていることが確認できます。

なお、Post-processing Volumeの細かい使い方は本記事では割愛していますので以下の記事を参照してください。

light11.hatenadiary.com

Virtual Camera固有のエフェクトも共通のエフェクトも使いたい

それではVirtual Camera毎に固有のポストエフェクトと共通のポストエフェクトの両方を使いたい場合はどうでしょうか。
これについては固有のエフェクトと共通のエフェクトの種類が異なる場合には両方有効にできます。

f:id:halya_11:20190707235832g:plain

ビネットと色相変更の両方のエフェクトがかかっていることが確認できます。

ただし、固有のエフェクトと共通のエフェクトに種類が同じものが指定されている場合には注意が必要です。
たとえばVirtual CameraにもPost-process Volumeにもブルームが設定されている場合などです。
この場合にはVirtual Cameraに設定されているものが優先され、Post-process Volumeの方は無視されます。

Depth Of Fieldの焦点距離をVirtual Cameraの対象に合わせる

CinemachineとPost processingを組み合わせた時の特徴として、Depth Of Fieldのポストエフェクトを掛けた時に
焦点距離を自動的にVirtual Cameraが設定してくれるという機能があります。

これを使うためにはCinemachine Post ProcessingのFocus Tracks Targetにチェックを入れます。

f:id:halya_11:20190708001718p:plain

この状態でDepth Of Fieldを掛けると、Virtual Cameraの対象に焦点が合うようにFocus Distanceが調整されます。
この機能によりDepth Of Fieldの調整がお手軽にできるようになっています。

f:id:halya_11:20190708001953g:plain

関連

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

参考

unity3d.com