ILO - I love compositing!!

CG,VFX、コンポジットの情報系ブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

被写界深度を演出する【Nuke】

大阪に帰っていたときにふと以前書いた記事のことを思い出して、そういえばあれ間違ってたな~
と思ったので訂正の記事を書こうと思うのですが

で、その記事を探したのですが間違ってたのがわかって消してしまったのかブログ内を探しても
見つからなかったので改めて書きなおそうかと思います。

どういう内容だったかというとイメージ画像をDepthマップを使ってブラーをかけるというものです。
間違っている内容ななので簡単に書きますが、DepthマップをZblurノードのmaskインプットにつなげた
だけでした。

グレースケールイメージをもとにブラーをかけてくれているので一見するとそこまでおかしいとは
思わなかったのでしょうね…




適切な方法で深度情報をもとにブラーをかける場合

ブラーがかかっていない画像
beauty.jpg

深度マップを別に用意してそれを元にZblurでブラーを加える方法と
3D側でexrチャンネルに深度情報を一緒に格納して1ノードでシンプルに済ます方法があります。

深度情報をどのように出力するかは状況によって変わってくるのでどちらがいいかという問題ではありません。
前者はShuffleCopyを使って深度マップをdepthチャンネルに変更剃る必要があります。


例えばblenderで複数のチャンネルを格納したexrを出力したとします。

layer02.jpg

その中にRenderLayer_Depthってかかれてあるチャンネルがあるのでこれが深度情報となります。

ShuffleCopyを用いて一旦Depthチャンネルだけ分離します。

するとLayerContactSheetで見た状態と同じく真っ白なんですがすべてのピクセルのルミナンスが1ではなく
どのエリアのピクセルもルミナンスが1を超えていてビュー上でこれを表現できないため真っ白に見えるのです。


ビュー上でピクセルをサンプリングすると値がそれぞれ違っているのがわかります。

layer03.jpg

このDepth情報を一度Gradeノードを使って必要なdepthのレンジが視認できるくらいまで調節します。

layer04.jpg

この作業はBlender内でもNode EditorでMap valueを使って出来るのですが、深度だけまた別にレンダリングする必要があるのでまとめてexrで出してNukeでそれぞれを調節するという方法のほうが容量の節約にはなるんではないでしょうか。
もしかしたら、blenderのMap valueで調節したものをexrに再度格納しなおして出力するということができればそちらでもいいと思います(そういう方法があればですが)。

あとなぜGradeで調節するかというと後ほどZblurをかけるときにdepthを調節しないままだとレンジが広すぎてものすごく値の調節がしにくいからです。

ShuffleCopyを使ってDepthという新規チャンネルを作り、このストリーム内に先ほどGradeで調節した深度情報を保存します。

layer05.jpg

Zblurノードを追加し、プロパティのzをdepth.zになっているのを確認してそれぞれのプロパティの値を調節してやればOKです。
layer06.jpg

※Zblurノードでmathのfocal-plane setupにチェックを入れるとフォーカスの調節がしやすくなります。
(グリーンがピントがあっている範囲です)
layer07.jpg


ではGradeノードで修正した深度情報をもう一度exrに格納しなおしたいときはwriteノードを追加してchannelをallにしてfiletypeがexrなのを確認しレンダリングします。

必要なchannelだけ格納されたファイルができあがりますのでこのReadノードにZblurを追加するととてもシンプルな構成で被写界深度を演出することができます。

layer08.jpg

スポンサーサイト
  1. 2011/12/20(火) 14:59:19|
  2. Nuke
  3. | トラックバック:0
  4. | コメント:0
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。