UnityのPostProcessing機能のV2について

今回はUnityのPostProcessing機能のVersion2について見ていきたいと思います。

以前にもImage Effectsに替わるPostProcessingStack機能について見ていきましたが、こちらはPostProcessingのVersion1でした。

UnityのStandardAssetsのImageEffectsは便利ですが効果を複数組み合わせるのが不便です。新しいバージョンのUnityではPostProcessingStackをお勧めしているのでそちらを使ってみました。

Version1からVersion2になったことで設定の仕方等が変わっている為、改めてPostProcessingの機能を見て使ってみたいと思います。

個々のエフェクトについては設定項目が変わるものの効果についてはVersion1と同じものもあるので上のリンク先の記事も参照してみてください。

スポンサーリンク

PostProcessingV2

PostProcessingのV2はPost Process Volumeにポストプロセスの設定をし、カメラにPost Process Layerコンポーネントを取り付けレイヤーを指定してどのポストプロセスの設定を使うかを決めます。

設定はPost Process Volumeで、実際の描画をするカメラではどの設定のPost Process Volumeを使うかを指定するという感じですね。

PostProcessingV2を使ってみる

それではPostProcessingのV2を使ってみましょう。

まずはヒエラルキー上で右クリック→3D Object→Post-process Volumeを選択します。

Post-process VolumeがPostProcessingの設定をするPostProcessingProfileを設定するゲームオブジェクトになります。

空のゲームオブジェクトにコライダとPostProcessing Volumeコンポーネントを取り付けても同じように作れると思います。

PostProcessingVolumeインスペクタ

Post-process VolumeゲームオブジェクトのPost-process VolumeのProfileには設定ファイルであるPost Processing Profileを設定する事になります。

Post Processing Profileの作成

Assetsフォルダで右クリック→Create→Post-processing Profileを選択し、名前をMyPost-processing Profileにします。

Version1のPostProcessing機能を使っていた方はPost-processing Profile項目が二つ表示されるので以前と違うファイルの方を選びます。

Post-processing Profileのインスペクタ

設定ファイルであるMyPost-processing ProfileのインスペクタでAdd effect…ボタンを押すと個々のエフェクトの設定を追加する事が出来ます。

Post-processing Volumeインスペクタの設定

設定ファイルのMyPost-processing Profileが出来たのでPost-processing Volumeのインスペクタの設定をしましょう。

Post Process VolumeのゲームオブジェクトにはPost Process Volumeだとわかるレイヤーを設定します。

後からカメラに取り付けたPost Process Layerからこのカメラで使用するポストプロセスの機能をレイヤーで指定する事になります。

次にPost Process VolumeコンポーネントのProfileにMyPost-processing Profileをドラッグ&ドロップします。

PostProcessingVolumeの設定

Post-processing VolumeゲームオブジェクトにはBox Colliderが取り付けてありますが、これはポストプロセスの効果をBox Colliderの範囲内でだけ適用したい時に使用します。

Post Process VolumeのIs Globalにチェックをした場合は範囲に関係なく適用されますが、チェックをしない場合はBox Colliderの範囲に指定するカメラが入った時にポストプロセスが適用されます。

例えばPost Process Volumeにビグネット効果を加えてIs Globalのチェックを外しPost-processing Volumeゲームオブジェクトの範囲内にカメラが来た時だけポストプロセスの効果が表れます。

Post Process Volumeの範囲内にカメラが入った時

上のような感じです。

Post Process Volumeの設定値

Post Process Volumeの設定値を見ていきます。

Is Globalは範囲関係なく効果を出すかどうか
Blend Distanceはブレンドをする距離でコライダ内で完全にエフェクト効果を出しますが、それまでの徐々に変化させる距離がBlend Distanceになります。
Weightは効果のウエイト
Priorityは優先度で数値が大きいほど優先度が高くなります。
ProfileはポストプロセスのProfileを設定します。

これでPost-processing Volumeゲームオブジェクトの設定が出来ました。

カメラの設定

次はカメラの設定をしていきます。

Main CameraのインスペクタのAdd ComponentからRendering→Post Process Layerを取り付けます。

カメラにPost Process Layerを取り付け

Volume BlendingのTriggerにはMain Camera(最初から設定されている)を設定し、LayerにはPost-processing Volumeゲームオブジェクトで設定したPostProcessingレイヤーを設定します。

Post Process Layerの設定値

Volume Blendingはポストプロセスエフェクトのブレンディングに関する設定で、

Triggerは何をトリガーにしてブレンディングするか?Layerはブレンドするポストプロセスボリュームのレイヤーを指定します。
Anti-aliaslingはアンチエイリアシングはギザギザを滑らかに表示する設定です。

Anti-aliaslingの詳しい情報はUnityのWikiの

Post Processing Stack. Contribute to Unity-Technologies/PostProcessing development by creating an account on GitHub.

を参照してみてください。

Stop Nan Propagationを有効にすると無効なピクセルが発生した場合にポストプロセスが適用される前に黒のピクセルで置き換え不具合が出ないようにします。

Toolkitは指定したモードの画像ファイルを出力するボタンです。

