被写界深度

depth-of-field.png

被写界深度とは?

写真の焦点が合っているように見える被写体側の距離の範囲のこと

被写界深度効果とは?

英語だと Depth of field effect
複数の物体が視点から見て色々な距離で置かれてるとします。
フォーカスの合っている範囲では物体がはっきりと見えて
焦点よりも近い、または遠い位置にある物体はぼやけて見える
そういうエフェクトのことです。
コンピュータグラフィックスでこれを表現するには色々と工夫しないといけません。

被写界深度効果の用途

写真や映画で視聴者に注目させたい物体やキャラクターにフォーカスをあててはっきりと描写し、目立たせるのに使います。

このページで使用する用語

foreground 焦点よりも手前の範囲
midground 焦点の合っている、物体がくっきりはっきり見える範囲
background 焦点よりも後ろの範囲
焦点面 plane in focus レンズからの距離
aperture レンズのサイズ

錯乱円…Circle of confusion(CoC)

doff.png
錯乱円の半径はレンズのサイズが大きくなるほど、焦点面の距離が大きくなるほど、大きくなります。
錯乱円のサイズが投影面の解像度より小さければ「焦点が合っている(in focus)」といい、
錯乱円のサイズが投影面の解像度より大きければ「焦点が合っていない(out of focus)」つまりボケてるという。

コンピュータグラフィックスの世界ではデフォルトでは理想的な穴のちいさーい、つまりレンズのサイズが0のピンホールカメラを使っている想定になっている。
なので投影面からシーンに通る光は常に1個だけなのである。
なので被写界深度効果を実現するためには、現実のサイズのあるレンズをシミュレートしてボケを実現しないといけないのである。

錯乱円の計算の仕方

錯乱円のサイズはカメラからオブジェクトまでの距離とカメラのパラメータによって算出できる。

(1)
\begin{align} Coc=|\frac{レンズのサイズ* (focallength*(オブジェクトまでの距離-焦点面の距離))}{(オブジェクトまでの距離*(焦点面の距離-focallength))}| \end{align}
Coc=abs(レンズのサイズ* (focallength*(オブジェクトまでの距離-焦点面の距離))/(オブジェクトまでの距離*(焦点面の距離-focallength)))

錯乱円のサイズはzバッファの値を利用して計算することができます。

被写界深度効果を表現する手法

手法 作者 速さ リアルさ 欠点
Distributing traced rays across the surface of a (nonpinhole) lens (Cook et al. 1984[4]) ★★★
視点を少しずつずらしたfrustumを加算してぼかす手法で被写界深度を表現する…アキュムレーションバッファ [3] ★★ ★★
レイヤー合成によるDOF (Scofield 1994) ★★★
Forward-mapped z-buffer techniques (Potmesil and Chakravarty 1981) ★★★
Reverse-mapped z-buffer techniques (Arce and Wloka 2002, Demers 2003) ★★★ ピクセルがにじむ

レイトレーシングで被写界深度効果を実現する方法[4])

レイをある一点からだけ発するのではなく、レンズの各頂点から発する方法。
この方法はもっとも正確性が高い。
なぜなら現実の光学モデルにもっとも忠実だからである。
その代わり、計算コストがかかります。
同じ方法でモーションブラーやソフトシャドウもリアルに実現できます。
品質はレイの数が多ければ多いほど高品質になります。
もしレイの数が少なかった場合はノイズが出ます。

レイヤー合成によるDOF

Rendering multiple layers,compositing techniques
異なるフォーカスレベルのレイヤーを複数作って重ねることによって被写界深度効果を実現する方法

Forward-mapped z-buffer techniques

ピクセルの色を隣接するピクセルとscatter(散らす)ことによって被写界深度効果を実現する方法
ピクセルが不自然ににじむという欠点がある

Reverse-mapped z-buffer techniques

隣接するピクセルから色のサンプルを集めることによって被写界深度効果を実現する方法


accumulation-buffer dof optics

サポートサイト Wikidot.com accumulation-bufferdofoptics