CG study (After Effects, Nuke, Maya...), English study and more.
Back to my website
---http://www.shizukafolio.com

Monday, February 17, 2014

[Nuke]基礎を徹底理解:Mergeノードで四則計算を使いこなす

Mergeノードで四則計算を使いこなす

最初に:
この記事内容はかなり計算の原点に戻っています。
ここまで合成するのに理解している必要があるかな?と思うかもしれませんが、道具を使いこなすため、頭の片隅に置いておく事は大事だと私は思います。どんな場合でもこのルールを守らなければいけない!このやり方で!ということは決してありませんし、Mergeの後にCopyノードやShuffleCopyノードを使って他に色々やりようもありますが、これを理解していれば、自分が合成する際使いやすくなったりトラブル対応しやすくなったりします。

本題:
Mergeノードはどんな計算を行っているのでしょう?結局は四則計算と条件付けの組み合わせです。四則計算とは...

plus=加算 A+B
minus=減算 A-B
multiply=乗算 A*B
divide=除算 A/B


思い通りの結果を得るためにはこれらを組み合わせれば良いだけ、となりますが、Nuke上では、Mergeノードを使う際AインプットかBインプットどちらに何を繋ぐかが重要となります。なぜなら過去記事でも紹介したとおり、NukeはBインプットがMerge計算に含まれない全てのチャンネルを「引き継ぐ」からです。(オプションのalso merge: allにすればAチャンネルも全てMergeの計算に入れられますが、Aチャンネル全てが「Mergeされる」のであって「引き継がれる」わけではありません)また、Mergeノードを一時的にでもdisableした際上下インプットと繋がり続けるのはBインプットです。

ということは、合成メインの流れとなる方をAでなくをBに繋げれば良いのですが、ここでジレンマが発生するのがminus=減算 A-Bdivide=除算 A/Bです。なぜならAとBを入れ替えると計算結果が変わるからです。B-A, B/Aしたいときはどうすれば良いのか?

まず、B-Aですが、嬉しい事にfrom(B-A)というMergeノードがあります。解決!終わり!これ、CG合成でよく使います。またいずれ詳しく紹介します。


B/AができるMergeオペレーションは存在しません。がんばってもやりたい程の機会は殆ど無いんじゃないのかと自分で思いつつも(だから存在しないんだと思う)、どうやったらできるか再現してました。手っ取り早いのがMergeExpression. 計算結果を確認しながらたどり着いたExpressionは画像の通り。(もっとスマートな書き方あったら教えて下さい・・・。)
Ar<=0?Br:Br/Ar
意味: Aのr値が0以下だったらBのr値を返す。でなければ[Bのr値/Aのr値]計算結果を返す
g,b,aチャンネルにも同じ事をしてます。

あとは、(1/A)*Bをすれば結果としてB/Aと同じ計算結果になります。


マルチチャンネルの流れも分かりやすい様AddChannelで適当なチャンネルを足しました。ノードの色アイコンでもわかるチャンネルの流れを確認してください。
興味のある人は是非自分で1からNukeで再現してみて下さい!



No comments:

Post a Comment