Export frame to EXR…はカメラの現フレーム映像を画像ファイルに保存します。

Full Frameはそのままカメラに映った画像をエクスポートします。
Disable post-processingはPostProcessingを無効にした画像をエクスポートします。
Break before Color Grading(Linear)はカラーグレーディング(色補正)が行われる直前の画像をエクスポートします。
Break before Color Grading(Log)はLogエンコードした画像をエクスポートします。

Break before Color Gradingは実際のカメラを使っている人は詳しいかも(わたくしにはわかりません)。

これでポストプロセス効果の設定ゲームオブジェクトであるPost-processing VolumeとPost Process Layerを取り付けポストプロセス効果を加えた描画をするカメラが出来上がりました。

Post-processing Profileのエフェクト設定

ポストプロセスの設定が出来ましたので、次はPost-processing Profileに設定する事が出来る個々のエフェクトについて見ていきましょう。

Ambient Occlusion

Ambient Occlusionは環境光を遮って部分的に暗くしリアルな影の効果を出します。

PostProcessingV2AmbientOcclusion

ModeのScalable Ambient Obscuranceは以前のレンダリングパイプラインを使った昔のモード、Multi Scale Volumetric ObscuranceはSRPを使ったモードです。
Intensityはアンビエントオクルージョンの強度
Radiusはアンビエントオクルージョンの半径(Scalable)
Qualityはアンビエントオクルージョンの品質(Scalable)
Thickness Modifierはアンビエントオクルージョンの厚さの調整値(Multi)
Direct Lighting Strengthは直接光の強さ(Multi)
Colorはアンビエントオクルージョンの色合い
Ambient Onlyはアンビエントオクルージョンが周囲の照明のみに影響を与えます(Defferedレンダリングパイプライン+HDRが有効の場合のみ)。

実際に設定を変えてScalable Ambient Obscuranceを使ってみましょう。

Ambient Occlusion Scalable

上のような設定で壁や地面の繋ぎ目等に影が差しました。

Multi Scale Volumetric Obscuranceを使うと、

PostProcessingV2MultiScaleVolumetricObscurance

上のような設定でアンビエントオクルージョン効果が出ました。

ただわたくしの環境のせいかわかりませんが、Colorは色を変えても特に変化が出ませんでした。

Auto Exposure

Auto Exposureは明順応(暗い所から明るい所に移動)と暗順応(明るい所から暗い所に移動)効果を出すための設定です。

例えば明順応で言えば暗い所から明るい所にパッと出ると目がくらむような感じになって明るい所に目が慣れるまで少しかかります。

そんな露出の動的な効果を出すのがAuto Exposureです。

PostProcessingV2Auto Exposureの設定

Exposureは露出に関する設定です。

Filteringは平均輝度を計算する時の範囲を指定します。
Minimum(EV)は最小平均輝度
Maximum(EV)は最大平均輝度
Exposure Compensationはシーンの中間のグレー値

Adaptationは適応の設定です。

TypeのProgressiveの場合は徐々に適応させ、Fixedは一気に露出が変わります。
Speed Upは暗い所から明るい所への適応速度
Speed Downは明るい所から暗い所への適応速度

それでは設定して試してみましょう。

効果がわかりやすく極端に設定してみました。

PostProcessingV2AutoExpouseの設定

実際に暗い所から明るい部分にカメラを移動させると、

PostProcessingV2AutoExpouseのサンプル

上のような感じで徐々に順応していくことがわかりました。

Bloom

Bloomは光の効果を加えます。

PostProcessingV2Bloom

Bloomはブルームの設定です。

Intensityは光の強さ
Thresholdは輝度の閾値
Soft Kneeは下限と上限の閾値の間を緩やかに移行させる設定で、0はハード閾値、1はソフト閾値
Clampはブルームの量を制限する為のピクセルの制御値を設定します。
Diffusionはスクリーンの解像度に依存しない方法でベール効果の範囲を設定します。
Anamorphic Ratioは垂直方向、水平方向のアナモフィック比を指定し、アナモフィックレンズの効果を出す設定です。
Colorはブルームの色合いを指定します。
Fast Modeにチェックを入れるとブルームの質を落として処理を早くします。

Dirtenessは汚れの設定です。

Textureは汚れとして使用するテクスチャを指定します。
Intensityは汚れの強度です。

それではBloomを設定し試してみましょう。

PostProcessingV2Bloomのサンプル

上のような感じになりました。

汚れのテクスチャにまったく関係ない矢印のテクスチャを設定しているので変な感じになってますね・・・。

Chromatic Aberration

Chromatic Aberrationは色収差でフリンジ効果を出します。

PostProcessingV2Chromatic Aberration

Spectral Lutはカスタムのフリンジカラーに使用するテクスチャを指定。
Intensityは強度
Fast Modeにチェックを入れると効果が低下しますが高速処理になります。

実際に設定して試してみると、

PostProcessingV2ChromaticAberrationのサンプル

上のような感じで手の辺りにフリンジ効果が現れました。

Color Grading

Color Gradingは色合いや輝度を調整する事が出来ます。

