記事の目次

    先日、ディスバウンドディメンジョンでCGデザイナーとして活躍中の田代恭規氏が発起人となり、都内某所にて有志による「Nuke勉強会」なるものを行なった。筆者はさておき、他の皆さんが素晴らしいプレゼンをしてくださったのだが、その中でもスペシャルゲストとして講演頂いた、元Animal Logic/山口幸治氏による「Nukeコンポジットの基礎解説」が、コンパクトながらも実に真を的を射た有意義な内容であった。この度、幸運にも山口氏の許可が得られたので今回はその手法を紹介しよう。

    コンポジットは"演算"である

    Nukeで頻繁に扱うノード・オペレータは[Merge]であるが、そのデフォルトのオペレーションである「over」には、以下のような数式が与えられている;

    
    
    A + B(1 - a)
    
    
    

    「a」とは、A(フォアグランド)のアルファのことである。それでは、アルファを持たない、画像をフォアにするとどうなるか......この数式に当てはめると「a=0」なので、

    
    
    A + B(1 - 0) = A + B
    
    
    

    つまり「add(加算)」と同じ効果になる。実際jpgなどのアルファを持たない画像フォーマットのものを重ね合わせると、このような加算と同じように、バックグランドが透けた結果になる。これを避けるには[Dissolve]を用いるか、予め[Shuffle]などのオペレータを組み合わせてアルファを宣言してやればよい。

    アルファを持たない画像を用意する

    <1>rgbaではなくアルファを持たない画像、つまりrgbしか持たない画像を用意する
     

    アルファを持たない画像を[Merge]の「over」で乗せると、BGが透けた結果になる

    <2>用意したアルファを持たない画像をそのまま[Merge]の「over」で繋げてしまうと、計算される結果「add」と同様になり、BGが透けてしまう
     

    [Merge]の前に[Shuffle]を繋げる

    <3>これを避けたい場合は、[Merge]を繋げる前に[Shuffle]などのオペレータでアルファを宣言しておけば解消される

    [[SplitPage]]

    常に8ビット以上で処理するが故の落とし穴

    また、NukeはRGB 8bit、つまり、0〜255(Nukeの場合表記上0〜1)の256段階に止まらず、16bitさらには32bitと、幅広いレンジの処理を常に行なっている(浮動小数点による演算を行なっている)。それ故、8bitで処理するAfeter Effects(バージョンCS5現在)などと同じ要領で合成しようとすると予期しない結果を得ることもある。例えば以下に挙げたケースでは、[ColorCorrect]で無茶な調整をしてしまい、エッジのアンチを破壊してしまっている。このような時は、通常[ColorCorrect]の前に[Unpremult]でいったん、アンチ部分のrgbに乗算されているアルファ成分を取り除く。すると、本来の rgb 値を得ることができるわけだ。さらに[ColorCorrect]後に[Premult]でアルファを乗算し直すのだが、これで、[Unpremult]によって元の数字で[ColorCorrect]が計算され、さらに、[Premult]でアルファの値を乗算された結果を確認できるであろう。この場合、r 値だけを見てみると;

    
    
    300(r) X 0.13882(a) = 41.646
    
    

    となり、0〜1範囲に収まっていない。よってアンチが綺麗にグラデーションしていない。これを避けるため、[ColorCorrect]の後に、[Clamp]を用いてrgbを0〜1の範囲で切ってしまう。そうすると、アンチがキレイにグラデーションしてくれる。

    NukeのUI01

    <1>[ColorCorrect]などで無茶な調整をすると......
     

    NukeのUI02

    <2>このようにアンチに正確にグラデーションを得ることができず、階段状に見えてしまう
     

    NukeのUI03

    <3>これを回避するために、いったん[Unpremult]を用いて[ColorCorrect]を計算しておく
     

    NukeのUI04

    <4>その上で[Clamp]を用いて、rgb 値を正常値の0〜1の範囲で切り捨てる。すると、元のものと同等の綺麗なアンチを得ることができる
     

    いかがだっただろうか? Nukeでコンポジット作業を行う上では、各種オペレータがどのような数式を下に処理を行なっているのか、適確に把握しておく必要がある。そう聞くと、理数系の知識に対して苦手意識のある読者諸兄は尻込みするかもしれないが、まずは主立ったオペレータの計算式から焦らず落ち着いて覚えていくと良いだろう。それでは最後に、Nukeの基本的な操作方法について動画にまとめたものを載せておく。この動画を参考に、今回解説したコンポジットワークを実際に試してもらえると幸いだ。
     

     
    Nukeの基本的な操作方法をデスクトップキャプチャ動画にまとめてみた。このオペレーションを習得すれば、スムーズに作業が行えるようになるはずだ

    TEXT_テラオカマサヒロ(Galaxy of Terror)
    株式会社ギャラクシーオブテラーにてヴィジュアル・エフェクツ・ディレクターとして活躍中。実写合成からフルCGまで、幅広いVFX制作に携わっている。
    個人サイト「tiraokan. 」