MENU
現在旧サイトから移行中です。内容に抜けがありますが 鋭意調整中です。

Nukeでマスク切って別画像にポンのせ

もじお

Nukeで画像を合成する方法を知りたい!

もじこ

ただマスクを切ってのせたいだけなのにうまくいかない…

そんな方に向けた記事です。

手順や説明が不要で、Nukeの組んであるノードのみ必要だという方は各項目の一番下にテキストを貼ってあるのでそちらをコピーしてお使いください。
個人的に扱いやすいのは方法②です。

目次

モデラーでNukeを使う必要性について

「モデラーがNuke?」と思われる方もいるかもしれません。
ですがモデラーでもしばしばNukeを使用することがあります。例えば、以下の3つ

  • 正確な色味を確認したい時
    • レンダリングした画像などでLUTを適用した正確な画像を確認する
    • AOVsを使用したexr画像で格納されている全てのチャンネルを確認する
    • リニアで作成したテクスチャの色を正確に確認する など
  • 実写素材と色を合わせるたい時の色味調整や、色の違いを詳しく見比べたい時
  • レンダリング画像を他のexrやraw画像と合成したい時
    • 実写系でチェック用の画像に、実写のカラーチャート画像などをレンダリング画像に合成したものを求められた時
      • Photoshopだとマスクを作ってレイヤーを重ねるだけなのですが、Nukeはひと手間必要です

特に正確に色を見たい時にはNukeは必須ですし、色合わせなどの効率もUPしますので、最小限の機能を扱えるようになることをお勧めします。

Nukeはとっつきにくいと思うかもしれませんが、モデラーが使うのはNukeの基本部分のみです。
理解しなくてもノードをコピーして調整するだけでも全然問題ありません。私もいつもコピべ コピべ です。

今回は画像を合成するために必要なマスクについてご紹介します。

マスクでくりぬく

手順

  1. 画像を読み込む
  1. Rotoノードを作成しマスクを切る
もじお

まだマスクが適用されてない

Rotoについて

Roto(マスクを切るノード)はマスクを切っただけでは何も変わりません。

理由: マスクはアルファ1(真っ白)に対して減算するのですが、多くの画像はアルファ0(真っ黒)のためRotoを使っても効果がないから

解決方法: Shuffleでアルファチャンネルを与える

  1. Shuffleノードを作成 > 画ぞの下につなげ、Output Layer > rgba.alphaの白と黒のマークの白いほうをクリック
アルファの変化
もじお

これでもまだマスクが適用されてない

Rotoはつなぎ方も大切

Shuffleでアルファチャンネルを与えてもまだ何も変わりません。

理由: ノードのつなぎ方が違うから

解決方法: Mergeでつなぐ

  1. Mergeノードを作成 > BをShuffle・AをRotoに繋ぎ、oparation: maskに変更
完成!
set cut_paste_input [stack 0]
version 12.1 v4
Roto {
 inputs 0
 output alpha
 cliptype bbox
 curves {{{v x3f99999a}
  {f 0}
  {n
   {layer Root
    {f 2097152}
    {t x44800000 x44800000}
    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}
    {curvegroup Bezier1 512 bezier
     {{cc
       {f 8192}
       {px 1
        {0 0}
        {x44868000 x44ba0000}
        {0 0}
        {0 0}
        {x43e90000 x449c0000}
        {0 0}
        {0 0}
        {x44100000 x44160000}
        {0 0}
        {xc2980000 xc1000000}
        {x44b84000 x43ca0000}
        {x42980000 x41000000}
        {0 0}
        {x44e84000 x447c0000}
        {0 0}}}     idem}
     {tx 1 x44884000 x446d6666}
     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44800000 sb 1 tt x40800000}}}}}}
 toolbox {selectAll {
  { selectAll str 1 ssx 1 ssy 1 sf 1 }
  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
} }
 toolbar_brush_hardness 0.200000003
 toolbar_source_transform_scale {1 1}
 toolbar_source_transform_center {1024 1024}
 colorOverlay {0 0 0 0}
 lifetime_type "all frames"
 motionblur_shutter_offset_type centred
 source_black_outside true
 name Roto4
 selected true
 xpos 867
 ypos -104
}
push $cut_paste_input
Shuffle2 {
 fromInput1 {{0} B}
 fromInput2 {{0} B}
 mappings "4 rgba.red 0 0 rgba.red 0 0 rgba.green 0 1 rgba.green 0 1 rgba.blue 0 2 rgba.blue 0 2 white -1 -1 rgba.alpha 0 3"
 name Shuffle4
 selected true
 xpos 1004
 ypos -155
}
Merge2 {
 inputs 2
 operation mask
 name Merge3
 selected true
 xpos 1004
 ypos -100
}

Rotoの形がうまく適用されない場合

Rotoの形と結果が違うことがあります。

理由: 画像とNukeのフォーマット サイズがあっていない
Roto切りとる設定がClip to: formatになっている場合Nukeのフォーマットサイズで効果を適用します(Nukeの設定: Project Settingsのfull size format)。
そのため、画像のサイズが フォーマットサイズ より大きい場合、 フォーマットサイズ 以上はクリップされRotoの効果がなくなります。