PostProcessingV2ColorGrading

ModeのHigh Definition Range(HDR)は高精度、Low Definition Range(LDR)は低精度、Externalは外部で作成したLUT(LookUpTexture)を使ったモードになります。
LookUpTextureはLUTのテクスチャを指定します(LDR)
ContributionはLUTのどの部分が貢献するか(LDR)

TonemappingはHDR画像を適した範囲に再マッピングする設定です。

ModeのNoneは再マッピングをしない、Neutralは色相と輝度を最小限に、ACESはAcademy Color Encoding Systemを使って、Customは設定値を使って再マッピングします。

White Balanceは白色を白く見せる為のバランス調整?の設定です。

Temperatureはカスタムの色温度を設定します。
Tintは色合いを補正します。

Toneは全体の調子の設定です。

Post-explosure(EV)は全体の露出の調整です(HDR)。
Color Filterは色を掛けます。
Hue Shiftは色合いをシフトします。
Saturationは色の強さを飽和します。
Contrastは輝度の調整です。

Channel MixerはRGBのチャンネル毎の色の調整設定です。RGBのチャンネルを選択し、それぞれのチャンネルでRGBの影響を調整出来ます。

Trackballsは色相を色調の範囲内にシフトさせる為の設定です。

Liftは暗い色調の調整
Gammaは中間色の調整
Geinはハイライトの調整

Grading Curvesは色相、彩度、明度をカーブを使って特定の範囲内に制御する為の設定です。

実際に設定をして試してみましょう。

PostProcessingV2ColorGradingのサンプル

上のようになりました。

Depth Of Field

Depth Of Fieldはカメラのピントが合っている部分だけを詳細にし、他をぼかす効果です。

PostProcessingV2DepthOfField

Focus Distanceはフォーカスを当てる距離
Apertureは絞りの設定
Focal Lengthは焦点の距離
Max Blur Sizeはぼかしのサイズ設定です。

実際に設定して試してみると、

PostProcessingV2DepthOfFieldのサンプル

上のように焦点が合っている部分ははっきり見え、それ以外はぼかされています。

Grain

Grainは粒子を画面上に表示させる効果があります。

PostProcessingV2Grain

Colorsにチェックを入れると色付きの粒子が表示されます。
Intensityは強度
Sizeは粒子のサイズ
Luminance Contributionは輝度にどの程度寄与するかの設定

設定をして試してみましょう。

PostProcessingV2Grainのサンプル

上のようになりました。

Lens Distortion

Lens Distortionはレンズから見た歪みのような効果を出すことが出来ます。

PostProcessingV2LensDistortion

Intensityは強度
Y Multiplierは強度にかけるY軸上の数値
X Multiplierは強度にかけるX軸上の数値
Center Xは歪みのX軸の中心点
Center Yは歪みのY軸の中心点
Scaleはスケール調整値

設定をして試してみましょう。

PostProcessingV2LensDestortionのサンプル

上のようになりました。

Motion Blur

Motion Blurは動きのある物体をぼかすことが出来ます。

PostProcessingV2MotionBlur

Shutter Angleは回転シャッターの角度で値が大きいとぼかしが大きくなります。
Sample Countはサンプリングの回数

設定をして試してみると、

PostProcessingV2MotionBlurのサンプル

上のようになりました。

Screen Space Reflections

Screen Space Reflectionsは反射面に微妙な反射効果を出します。

ただScritable Rendering Pipeline(SRP)では利用出来ず、依然のパイプラインのDefferdでのみ使用できます。

PostProcessingV2ScreenSpaceReflections

Presetは品質のプリセットを選択出来ます。Customの場合は設定値を設定します。
Maximam Iteration Countは最大の反復回数(Custom)
Thicknessはレイの厚さ(Custom)
Resolutionは内部バッファサイズ
Maximam March Distanceは反射の描画を停止するまでの距離
Distance Fadeは近い距離の平面の反射を弱める値
Vignetteは画面の端に近い反射を消すための値

実際に設定をして試してみましょう。

PostProcessingV2ScreenSpaceReflectionsのサンプル

上のようになりました。

Vignette

Vignetteはカメラの外枠の方にカバーを被せたような効果を出します。

PostProcessingV2Vignette

ModeのClassicは通常のビネット、Maskはマスクを被せたような感じになります。
Colorはビネットの色
Centerはビネットの中心点(Classic)
Intensityは強度(Classic)
Smoothnessは境界の滑らかさ(Classic)
Roundnessは四隅の丸みの設定で数値を大きくすると丸みが大きくなります。(Classic)
Roundedにチェックを入れるとウインドウのアスペクト比にかかわらず縦横の比率が同じになります。(Classic)
Maskはマスクに使用するテクスチャを設定(Mask)
Opacityはマスクの不透明度(Mask)

それでは設定して確認してみましょう。

PostProcessingV2Vignetteのサンプル

上のようになりました。

終わりに

PostProcessingのVersion2の機能について見てきましたが、Version1の設定の仕方と多少変わるものの機能としてはほとんど同じですね。

参考サイト

UnityWiki―Post Processing―

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます