2013年9月18日水曜日

Nuke的 その1~4

たまにですが、Nukeでのコンポジットを引き継ぐ事があります。
Scriptを開いてみると、あまりにも自由なノードの組み方に出会う事もしばしばです。

最近の仕事で出会ったScriptが、あまりにも...だったので、復習もかねて基本的な部分をまとめたいと思います。
NukeはAfterEffectsに比べるとプリコンポジションをしない分、全体が把握しやすいと言われますが、それはNukeなりのルールに従って組まれた、画像処理を意識したScriptの場合だと思います。

以下、自分が参加したプロジェクトで見たり聞いたり、教えてもらったことなどなど、あくまでも作業者目線で、Nukeで意識していることについて。
気ままに更新予定です。





その1 B PIPE

上流から下流への縦軸をBラインに。
MergeノードをDisableしても下流への流れは引き継がれます。
Bラインがストレートに伸びていることで、ショットの素材間の構成・設計が把握しやすくなります。



作業環境設定として、Edit>PreferencesのNode Graphタブから[show grid]をオンでグリッドの表示、[snap to grid]をオンでグリッドにスナップします。
キーボードの<バックスラッシュ>で自動的にグリッドにスナップ、<L>で整列です。
[new Merge nodes connect A input]をオフにすることで、Bラインを基準に新規Mergeノードが作られます。



 その2 Read

インポートパスの同じフッテージは一つのReadノードで管理します。
インポートパスの同じフッテージのReadノードがScript内に複数存在すると、各々のReadノードがそのファイルにアクセスするため処理が重くなります。



その3 BBOX

Save Regionでレンダリングされたexr素材はAuto Cropされています。


Nukeで素材をAuto cropする方法として、CurveToolノードの[Curve Type]を[Auto Crop]にして解析した後、AutoCropDataをCropノードにリンクします。

もしくは、Script Editorで以下を実行するとAuto Cropされます。

nukescripts.autocrop(nuke.selectedNode)


Reformatノードは[black outside][preserve bounding box]をうまく使いわけ、余計な部分はCropします。

以下は、[black outside]ノードの説明です。
bboxの外側にbalck borderが1pixel追加されます。

Add a balack outside edges to the bounding (if need).
This will remove "stripes" caused by replicating the edge pixels of the bounding box.





VectorBlurを追加するとモーションブラーでピクセルがBboxより外側に伸びるため[grow bbox]でBboxを拡張します。AdjBBoxノードでも可能です。


その4 Channel

極力、余計なチャンネルは処理しないようにします。

各ノードの処理は、デフォルトだと[all]になっているものが殆どですが、menu.pyの記述によってあらかじめ[rgba]や[alpha]などに設定しておくことが可能です。マルチパスのexrなど、チャンネル[all]のままだと、全てのチャンネルを処理することになります。実際、[all]で処理することは、あまりない気がします。


たとえば、、

nuke.knobDefault("RotoPaint.output", "alpha")

nuke.knobDefault("Blur.channels", "alpha")
nuke.knobDefault("EdgeBlur.channels", "rgba")
nuke.knobDefault("Defocus.channels", "rgba")
nuke.knobDefault("ZDefocus.channels", "rgba")
nuke.knobDefault("Sharpen.channels", "rgba")

nuke.knobDefault("VectorBlur.channels", "rgba")

nuke.knobDefault("Multiply.channels", "rgba")



  

 

ScanlineRenderノードなども同じです。
[motion vector channels]を使用しない場合、チャンネルは[none]にします。




つづく

0 件のコメント:

コメントを投稿