解決方法: Roto > Clip to: no clip もしくは bbox にする

マスクした画像を別の画像に重ねる

次はマスクを切った画像の下に別の画像を置く方法です。
Photoshopだとレイヤーを重ねるだけなのですが、Nukeはひと手間必要です。

方法①

上記の「マスクでくりぬく」で作成したノードそのままに、Mergeノードを追加して合成する方法です。

  1. Mergeノードを追加作成 > poeration: under に変更
  2. 作製したMergeのBと元々あったMergeにつなげる
  3. 作製したMergeのAに下にする画像を繋げる
set cut_paste_input [stack 0]
version 12.1 v4
push 0
Roto {
 inputs 0
 output alpha
 cliptype bbox
 curves {{{v x3f99999a}
  {f 0}
  {n
   {layer Root
    {f 2097152}
    {t x44800000 x44800000}
    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}
    {curvegroup Bezier1 512 bezier
     {{cc
       {f 8192}
       {px 1
        {0 0}
        {x44868000 x44ba0000}
        {0 0}
        {0 0}
        {x43e90000 x449c0000}
        {0 0}
        {0 0}
        {x44100000 x44160000}
        {0 0}
        {xc2980000 xc1000000}
        {x44b84000 x43ca0000}
        {x42980000 x41000000}
        {0 0}
        {x44e84000 x447c0000}
        {0 0}}}     idem}
     {tx 1 x44884000 x446d6666}
     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44800000 sb 1 tt x40800000}}}}}}
 toolbox {selectAll {
  { selectAll str 1 ssx 1 ssy 1 sf 1 }
  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
} }
 toolbar_brush_hardness 0.200000003
 toolbar_source_transform_scale {1 1}
 toolbar_source_transform_center {1024 1024}
 colorOverlay {0 0 0 0}
 lifetime_type "all frames"
 motionblur_shutter_offset_type centred
 source_black_outside true
 name Roto1
 selected true
 xpos -52
 ypos -9
}
push $cut_paste_input
Shuffle2 {
 fromInput1 {{0} B}
 fromInput2 {{0} B}
 mappings "4 rgba.red 0 0 rgba.red 0 0 rgba.green 0 1 rgba.green 0 1 rgba.blue 0 2 rgba.blue 0 2 white -1 -1 rgba.alpha 0 3"
 name Shuffle1
 selected true
 xpos 85
 ypos -60
}
Merge2 {
 inputs 2
 operation mask
 name Merge1
 selected true
 xpos 85
 ypos -5
}
Merge2 {
 inputs 2
 operation under
 name Merge2
 selected true
 xpos 85
 ypos 62
}

方法②

上記の「マスクでくりぬく」で作成したノードを調整して合成する方法です。

  1. RotoのbgをShuffleにつなげる
  2. Mergeのpoeration: overに変更
  3. MergeのBに下にする画像を繋げる
set cut_paste_input [stack 0]
version 12.1 v4
push $cut_paste_input
Shuffle2 {
 fromInput1 {{0} B}
 fromInput2 {{0} B}
 mappings "4 rgba.red 0 0 rgba.red 0 0 rgba.green 0 1 rgba.green 0 1 rgba.blue 0 2 rgba.blue 0 2 white -1 -1 rgba.alpha 0 3"
 name Shuffle3
 selected true
 xpos -754
 ypos 812
}
Roto {
 output alpha
 premultiply rgba
 cliptype bbox
 curves {{{v x3f99999a}
  {f 0}
  {n
   {layer Root
    {f 2097152}
    {t x44800000 x44800000}
    {a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}
    {curvegroup Bezier1 512 bezier
     {{cc
       {f 8192}
       {px 1
        {0 0}
        {x44868000 x44ba0000}
        {0 0}
        {0 0}
        {x43e90000 x449c0000}
        {0 0}
        {0 0}
        {x44100000 x44160000}
        {0 0}
        {xc2980000 xc1000000}
        {x44b84000 x43ca0000}
        {x42980000 x41000000}
        {0 0}
        {x44e84000 x447c0000}
        {0 0}}}     idem}
     {tx 1 x44884000 x446d6666}
     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44800000 sb 1 tt x40800000}}}}}}
 toolbox {selectAll {
  { selectAll str 1 ssx 1 ssy 1 sf 1 }
  { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
  { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
} }
 toolbar_brush_hardness 0.200000003
 toolbar_source_transform_scale {1 1}
 toolbar_source_transform_center {1024 1024}
 colorOverlay {0 0 0 0}
 lifetime_type "all frames"
 motionblur_shutter_offset_type centred
 source_black_outside true
 name Roto3
 selected true
 xpos -754
 ypos 858
}
push 0
Merge2 {
 inputs 2
 name Merge4
 selected true
 xpos -602
 ypos 862
}
よかったらシェアしてね
  • URLをコピーしました!
  • URLをコピーしました!
目次