フォーカス用にマスクを作る



Mayaにはフォーカスを表現する機能はありますが
フォーカスの調節が厄介なのと、
後でぼかし具合を調節できないという欠点もあります

そこで、2Dソフト上で後加工する為のフォーカス用マスクを別に作ってしまおうというわけです
この方法の利点については、このページに一番下に書きましたので
興味のある方は読んでみてください


では、フォーカス用のマスクの作り方について説明します

先ず、フォーカスをかけたいシーンのオブジェクト全てをコピーします
シーンが重ければフォーカス用に別ファイルに全く同じシーンをセーブしておいて下さい。
(実際は別ファイルにする方が多いですね)



この例は軽いので、group1とgroup2に分けて同じファイル上で作業します
一方はマテリアルが貼ってあるもので、もう一方がフォーカスマスク用になります

 

HyperShadeでShadingMapを作ります

 ←こんなのが出来ました

このShadingMapがフォーカス用のマテリアルになります
ShadingMapはライトの影響を受け無い為、ライトを消すなどの必要もありません
ライトを無視する為に計算が軽く、高速なレンダリングが出来る利点があります

AttributeEditorを開き、ShadingMapCollarの右側の(チェック柄?)アイコンをクリック



2DテクスチャーのAsProjectionを選択しRampをクリック



U Ramp にして以下のようなグラデーションを作ってください
CollarBalanceを完全な白になるようにスライダーを右端に寄せます



この黒い部分がピントの合う範囲、白い程強くぼけると考えてください
Interpolationの項目を替えてボケ具合の変化の仕方を変えてみるのもいいでしょう
ここではSmoothにしていますが、普通はLinearのままでいいと思います

下のノード。place2dTexture を開き Warp U のチェックを外してください



HyperShadeで見ると以下のようになっていると思います。



これを先程作ったフォーカスマスク用のオブジェクト全てにアサインします
(ここではgroup2)


ここで今作った place3dTexture のスケールをシーンの大きさに合わせてください
これのスケールによってピントの合う範囲(被写界深度)を調整します
Rampのグラデーションを変えることでも被写界深度の調整は行えます
これは後でさらに調整して下さい


ここで、ピントを合わせたい場所にロケーターを作っておきます
(上のOutlinerを見るとすでに作ってありました^_^;)
出来ている3dTextureをグループ化し、
カメラもグループ化して、適当な名前を付けてください

ピントに位置を示すロケーターに3dTextureのgroupノードを
Point Constrainします
これで、ピントの合う中心を指定できます

 

カメラに対して常に被写界深度の方向が向いていなければなりません
そこで、今度は3dTextureのgroupをカメラに対して
Aim Constrainします。

 

ここまでで、被写界深度用のシェーディング作業は完了です


次に、通常のレンダリング画像とフォーカス用の画像を
同時に打ち出す方法を説明します

レイアーオプションをRenderに切り替えてください
そしてRenderLayerを二つ作ります



通常のレンダリング画像用オブジェクト全てを選択し、Layer1 にアサイン

 

同様に、フォーカス用オブジェクト全てを Layer2 にアサイン



RenderGlobalsのRenderLayerを開きEnabeRenderLayersにチェックを入れ
DefaultRenderLayerの Renderableをoff
Layer1、Layer2 のRenderableをonにセットします



カメラのAttributeEditorを開き、EnvionmentのBackgroundCollarを白にしてください



後はバッチレンダーするだけですね
これはムービーの場合でもOKです



このように二つの映像がレンダリングされます

 

モノクロの映像をガウスぼかしなどのマスクとして使用します
結果はご覧の通り



以上の方法で作ったものはボケ具合の調整が自由という利点があります

【ぼかす範囲の調節】
ぼける範囲の変化をRampを使って自由に変化できるという利点があります
例えば手前は被写界深度を浅く(急激にぼける)後ろは緩やかにボケ具合が変化する
と言った表現も可能です
そして何よりそれが視覚的に調節できる点が楽です

【ピント面の追跡】
ロケーターの位置にピントを合わせるので、ピントを合わせたいところが移動する時に
使い勝手がいいと思います
ピントを合わせるポイントに使うものはロケーター以外のものにコンストレインして追跡させる
というのもいいでしょう

【アルファーチャンネルによる合成】
いくつかのオブジェクトを別にレンダリングしてマスク合成する時など
始めにボケを入れた状態でレンダリングしてしまうと合成用のアルファーチャンネルもぼけてしまい
曖昧なため綺麗に合成できません
後付けのぼかしなら、合成時はボケのないアルファーチャンネルが綺麗に輪郭を切り取るので
輪郭がおかしくなることも回避できます

【透明物の後ろにある背景】
透明な物の後ろにぼけた景色がある場合のなどは透明なものと背景は別にレンダリングして
合成時のそれぞれのレイアーにぼかしをかけることで、かなりリアルな表現も可能だと思います

【空間の平面上にピントが合う】
人の目のピントは(正確には分かりませんが)目から等距離の球面上にピントが合うと思います
上に書いた方法だと平面上(カメラの向いている方向に対して垂直な面)にピントが合います
実際のカメラのピント面は、人間の目と違い 平面上のフィルムに結像する為
相対する被写体側でも平面上の空間にピントが合うことになります
なので、この方法は人間の目よりカメラ撮影による映像に近い結果が得られると思います



ムービーも同様に連番ファイルを打ち出して合成可能です
AfterEffectが欲しいーってなりますね
Premiereは、このようなマスクでぼかしをかけることが出来ません(方法があったら教えてください)
ちょっと裏技で出来ないことはないけどムラ出来ちゃいました

Premiereで合成したテスト画像(変^_^;)
始めにフォーカスなし、次にフォーカスマスク
最後に合成結果の画像が連続して入っています
フォーカスのロケーターを前から後ろに移動しています