Blender で被写界深度 ( DOF ) を設定する方法がいくつかあるので、覚書として書いておきたいと思います。 背景はオブジェクトではなく HDR 画像を使っています。 今回試したのは下記の 3つです。
- カメラの被写界深度を使う方法
- Z パスとコンポジットノードのピンぼけを使う方法
- ミストパスとコンポジットノードのピンぼけを使う方法
なおこの記事では Cycles でレンダリングしています。
カメラでの被写界深度設定
Blender のカメラにはデフォルトで被写界深度の設定があります。 カメラを選択した状態でカメラタブを開くと「被写界深度」という項目があるのでチェックを入れます。 「焦点オブジェクト」にはフォーカスするオブジェクトを設定します。
フォーカスするオブジェクトですが、シーン内に Empty を設置しておけば自由にフォーカスするポイントを動かすことができるので便利です。
上記の画像では目に焦点が合うように、Emptyを配置しています。 あとはカメラタブ内で「絞り」などをお好みで調整するだけで OK です。
背景画像の足元はぼかしたくない場合
カメラでの被写界深度が一番簡単できれいなのですが、足元を移すような場合で背景に画像を使っている場合はちょっと困ったことになります。
というのも背景はあくまで画像なので、手前、奥といった概念はなく一律でぼけてしまいます。
そのため足元などを写した場合は、手前にあるはずの地面も一緒にぼけてしまいます。 これを調整するために、コンポジットノードを使って被写界深度を設定してみます。
Zパスを利用してノードで被写界深度を設定する
カメラの被写界深度のチェックは外しておき、ビューレイヤーからパス → データの「Z」 にチェックを入れておきます。 あとでミストパスも使う予定があるので、「ミスト」にもチェックを入れておきます。
各設定が終わったのでレンダリングにうつりますが、その前にコンポジットノードを作成しておきます。 これはレンダリング後に画像を編集するために必要になるので、先にノードだけ作っておきます。 レンダリング前にワークスペースから「Compsiting」を選び、「ノードを使用」にチェックをいれておきます。
F12 キーを押してレンダリングします。
レンダリングが終わったらワークスペースを Compositing にして、背景のボケていないレンダリング画像を、コンポジットノードを使って編集していきます。 このコンポジター画面では、画像の明るさやコントラスト、彩度調整などの編集を、ノードを使って行うことができます。
次に画像を大きく表示して、作業をしやすくしていきます。
Shift + A キーから「出力」→「ビューアー」を追加して、レンダーレイヤーの画像と接続します。 そうするとコンポジター画面の背景に画像が大きく表示されます。
でも画像の前面にノードが表示されて見辛いので、僕は画面を分割して「画像エディター」に切り替え、Render Resoult – コンポジットを表示して作業しています。
準備ができたので Shift + A キーから「フィルター」→ 「ピンボケ ( デフォーカス )」ノードを追加して、「深度」と「Z」をつなげます。
ピンボケノードの「Zバッファーを使用」にチェックを入れて F値や最大ブラーでボケ具合を調整します。 ぼかしていくと深度と連動して足元はぼけずにいるのが確認できます。
※オブジェクト ( ヘアーパーティクルのように細い形状のものなど ) によってはジャギーが出てしまってきれいにボケない場合があります。
ミストパスをZパスの代わりにしてみる
今度はミストパスを使ってコンポジットノードで背景をぼかしてみたいと思います。 レンダリングする前にミストパスにチェックを入れておく必要があります。 次にワールドタブでミストパスの「開始位置」と「深度」を設定します。
開始位置にはカメラからぼかしたくない部分までの距離を設定し、深度には完全にぼかしたい距離を入れておきます。 Blender ではグリッドが 1m になっているので、それを参考に開始位置をカメラから 3.5m ( キャラのやや後ろ ) 、深度を 50m ほどに設定しました。
また地面となる平面は小さいと境界が目立つ場合があるので、できるだけ大きくしておきます。
レンダリングしたらコンポジットノードで編集していきます。 先程は「深度」をピンぼけノードにつなげましたが、これを「ミスト」につなぎ直します。
「F値」や「最大ブラー」、「しきい値」でボケ具合を調整します。
※ Zパスを使った場合よりも調整がやや面倒に感じます。
今回は Z パスとミストパスを使って、レンダリング後にコンポジットノードで被写界深度を表現してみました。 でもノードでの表現は、カメラでの被写界深度のクオリティにはかなわないかなと思いました。 なので足元までレンダリングしたい場合は、背景画像ではなく地面となるオブジェクトをきちんと作った方がいいのかなと感じました。