URPのDepth Of Field(被写界深度)のポストエフェクトを見ていく記事です。上の画像のように背景をぼかしたような演出に使えます。
被写界深度については調べると沢山出てきますが、ここではURP上ではどう使ったらどんな感じに見た目が変わるのかを見ていきます。
※今回触るのはURPのPost-processingで、Built-inのPostProcessingStackではありません。
実行環境
Unity 2021.1.15f1
Universal RP 11.0.0
今回の記事で使用しているアセットのリンク
日本の学校の教室を再現しているアセットです。
本アセットはURPに対応していないので、マテリアルの変換を使ってます。
Postprocessingのセットアップ
以前に記事にしましたので、リンクを記載しておきます。
URPのDepth Of Fieldは二種類ある
URP11.0.0現在、URPのDepth Of FIeldは二種類のぼかしエフェクトが存在しています。 それぞれ、「パフォーマンス重視のGaussian」と「表現力重視のBokeh」って感じでしょうか。
Modeの項目からGaussianとBokehを切り替えることができます。
Gaussian
プロパティはたった4項目で構成されています。
Start
ブラー効果をかけるカメラからの開始距離を指定します。
開始距離が遠くなるので、段々近くの物にはブラーがかからなくなっていってるのが分かります。
End
ブラー効果が最大になるカメラからの距離を指定します。
最大になるまでの距離が大きくなっていっているので、値を大きくすると近くの物体に対するブラー効果は弱くなってるのが確認できます。
Max Radius
ドキュメントには遠方のブラーが届く最大半径を設定すると書かれていますが、 ブラー効果の強さを設定する項目だと思います。
0.5~1.5で設定できますが、1より大きくするとノイズが発生することがあるようです。
High Quality Sampling
パフォーマンスとトレードオフでぼかしの滑らかさを向上させるオプションです。
フレームデバッガで深度を確認
黒い部分は値が0でボケない部分になります。 Start、Endの値をもとに深度値を変換して、その大小で効果の強さを定めているみたいですね。
Bokeh
ドキュメントにも書かれていますが、Bokehは現実のカメラに近いパラメータで設定を行います。 後半に「Blade~」という設定が3つあるのですが、所謂絞り羽根の設定です。英語でAperture Bladesと呼ぶようです。
Focus Distance
焦点距離を設定します。カメラからどのくらいの位置に焦点を合わせるかを設定します。
値を大きくすると遠くに、小さくすると近く合うようになります。
Focal Length
カメラのセンサーとカメラのレンズの間の距離をミリ単位で設定します。値が大きいほど被写界深度が浅くなります。
値が大きいほど、よりブラー効果のかかったぼやけた画像になります。
Aperture
絞りの比率(F値と呼ばれる)を設定します。値が小さいほど被写界深度が浅くなります。
値が大きいと焦点の合う範囲が広く、小さいと狭くなります。
Blade Count
スライダーを使って、カメラが絞りを形成する際の絞り羽根の枚数を設定します。絞り羽根の数が多いほど、ボケ味が丸くなります。
Blade Curvature
スライダーを使って、カメラが絞りを形成するために使用するダイアフラムブレードの曲率を設定します。 値が小さいほど、絞り羽根が見えやすくなります。値が1の場合、ボケは完全な円形になります。
Blade Rotation
スライダーを使って、ダイヤフラムの羽根の回転を度数で設定します。
Bladeの値を触って確認
観察するとボケの形状や角度等、様子が変化しているのが分かります。
終わりに
画像を作るときには、なんかいい感じに見えたらOKって調整を行ってるんですけど、 今回みたいに詳しくパラメータを見ることで調整の参考になったら良いなと思っています。
また、Bladeの表現とか以前のPostProcessingStackV2には無かったはずの実装なので、結構興味深かったです。
動画で表現した方が分かり易いと思い、かなり動画を掲載したため、結構重い記事になってしまいました。 どのくらいが丁度良いか今後見極めないとなあ、と悩んでいます。
参考
Bokehの設定項目について、参考にさせていただきました。
メモ
コードを読んでいると定期的にCoCという言葉が出てきていたのですが、 CoCとはCircle of Confusion(=錯乱円)のことを指しているみたいですね。