以下の被写界深度メソッドでは、デスクトップやコンソール プラットフォームでディファード シェーディング レンダラやクラスタ フォワード レンダラを使用して、写真やフィルムによく似た映画のような見栄えを表現します。
シネマティック
シネマティック DOF は、Circle DOF および Bokeh DOF と同様に現実世界のカメラとほぼ同等で、鮮やかな ハイダイナミック レンジ (HDR) コンテンツで円形のボケ (焦点の外れた領域) を表現できます。このメソッドはプロシージャルな Bokeh シミュレーションが使われているため、動的解像度が安定し、アルファ チャンネルのサポートが可能になるとともに、高速かつスケーラブルであり、デスクトップおよびコンソール向けに開発されるプロジェクトに最適化されています。
被写体に焦点を合わせる
美的に優れた被写界深度の効果を実現するためのキーは、被写体に焦点を合わせる方法にあります。対象のショットで被写界深度のセットアップに影響する重要な要素は、次の 3 つです。
-
使用するレンズの 焦点距離 を決定する。
-
適切な 開口 (F 値) を選択する。
-
カメラから 被写体までの距離 を選択する。
これらの設定を調整した際の影響を理解するために、カメラとキャプチャされるシーンを構成する各要素に分解します。
- シーン内の点
-
赤:焦点から外れている
-
青:完全に焦点が合っている
-
緑:かろうじて焦点が合っている
-
-
被写体までの撮影距離 (青点)
-
カメラ レンズ
-
レンズの絞り (値は F 値)
-
レンズの焦点距離
-
フィルムバック / イメージ センサー
- 最終イメージの結果
右側のレンダリングしたイメージはカメラのレンズを通過して反転していることに注意してください。赤は背景の一部であり、焦点が外れていて、緑は前景の一部でわずかに焦点が外れています。
ここには、カメラがキャプチャした対象を表す複数の点 (1) があります。そのカメラには 撮影距離 (2) が定義されていて、この場合は青が被写体です。開口 (4) は焦点が合っていない前景および背景の対象をどの程度ぼかすのかを定義します。最後に、レンズの 焦点距離 (5) は、視野角、つまりイメージにどれほどズームインするのかをコントロールします。
開口
開口 は、F 値でコントロールされる 絞り の直径に基づいて前景および背景の鮮明さまたはぼけを定義します。
-
カメラ レンズ
-
レンズの開口の絞り (F 値)
この図は、絞り (2) が レンズ (1) を通過する光を遮蔽しているところを示しています。つまり開口サイズ (F値) によって通過する光の量が決まり、それによって、撮影時の撮影距離に基づいて前景と背景がぼける度合いがコントロールされます。
開口を構成する要素は、F 値および 絞り の 2 つです。
-
開口 は光が通過する部分の直径です。開口の定義は、焦点距離を F 値で割った数値です。
-
絞り は、光を遮蔽するために使用される複数の羽根で構成される機構です。これは指定した F 値に基づいて開閉します。
レンズの開口は、F 値を大きくすると小さくなる絞りの直径で定義され、被写界深度の効果が浅いのか深いのかをコントロールします。この効果を示す図については、「撮影距離」を参照してください。
開口の仕組みのデモを表示するには、スライダをドラッグして、F 値を 1.4、2.8、5.6 の間で変更してみてください。F 値が小さいと、DOF が浅くなり背景と前景のぼけがきつくなります。F 値が大きいと、DOF が深くなり、ぼけは小さくなります。
ここで変更するのは F 値だけで、撮影距離 7m と焦点距離 75mm はともに固定しています。
一般に実際のカメラで開口設定を調整するとき、同時に露出設定も調整して、フィルムバック/イメージ センサーで受ける光量を同じに保つ必要があります。ただし、Unreal Engine では、実際のカメラではないので、F 値と絞りを調整しても、光量はコントロールされません。
焦点距離
焦点距離 はレンズの中心から フィルムバック (またはイメージ センサー) までの距離で、単位はミリメートル (mm) です。
-
カメラ レンズ
-
焦点距離
この仕組みのデモを表示するには、スライダをドラッグしてレンズの焦点距離を 50mm、75mm、100mm の間で変更してみてください。これにより、ショットの視野角 (FOV) が効果的に変化することがわかります。焦点距離が長くなると、FOV は小さくなります。焦点距離の変化はカメラでズームインすることと同様であると考えられます。ただしこれを実行するとき、背景と前景に焦点の外れた領域が目立ってきます。以下の例では、焦点距離を 50mm と 100mm の間で変更したときの結果を確認できます。ショットは前景の全体でほぼ焦点が合って見え、100mm の焦点距離を使用すると、背景はさらに焦点が外れ、前景もわずかにぼけます。
ここのサンプル図ではレンズの焦点距離のみが変わることに注意してください。撮影距離は 7m 、F 値は f/2.8 でともに固定です。
撮影距離
撮影距離 はカメラ レンズの中心から焦点を合わせる被写体までの距離で、焦点面を生み出します。カメラが対象に近づくほど、背景の焦点が外れて、ますますぼけます。
- シーンの焦点
-
赤:焦点から外れている
-
青:完全に焦点が合っている
-
緑:かろうじて焦点が合っている
-
-
撮影距離 (青点)
- カメラ レンズ
この図のデモでは、シーンを構成するオブジェクト (1)、つまり背景、被写体、前景を示します。レンズ (3) から被写体までの距離 (2)、この場合は青点までが撮影距離です。背景と前景の領域は、使用する F 値とレンズの焦点距離に応じてぼけます。
DOF レイヤーを可視化するには、[Viewport (ビューポート)] の [Show (表示)] ドロップダウンから [Advanced] \> [Depth of Field Layers] を選択します。この例では、緑は前景のオブジェクトを表し、黒はオブジェクトに焦点が合っている領域で、青は背景の部分です。
この仕組みのデモを表示するには、スライダをドラッグして、撮影距離を 4m、7m、10m の間で変更してみてください。撮影距離を調整すると、シーンの焦点面 (紫の点線) が変わります。これはショットの焦点が合っている範囲を示します。図の青の参照点は、画像のキャラクターに対応しています。カメラの焦点 (前の黒/灰色領域) をシーンの異なる部分に変えると、背景および前景のオブジェクトの焦点も変化します。4m で始めると、前景のパトカーにはっきりと焦点が合っていて、背景のキャラクターには焦点が合っていません。図の青の参照点は、フィルムバックの前に焦点 (交差部) があることを示しています。7m では、キャラクターに焦点が完全に合っていて、背景と前景の対象物には焦点が合っていません。10m では、バリケード フェンスに焦点が合っていて、前景のキャラクターおよびパトカーには焦点が合っていません。図の青の参照点は、フィルムバックの後方に焦点 (交差点) があることを示しています。これらのように撮影距離が変わると、オブジェクトが前景にあるか背景にあるかによって DOF 効果が増減します。
ここでは撮影距離のみが変更されています。F 値は f/1.4、焦点距離は 75mm で固定されていることに注意してください。
プロシージャルな絞りのシミュレーション
被写界深度の役割は、被写体に焦点を当てることによって、シーン内におけるその重要度を上げることにあります。また同時に、焦点の合っていない領域も同程度に重要となる場合もあります。Unreal Engine 4 の被写界深度は、絞り羽根の枚数と曲率を調整して、レンズの絞りをシミュレートし、ボケ (焦点の外れた領域) の形状を美的にコントロールできます。
パフォーマンス上の理由により、絞りシミュレーションは [Engine Scalability Settings (エンジンの拡張機能設定)] の [Epic] と [Cinematic] でのみサポートされます。これらより低品質の設定では、同じ領域のボケは円形になり、自動露出機能と同様の動作を行い、その結果、絞り羽根のシミュレーションは無効になります。
絞り羽根枚数
絞り (または虹彩) は、ぼけ形状の見た目を美的に伝えるために調整できる羽根から構成されるメカニズムです。使用する羽根の枚数を減らすと絞りの形状が多角形になり、枚数を増やすと絞りの曲率が大きくなり、焦点の合っていないぼけが丸みを帯びてより自然な見た目になります。
最大開口 を増やす (最小 F 値を減らす) と、絞り羽根の枚数はボケの形状に直接影響を及ぼします。根の枚数はボケの形状に直接影響を及ぼします。
開口と最大開口
開口 はレンズの開いた部分で、絞り の直径 (F 値) でコントロールされます。レンズを通過できる光量は開口部のサイズでコントロールされます。開口のサイズを調整すると、焦点面が設定され、焦点の合っている領域の外側の領域でどの程度焦点を合わせる (ぼかす) のかを変更できます。
次の図では開口サイズ (f 値)、最大開口 (最小 f 値)、被写界深度の効果の相関関係を示します。
開口を大きくすると (F 値を小さくすると)、焦点の合う領域が浅くなり、前景と背景で焦点が合わない領域が大きくなります。開口を小さくすると (F 値を大きくすると)、焦点の合う領域が深くなり、前景と背景においてより多くのオブジェクトに焦点が合います。
開口値は好きなだけ小さくできますが、可能な範囲はレンズの最大サイズまでです。最大開口値 (F 値) はレンズの可能な大きさを規定します。これはまた絞り羽根を構成する、羽根のカーブも定義します。開くことができる開口のサイズを制限し、開口のサイズを制限すると、焦点の合っていない領域の大きさを制限できる実効焦点領域が小さくなります。
この例では、絞り羽根枚数 は 5 に設定されています。開口が小さいと、絞り羽根がボケの形状に現れやすくなります。開口を大きくすると (F 値 = 最小 F 値)、ボケの形状が円形になっていきます。
この例では、次の値で Cine カメラ アクタが使用されます。
-
最小 F 値:1.4
-
最大 F 値:4.0
-
絞り羽根枚数:5
-
現在の開口値:1.4 - 4.0
これらの値では、F 値は 1.4 と 4.0 の範囲にある値のみを受け入れます。F 値を大きくして (開口を小さくして) 被写界深度の効果を深くすると、絞り羽根がボケの形状に現れやすくなります。
開口では光量はコントロールされないことに注意してください。実際のカメラのように同時に露出を調整し続ける必要がないようにこのような措置が取られています。
シネマティック DOF 設定
シネマティック カメラ
次の設定は、シネマティック カメラ アクタ専用です。カメラと被写界深度の設定にもアクセスできることに注意してください。
プロパティ | 説明 |
---|---|
Filmback Settings (フィルムバック設定) | |
Sensor Width | フィルムバックまたはデジタル センサーの水平方向のサイズを設定します (単位はmm)。 |
Sensor Height | フィルムバックまたはデジタルセンサーの垂直方向のサイズを設定します(単位:mm)。 |
Sensor Aspect Ratio | 読み取り専用です。センサー ディメンションから計算されます。 |
Lens Settings | |
Min Focal Length | レンズの最小焦点距離を設定します (単位はmm)。 |
Max Focal Length | レンズの最大焦点距離を設定します (単位はmm)。 |
Min FStop | このレンズの最大開口。例えば、f/2.8 レンズでは 2.8 です。絞り羽根の曲率も決まります。 |
Max FStop | このレンズの最小開口。例えば、f/8.0 レンズでは 8.0 です。 |
Diaphragm Blade Count | 絞りメカニズムを構成する羽根の枚数。 |
Focus Settings (フォーカス設定) | |
Focus Method | 使用するカメラのフォーカス メソッドを選択します。
|
Manual Focus Distance | マニュアルでコントロールする撮影距離を設定します。これが利用できるのは、Focus Method が Manual (手動) に設定されているときだけです。 |
Draw Debug Focus Plane | 有効にすると、現在の焦点深度に半透明の面が描画されます。これによって、ショットの焦点の位置を視覚的に把握できるようになります。 |
Debug Focus Plane Color | この設定が有効であると、Draw Debug Focus Plane (デバッグ焦点面の描画) の色を設定します。 |
Smooth Focus Changes | これを有効にすると、補間により撮影距離を滑らかに変更します。無効にすると、焦点の変更はすぐに反映されます。 |
Focus Smoothing Interp Speed | 撮影距離の変更をスムーズに実行するときの補間スピードをコントロールします。このオプションは Smooth Focus Changes (焦点変更のスムージング) が有効ではない場合に無視されます。 |
Focus Offset | 選択したフォーカス メソッドで調整が必要な場合にフォーカスを手動で微調整するために使用できるオフセットを焦点深度に追加します。 |
Current Focal Length | 視野角 (FOV) やズームをコントロールする、カメラの現在の焦点距離をコントロールします。 |
Current Aperture | F 値により現在の開口サイズを設定します。この設定では Min FStop (最小 FStop) と Max FStop (最大 FStop) の範囲内の値のみを受け入れます。 |
Current Focal Distance | Focus Settings (フォーカス設定) で使用される読み取り専用値を表示します。 |
Current Horizontal FOV | Current Focal Length (現在の焦点距離) と Filmback Settings (フィルムバック設定) で使用される読み取り専用値を表示します。 |
ポストプロセス ボリュームとカメラ アクタ
次の設定は Cine Camera アクタ、Camera、および Post Process Volumes で利用できます。
プロパティ | 説明 |
---|---|
Camera Settings (カメラ設定) | |
Shutter Speed (1/s) | カメラ シャッター (秒)。 |
ISO | カメラセンサーの感度です。 |
Aperture (F-stop) (開口 F 値) | カメラ レンズの開口部を定義します。開口は 1/F 値になり、標準的なレンズで最大の開口は f/1.2 です。値を大きくすると DOF の効果が小さくなります。 |
Maximum Aperture (minimum f-stop) | カメラ レンズの開口部を定義します。開口は 1/F 値になり、標準的なレンズで最大の開口は f/1.2 です。値を大きくすると DOF の効果が小さくなります。 |
Number of Diaphragm Blades | カメラ レンズの最大開口を定義し、絞りのカーブをコントロールします。これを 0 に設定すると、直線的な絞り羽根になります。 |
Depth of Field Settings (被写界深度設定) | |
Focal Distance | 被写界深度効果がよく現れる距離。この値は、Unreal の単位 (cm) で測定されます。 |
Depth Blur km for 50% | ピクセルのボケが起きる距離をブラー深度半径の半分の半径で定義します。低コストのアトモスフェリック散乱をエミュレートするときに特に便利です。 |
Depth Blur Radius | アトモスフェリック散乱をエミュレートするためにカメラからの距離に応じて適用する 1080p 解像度における半径 (ピクセル) です。 |
最適化に便利なコンソール変数
DOF の課題は、コンテンツと DOF を使用するゲームの芸術的表現にどれだけ重点を置くのかにより変わります。この点に配慮し、DOF の実装には、プラットフォームごとに最適化するために、多様なコンソール変数が用意されています。
開発者は割り当てられた予算に応じてパフォーマンスを適切にコントロールできます。
-
r.DOF.Kernel.MaxBackgroundRadius: 水平スクリーン空間のバックグラウンド ブラー半径の最大サイズ。
-
r.DOF.Kernel.MaxForegroundRadius: 水平スクリーン空間のフォアグラウンド ブラー半径の最大サイズ。
-
r.DOF.Scatter.MaxSpriteRatio: スプライトとしての散乱ピクセル クワッドの最大比率です。DOF の散乱の上限をコントロールするために便利です。
まずはこれらの設定から開始することをお勧めします。その他のコンソール変数は r.DOF. の下にあります。
Bokeh DOF メソッド (レガシー)
Unreal Engine 4.23 の時点で、Bokeh DOF はエンジンとソース コードから削除されました。4.22 や 4.21 を使用している場合、Bokeh DOF はディファード デスクトップ レンダラとフォワード レンダリング パスで非推奨です。
Bokeh DOF は、オブジェクトが焦点から外れている時に写真や映画で表示される形状のことです。このメソッドは、テクスチャが適用されたクアッドを各ピクセルにつき一つレンダリングします。その際、ユーザーが指定したテクスチャを使用して、カメラレンズの効果を再現するための形状を定義します。
この実装では、負荷の高いこの効果を半分の解像度のみを使用して実現します。これは、適応被写界深度を使用して、エフェクトが目立ちにくい領域でレンダリング コストの節約を試みています。Bokeh DOF は、Unreal Engine で使用できるその他の DOF メソッドよりコストがかかるため、ビジュアルのアピールがパフォーマンスの問題よりも優先されることが多いシネマティックやショーケースの用途に最も適しています。
Bokeh DoF の適応被写界深度
パフォーマンス上の理由から、Bokeh DOF はデフォルトでは 4 分の 1 の解像度 (各方向に半分の解像度) でレンダリングされます。このために生じるダウンサンプリングは、ほとんどの場合目立つようなことはほぼなく、完全に容認できるレベルにあります。ただし、場合によってはアーティファクトなどの不都合な結果を招くことがあります。適応被写界深度は可能な場合にはこの種のアーティファクトを解決します。
背景でボケ処理されたキャラクターは、ダウンサンプリングした DOF 技法のみを使用した場合、輪郭がガタガタに表示されます。さらに、いくつかのアーティファクトが前景のキャラクターの角の周りに見られます。適応 DOF ではこれらのアーティファクトを取り除き、背景のキャラクターは大幅に滑らかな外観になっています。
適応 DOF をビジュアル化するには、レベル ビューポートの Adaptive Depth of Field (適応 DOF) 表示フラグを使用します。これは [Show (表示)] \> [Visualize] にあります。有効にすると、ダウンサンプルの効果が使用されている場所 (緑) とフル解像度の効果が使用されている場所 (赤) がオーバーレイで表示されます。ブラー処理が適用されない場所には通常のシーンの色が表示されます。
一般に、適応 DOF ですべてを緑にする必要があります。可視化によって表示する赤が増えると、各フレームをレンダリングする際にシーンのコストが高くなります。
Bokeh DOF 設定
次の設定項目は、Cine Camera、Camera、および Post Process Volumes で使用できます。これらは [Lens] タブ内の [Depth of Field] セクションに置かれています。
プロパティ | 説明 |
---|---|
Focal Distance | 被写界深度効果がよく現れる距離。この値は、Unreal の単位 (cm) で測定されます。 |
Near Transition Region | 撮影距離の点からカメラに近い側の焦点が合っている点までの距離 (Unreal Unit)。Bokeh DOF または Gaussian DOF を使用したときに、焦点が合った状態からブラーへのシーンの変移がこの点から行われます。 |
Far Transition Region | 撮影距離の点からカメラから遠い側の焦点が合っている点までの距離 (Unreal Unit)。Bokeh DOF または Gaussian DOF を使用したときに、焦点が合った状態からブラーへのシーンの変移がこの点から行われます。 |
Scale | Bokeh ベースのブラー処理の全体的なスケーリング係数。 |
Max Bokeh Size | ボケベース DOF に対するブラーの最大サイズ (ビューの幅の比率)。 サイズに比例してパフォーマンスのコストが増えることに注意してください。 |
Shape Texture | オブジェクトが焦点から外れたとき、ボケの形状を定義するテクスチャです。 これらは他のポストプロセス ボリュームとブレンドできないことに注意してください。 |
Occlusion | ブラー処理されたジオメトリが通常のシルエットおよびそのオパシティを超えて拡張される度合いを制御します。値が 0.18 の場合、かなり自然なオクルージョンが得られます。レイヤーの色漏れの問題を解決するには、値を 0.4 にする必要があります。非常に小さい値 (0.18 未満) では通常、ブラー効果がなくなりますが、対象物がカメラに非常に近い場合には良く機能することがあります。 |
Color Threshold | 色に基づいて適応 DOF がフル解像度の使用に切り替わるしきい値をコントロールします。値を小さくすると、フル解像度処理を使用するシーンが増えます。 |
Size Threshold | サイズに基づいて適応 DOF がフル解像度の使用に切り替わるしきい値をコントロールします。値を大きくすると、フル解像度処理を使用するシーンが増えます。 |
外部リソース
-
SIGGRAPH 2018 - "A Life of a Bokeh (ボケの世界)" Guillaume Abadie 作 (PowerPoint presentation ~150 Mb)
-
Understanding Factors that affect Depth of Field (被写界深度に影響する要素)