TATIKUNLOG.

主にゲーム作りについて書き留めるブログ。

URPのDepth Of Field(被写界深度)をドキュメントを読みながら使ってみる【Unity】

f:id:tat1kun:20210726231653p:plain

URPのDepth Of Field(被写界深度)のポストエフェクトを見ていく記事です。上の画像のように背景をぼかしたような演出に使えます。

被写界深度については調べると沢山出てきますが、ここではURP上ではどう使ったらどんな感じに見た目が変わるのかを見ていきます。

※今回触るのはURPのPost-processingで、Built-inのPostProcessingStackではありません。

実行環境

Unity 2021.1.15f1

Universal RP 11.0.0

今回の記事で使用しているアセットのリンク

Japanese School Classroom

Japanese School Classroom

本の学校の教室を再現しているアセットです。

本アセットはURPに対応していないので、マテリアルの変換を使ってます。

docs.unity3d.com

Postprocessingのセットアップ

以前に記事にしましたので、リンクを記載しておきます。

tat1kun.hatenablog.com

URPのDepth Of Fieldは二種類ある

URP11.0.0現在、URPのDepth Of FIeldは二種類のぼかしエフェクトが存在しています。 それぞれ、「パフォーマンス重視のGaussian」と「表現力重視のBokeh」って感じでしょうか。

Modeの項目からGaussianとBokehを切り替えることができます。

f:id:tat1kun:20210726204617p:plain

Gaussian

f:id:tat1kun:20210726204553p:plain

プロパティはたった4項目で構成されています。

Start

f:id:tat1kun:20210727000346g:plain

ブラー効果をかけるカメラからの開始距離を指定します。

開始距離が遠くなるので、段々近くの物にはブラーがかからなくなっていってるのが分かります。

End

f:id:tat1kun:20210727000510g:plain

ブラー効果が最大になるカメラからの距離を指定します。

最大になるまでの距離が大きくなっていっているので、値を大きくすると近くの物体に対するブラー効果は弱くなってるのが確認できます。

Max Radius

ドキュメントには遠方のブラーが届く最大半径を設定すると書かれていますが、 ブラー効果の強さを設定する項目だと思います。

0.5~1.5で設定できますが、1より大きくするとノイズが発生することがあるようです。

High Quality Sampling

パフォーマンスとトレードオフぼかしの滑らかさを向上させるオプションです。

フレームデバッガで深度を確認

f:id:tat1kun:20210727000625g:plain

黒い部分は値が0でボケない部分になります。 Start、Endの値をもとに深度値を変換して、その大小で効果の強さを定めているみたいですね。

Frame Debugger

Bokeh

f:id:tat1kun:20210726204804p:plain

ドキュメントにも書かれていますが、Bokehは現実のカメラに近いパラメータで設定を行います。 後半に「Blade~」という設定が3つあるのですが、所謂絞り羽根の設定です。英語でAperture Bladesと呼ぶようです。

絞り (光学) - Wikipedia

Focus Distance

f:id:tat1kun:20210727003652g:plain

焦点距離を設定します。カメラからどのくらいの位置に焦点を合わせるかを設定します。

値を大きくすると遠くに、小さくすると近く合うようになります。

Focal Length

f:id:tat1kun:20210727003717g:plain

カメラのセンサーとカメラのレンズの間の距離をミリ単位で設定します。値が大きいほど被写界深度が浅くなります。

値が大きいほど、よりブラー効果のかかったぼやけた画像になります。

Aperture

f:id:tat1kun:20210727003758g:plain

絞りの比率(F値と呼ばれる)を設定します。値が小さいほど被写界深度が浅くなります。

値が大きいと焦点の合う範囲が広く、小さいと狭くなります。

Blade Count

スライダーを使って、カメラが絞りを形成する際の絞り羽根の枚数を設定します。絞り羽根の数が多いほど、ボケ味が丸くなります。

Blade Curvature

スライダーを使って、カメラが絞りを形成するために使用するダイアフラムブレードの曲率を設定します。 値が小さいほど、絞り羽根が見えやすくなります。値が1の場合、ボケは完全な円形になります。

Blade Rotation

スライダーを使って、ダイヤフラムの羽根の回転を度数で設定します。

Bladeの値を触って確認

f:id:tat1kun:20210727003855g:plain

観察するとボケの形状や角度等、様子が変化しているのが分かります。

終わりに

画像を作るときには、なんかいい感じに見えたらOKって調整を行ってるんですけど、 今回みたいに詳しくパラメータを見ることで調整の参考になったら良いなと思っています。

また、Bladeの表現とか以前のPostProcessingStackV2には無かったはずの実装なので、結構興味深かったです。

動画で表現した方が分かり易いと思い、かなり動画を掲載したため、結構重い記事になってしまいました。 どのくらいが丁度良いか今後見極めないとなあ、と悩んでいます。

参考

docs.unity3d.com

ekulabo.com

Bokehの設定項目について、参考にさせていただきました。

メモ

コードを読んでいると定期的にCoCという言葉が出てきていたのですが、 CoCとはCircle of Confusion(=錯乱円)のことを指しているみたいですね。