ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Blender】被写界深度(ピント調節)を設定する方法

 普通にレンダリングした場合は全てのオブジェクトにピントがあってしまいますが、奥行きを表現するために特定のオブジェクトにピントを合わせたい場合があります。
 今回はそんな場合にBlenderでピントを調節する方法を紹介します。


1:Blenderでオブジェクトを配置する
 まずはBlenderでオブジェクトをカメラから見て前後になるように配置します。
 面倒な人は以下のURLにオブジェクトのみを配置した.blendファイルを置いてあるのでダウンロードしてください。
pintTest.blend - Google ドライブ


 なんでもよいですが、今回は例として以下のように配置しました。
f:id:rikoubou:20180516151939p:plain

 カメラから見た感じはこのようになります。
f:id:rikoubou:20180516152037p:plain

 このまま普通にレンダリングすると、以下のように全てのオブジェクトにピントが合った状態になります。
f:id:rikoubou:20180516152124p:plain

 ここまでできたらピントを調節していきます。が、その前にカメラのクリッピングについて少し説明します。


2:カメラのクリッピングについて
 1までできたら「Camera」オブジェクトを選択した状態で「Dataアイコン(カメラのアイコン)」を選択します。
f:id:rikoubou:20180516152632p:plain

 スクロールさせた先にある「Display」にある「Limits」という項目にチェックを入れます。
f:id:rikoubou:20180516152801p:plain

 チェックを入れた状態で3D Viewを確認すると「Camera」オブジェクトから直線が出ていることがわかります。
f:id:rikoubou:20180516152902p:plain

 この直線がカメラのクリッピングの範囲で「Lens」にある「Clipping」で設定されています。
f:id:rikoubou:20180516153129p:plain

 テンキーの「0キー」を押してカメラ視点にし、この「Clipping」の「End」の値を変化させると以下のようになります。Endの値を小さくすると、壁がオブジェクトを飲み込みながら近づいてくるのがわかると思います。
f:id:rikoubou:20180516153532g:plain

 ではここでクリッピングとはなんぞや?」となりますが、簡単に言うとレンダリングする範囲」です。

 先ほどのように「Clipping」の「End」を100にしてレンダリングした場合が以下の通り。
f:id:rikoubou:20180516153936p:plain

 そして「Clipping」の「End」を10にしてレンダリングした場合が以下の通りになります。
f:id:rikoubou:20180516154021p:plain

 このように「Clipping」の「Start」と「End」の値を調節してカメラのレンダリング範囲を決めるのが、クリッピングになります。
 レンダリングしてもオブジェクトがそこに含まれない場合は、クリッピングの値を調節するのがよいです。


3:被写界深度(ピント調節)
 最初にピントを合わせたいオブジェクトを決定します。
 すでに存在しているオブジェクトを指定するのも良いですが、自由度を考えると「Empty」オブジェクトを追加してそれに合わせる方が良いかもしれません。

 今回は以下のように「Cone」のてっぺんあたりにピントを合わせるために、その辺りに「Empty」オブジェクトを追加・配置しました。
f:id:rikoubou:20180516155227p:plain

 ピントを合わせたいオブジェクトが決定したら「Camera」オブジェクトの「Cameraアイコン」にある「Depth of Field」の「Focus」のところに、そのオブジェクトを指定します。
f:id:rikoubou:20180516160224p:plain

 ここまでできたら上の方にあるところから「Compositing」を選択して、画面を変更します。
f:id:rikoubou:20180516155402p:plain

 すると以下のような画面になるので、赤枠で囲ったところのアイコンを選択し「Use Nodes」にチェックを入れます。
f:id:rikoubou:20180516155512p:plain

 次に「Add」→「Filter」→「Defocus」を選択します。
f:id:rikoubou:20180516155708p:plain

「Render Layers」と「Composite」の間にくるところで「左クリック」して追加します。
f:id:rikoubou:20180516155915p:plain

Defocus」を追加したら「Render Layers」の「Depth」と「Defocus」の「Z」をマウスの左ドラッグで繋ぎます。
「Use Z-Buffer」にチェックを入れ、各設定値を調節します。
f:id:rikoubou:20180516160804p:plain

Defocus」各種設定値を調節してから「Render」ボタンを押すと、左下の画面にレンダリング結果が表示されます。
f:id:rikoubou:20180516161032p:plain
f:id:rikoubou:20180516161239p:plain

 一度「Render」ボタンを押すと「Defocus」の「Preview」にチェックが入っているため、各設定値を調節したらレンダリング結果に反映されます。

 最後にそれぞれの比較を載せておきます。

・ピント調節設定なし
f:id:rikoubou:20180516153936p:plain

・ピント調節設定あり
f:id:rikoubou:20180516162458p:plain


 以上がBlender被写界深度(ピント調節)を設定する方法です。
 奥行きなどを表現する時には必要になると思うので、色々役に立つと思います。

 一応全部の手順までやった結果の.blendファイルも置いておくので参考にしたい方はご自由にどうぞ。
pintTestRendering.blend - Google ドライブ


・参考資料