スクリーンクリーン: Nukeでグリーンバックを均一にするテクニック
- 2023/04/04
(最終更新 2024/05/25)
撮影されたグリーンバック(またはブルーバック。以後省略)にはライティングによる色ムラがあり、キーイング作業を困難にします。そこで、キーイングの"事前処理"として、均一なグリーンバックに補正しておくというアイデアがあります。
"Screen Clean"や"Screen Correct"などと呼ばれるテクニックで、これにより効率よくキーイングできる場合があります。この記事では、Nukeを使ってグリーンバックの色ムラをなくし均一に補正する手法を紹介します。
細かい部分でやり方は複数ありますが、ひとつはスティーブ・ライトが「VFX Keying: Master Course」において"Screen-correction workflow"と呼んで解説している手法です。
参照:Screen-correction workflow
https://www.linkedin.com/learning/vfx-keying-master-course/screen-correction-workflow
この手法はYoutubeのvfxexpertチャンネルでも紹介されています。
https://www.youtube.com/watch?v=4E2D5qQ7hyY
手順は以下の通りです。
①
まず、撮影プレートを何らかの方法でデノイズ(ノイズ除去)します。
「デノイズプレート」ができます。以下、このワークフローではデノイズする前のプレートは使用しません。
▼デノイズプレート
②
Keylightノードをつくり、スポイトでグリーンをサンプリングし、①のデノイズプレートをキーイングします。Keylightノードの[Screen Blance]を調整したり、[Clip White]を少し下げるなどして、人物にalphaチャンネルの穴が開かないようにするのも良いかもしれません。しかし、[Screen Gain]や[Clip Black]は人物のエッジのディティールを損なってしまうしまうため、触りません。
ここにInvertノードを追加して、alphaチャンネルを反転させます。
これによってできるのは「背景は白く、人物は黒く、エッジはソフトでディテールを持っている」alphaチャンネルです。これを、ここでは「反転マスク」と呼ぶことにしましょう。
▼反転マスク
③
それとは別に、①のデノイズプレートから、IBKColourノードで「クリーンプレート」をつくります。
人物のエッジ部分にグリーンの色を食い込ませるのがポイントです。この方法では、すべてグリーンで埋める必要はなく、人物の内側に黒いエリアが残っていても構いません。
▼クリーンプレート
④
③でつくったクリーンプレートに、②と同じ設定のKeylightノードをクローン機能で作成し、Invertノードを適用します。(※ここではスティーブの説明に準じてクローンを使用しますが、Nukeのクローンには昔から有名なバグがあるため、実際にはクローンを使用しないことをオススメします)。
できるのは、②でつくった「反転マスク」のクリーンプレート・バージョンです。これは「クリーンプレートの反転マスク」と呼びましょう。
▼クリーンプレートの反転マスク
⑤
ChannelMergeノードをつくり、[operation]を"divide"に変更し、Aインプットに②の「反転マスク」を、Bインプットに④の「クリーンプレートの反転マスク」を入力します。ここにShuffleノードを追加し、このalphaチャンネルをred, green, blueチャンネルにも移し替えます。
A÷Bの計算の結果、人物はしっかり黒く、背景部分が白く、エッジはソフトでディティールを持つマスクができました。これで「補正用マスク」の完成です。
▼補正用マスク
⑥
Constantノードをつくり、スポイトで①のデノイズプレートから適当なグリーンバックの色を拾い、グリーン平面にします。
Mergeノードをつくり、[operation]を"minus"に変更し、Aインプットにこのグリーン平面を、Bインプットに③のクリーンプレートを入力します。
A-Bの計算の結果、差分のrgbカラーが出力されます。これで「補正用カラー素材」の完成です。真っ黒な見た目のピクセルがありますが、RGB値は0ではなく、マイナスに潜った値を持っています。
▼補正用カラー素材
⑦
Mergeノードをつくり、[operation]を"multiply"に変更し、A・Bインプットに⑤の「補正用マスク」と⑥の「補正用カラー素材」を入力します。
A×Bの計算の結果、ついに「補正用プレート」が完成します。
▼補正用プレート
⑧
Mergeノードをつくり、[operation]を"plus"に変更し、A・Bインプットに①の「デノイズプレート」と⑦の「補正用プレート」を入力します。
A+Bの計算の結果、グリーンバックが均一になります。おしまい。
▼完成
さて、ここで良いニュースです。この一連の面倒な手順は、ツール化されています!
コンポジターのグザヴィエ・ブルク(Xavier Bourque)が"Pixelfudger"(ピクセルファッジャー)として公開しているツール群のパッケージの中に、PxF_ScreenCleanというグリーンバックを均一に補正するツールがあります。
撮影プレートとクリーンプレートを入力すると、グリーンバックを均一にします。Pixelfudgerの各ツールには、ビデオチュートリアルが用意されています。
PxF_ScreenCleanのビデオチュートリアル
https://www.youtube.com/watch?v=d_MbzYnM66I
Ctrl+Enterでグループノードを中を見てみると、PxF_ScreenCleanの仕組みが分かります。
細部は異なりますが、大きな構造はスティーブ・ライトの方式とよく似ています。マスクを得る際にKeylightノードは使わず、グリーンバックなら G - max(R, B) といった計算式を使っている点が大きな違いですが、それ以外は基本的に同じプロセスになっています。
このツールはPixelfudgerのウェブサイトからダウンロードすることができます。Pixelfudgerは以前からあるツールですが、2023年にバージョン3にアップデートされました。
http://www.pixelfudger.com/
また、Nukepediaにもアップロードされており、そちらからダウンロードすることもできます。
https://www.nukepedia.com/gizmos/filter/pixelfudger
VFXスーパーバイザーのエイドリアン・プエヨ(Adrian Pueyo)が公開しているapScreenCleanも、グリーンバックを均一に補正するツールです。やはり同じように撮影プレートとクリーンプレートを入力し、グリーンバックを均一にします。
Ctrl+Enterでグループノードを中を見てみると、仕組みが分かります。
Keylightノードが使用されており、ほぼスティーブ・ライト方式と同じです。Merge(multiply)の代わりにMerge(mask)を使ったり、A-Bの計算であるMerge(minus)の代わりにB-AのMerge(from)を使ったりという細部の違いがありますが、同じプロセスになっています。マスク(alphaチャンネル)を調整するGradeノードがあり、ツールのプロパティーに用意された[blackpoint]と[gamma]のスライダーでコントロールできます。
また、エイドリアン・プエヨはクリーンプレートを作成するためのapScreenGrowというツールも公開しています。
imgインプットに撮影プレートを入力し、matteインプットに人物マスクを入力することで、人物を消しこんだクリーンプレートを生成します。良い結果を得るための調整パラメーターも用意されています。
(※画像はNukeSurvivalToolkitドキュメントよりキャプチャ)
apScreenClean および apScreenGrow は、エイドリアン・プエヨのウェブサイトからダウンロードすることができます。
https://adrianpueyo.com/gizmos/
また、この2つのツールは、コンポジターのトニー・ライオンズ(Tony Lyons)がまとめあげて配布している"Nuke Survival Toolkit"というツールのパッケージの中にも含まれています。Nuke Survival Toolkitは、Githubからダウンロードできます。
https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/
Nuke Survival Toolkit紹介動画
https://www.youtube.com/watch?v=c8Jw-Iw2u4g
今回紹介した方法ではいずれも「クリーンプレート」が必要で、クリーンプレートをいかに正確に、効率良く作成できるかが重要になってきます。IBKColourノードは必ずしも使いやすいツールではないため、他の方法を検討してみるのも良さそうです。apScreenGrowのように、人物の部分に穴を開けて、そこを何らかの方法で埋める、といったアプローチが考えられます。
PxF_Fillerのビデオチュートリアル
https://www.youtube.com/watch?v=RN6-iA2nkdk
Pixelfudgerの中にあるPxF_Fillerや、Nuke Survival Toolkitに含まれているマッツ・ハグバース・ダムズボ(Mads Hagbarth Damsbo)によるFillSamplerのような穴埋め・塗りつぶし(Fill)系のツールも利用できるかもしれません。
Nuke12で追加されたInPaintノードで埋めるのが良い、と言う人もいます。
いろいろ試してみる必要がありそうです。
なお、このテクニックは万能ではないため、うまくいかない日もあるかもしれません。
グッドラック。
撮影されたグリーンバック(またはブルーバック。以後省略)にはライティングによる色ムラがあり、キーイング作業を困難にします。そこで、キーイングの"事前処理"として、均一なグリーンバックに補正しておくというアイデアがあります。
"Screen Clean"や"Screen Correct"などと呼ばれるテクニックで、これにより効率よくキーイングできる場合があります。この記事では、Nukeを使ってグリーンバックの色ムラをなくし均一に補正する手法を紹介します。
スティーブ・ライトの"Screen Correction" ワークフロー
細かい部分でやり方は複数ありますが、ひとつはスティーブ・ライトが「VFX Keying: Master Course」において"Screen-correction workflow"と呼んで解説している手法です。
参照:Screen-correction workflow
https://www.linkedin.com/learning/vfx-keying-master-course/screen-correction-workflow
この手法はYoutubeのvfxexpertチャンネルでも紹介されています。
https://www.youtube.com/watch?v=4E2D5qQ7hyY
手順は以下の通りです。
①
まず、撮影プレートを何らかの方法でデノイズ(ノイズ除去)します。
「デノイズプレート」ができます。以下、このワークフローではデノイズする前のプレートは使用しません。
▼デノイズプレート
②
Keylightノードをつくり、スポイトでグリーンをサンプリングし、①のデノイズプレートをキーイングします。Keylightノードの[Screen Blance]を調整したり、[Clip White]を少し下げるなどして、人物にalphaチャンネルの穴が開かないようにするのも良いかもしれません。しかし、[Screen Gain]や[Clip Black]は人物のエッジのディティールを損なってしまうしまうため、触りません。
ここにInvertノードを追加して、alphaチャンネルを反転させます。
これによってできるのは「背景は白く、人物は黒く、エッジはソフトでディテールを持っている」alphaチャンネルです。これを、ここでは「反転マスク」と呼ぶことにしましょう。
▼反転マスク
③
それとは別に、①のデノイズプレートから、IBKColourノードで「クリーンプレート」をつくります。
人物のエッジ部分にグリーンの色を食い込ませるのがポイントです。この方法では、すべてグリーンで埋める必要はなく、人物の内側に黒いエリアが残っていても構いません。
▼クリーンプレート
※クリーンプレート(Clean Plate, きれいなプレート)とは英語圏でのVFX用語で、人物のいない背景のみのフッテージを指して使われているようです。日本の業界で「空舞台(からぶたい)」と呼ぶ素材がありますが、それにかなり似たイメージと思われます。本来はワイヤー消しなどに利用するための素材として撮影されるものを指していたのですが、残念ながら撮影されず、コンポジットで工夫してクリーンプレートをつくりだすことも多いようです。
④
③でつくったクリーンプレートに、②と同じ設定のKeylightノードをクローン機能で作成し、Invertノードを適用します。(※ここではスティーブの説明に準じてクローンを使用しますが、Nukeのクローンには昔から有名なバグがあるため、実際にはクローンを使用しないことをオススメします)。
できるのは、②でつくった「反転マスク」のクリーンプレート・バージョンです。これは「クリーンプレートの反転マスク」と呼びましょう。
▼クリーンプレートの反転マスク
⑤
ChannelMergeノードをつくり、[operation]を"divide"に変更し、Aインプットに②の「反転マスク」を、Bインプットに④の「クリーンプレートの反転マスク」を入力します。ここにShuffleノードを追加し、このalphaチャンネルをred, green, blueチャンネルにも移し替えます。
A÷Bの計算の結果、人物はしっかり黒く、背景部分が白く、エッジはソフトでディティールを持つマスクができました。これで「補正用マスク」の完成です。
▼補正用マスク
⑥
Constantノードをつくり、スポイトで①のデノイズプレートから適当なグリーンバックの色を拾い、グリーン平面にします。
Mergeノードをつくり、[operation]を"minus"に変更し、Aインプットにこのグリーン平面を、Bインプットに③のクリーンプレートを入力します。
A-Bの計算の結果、差分のrgbカラーが出力されます。これで「補正用カラー素材」の完成です。真っ黒な見た目のピクセルがありますが、RGB値は0ではなく、マイナスに潜った値を持っています。
▼補正用カラー素材
⑦
Mergeノードをつくり、[operation]を"multiply"に変更し、A・Bインプットに⑤の「補正用マスク」と⑥の「補正用カラー素材」を入力します。
A×Bの計算の結果、ついに「補正用プレート」が完成します。
▼補正用プレート
⑧
Mergeノードをつくり、[operation]を"plus"に変更し、A・Bインプットに①の「デノイズプレート」と⑦の「補正用プレート」を入力します。
A+Bの計算の結果、グリーンバックが均一になります。おしまい。
▼完成
さて、ここで良いニュースです。この一連の面倒な手順は、ツール化されています!
PxF_ScreenClean
コンポジターのグザヴィエ・ブルク(Xavier Bourque)が"Pixelfudger"(ピクセルファッジャー)として公開しているツール群のパッケージの中に、PxF_ScreenCleanというグリーンバックを均一に補正するツールがあります。
撮影プレートとクリーンプレートを入力すると、グリーンバックを均一にします。Pixelfudgerの各ツールには、ビデオチュートリアルが用意されています。
PxF_ScreenCleanのビデオチュートリアル
https://www.youtube.com/watch?v=d_MbzYnM66I
Ctrl+Enterでグループノードを中を見てみると、PxF_ScreenCleanの仕組みが分かります。
細部は異なりますが、大きな構造はスティーブ・ライトの方式とよく似ています。マスクを得る際にKeylightノードは使わず、グリーンバックなら G - max(R, B) といった計算式を使っている点が大きな違いですが、それ以外は基本的に同じプロセスになっています。
このツールはPixelfudgerのウェブサイトからダウンロードすることができます。Pixelfudgerは以前からあるツールですが、2023年にバージョン3にアップデートされました。
http://www.pixelfudger.com/
また、Nukepediaにもアップロードされており、そちらからダウンロードすることもできます。
https://www.nukepedia.com/gizmos/filter/pixelfudger
apScreenClean と apScreenGrow
VFXスーパーバイザーのエイドリアン・プエヨ(Adrian Pueyo)が公開しているapScreenCleanも、グリーンバックを均一に補正するツールです。やはり同じように撮影プレートとクリーンプレートを入力し、グリーンバックを均一にします。
Ctrl+Enterでグループノードを中を見てみると、仕組みが分かります。
Keylightノードが使用されており、ほぼスティーブ・ライト方式と同じです。Merge(multiply)の代わりにMerge(mask)を使ったり、A-Bの計算であるMerge(minus)の代わりにB-AのMerge(from)を使ったりという細部の違いがありますが、同じプロセスになっています。マスク(alphaチャンネル)を調整するGradeノードがあり、ツールのプロパティーに用意された[blackpoint]と[gamma]のスライダーでコントロールできます。
また、エイドリアン・プエヨはクリーンプレートを作成するためのapScreenGrowというツールも公開しています。
imgインプットに撮影プレートを入力し、matteインプットに人物マスクを入力することで、人物を消しこんだクリーンプレートを生成します。良い結果を得るための調整パラメーターも用意されています。
(※画像はNukeSurvivalToolkitドキュメントよりキャプチャ)
apScreenClean および apScreenGrow は、エイドリアン・プエヨのウェブサイトからダウンロードすることができます。
https://adrianpueyo.com/gizmos/
また、この2つのツールは、コンポジターのトニー・ライオンズ(Tony Lyons)がまとめあげて配布している"Nuke Survival Toolkit"というツールのパッケージの中にも含まれています。Nuke Survival Toolkitは、Githubからダウンロードできます。
https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/
Nuke Survival Toolkit紹介動画
https://www.youtube.com/watch?v=c8Jw-Iw2u4g
終わりに:補足
今回紹介した方法ではいずれも「クリーンプレート」が必要で、クリーンプレートをいかに正確に、効率良く作成できるかが重要になってきます。IBKColourノードは必ずしも使いやすいツールではないため、他の方法を検討してみるのも良さそうです。apScreenGrowのように、人物の部分に穴を開けて、そこを何らかの方法で埋める、といったアプローチが考えられます。
PxF_Fillerのビデオチュートリアル
https://www.youtube.com/watch?v=RN6-iA2nkdk
Pixelfudgerの中にあるPxF_Fillerや、Nuke Survival Toolkitに含まれているマッツ・ハグバース・ダムズボ(Mads Hagbarth Damsbo)によるFillSamplerのような穴埋め・塗りつぶし(Fill)系のツールも利用できるかもしれません。
Nuke12で追加されたInPaintノードで埋めるのが良い、と言う人もいます。
いろいろ試してみる必要がありそうです。
なお、このテクニックは万能ではないため、うまくいかない日もあるかもしれません。
グッドラック。
- 関連記事
-
- 10分で分かるNUKE*4 (ブラー&デフォーカス編) (2024/05/26)
- 10分で分かるNUKE*3 (Rotoノード編) (2023/11/06)
- さまざまなグレイン・ワークフロー(Nuke) (2023/09/14)
- Nukeのノードのクローンは使ってはいけない!(という都市伝説?) (2023/05/11)
- NukeのTCL入門!さまざまな情報を取得して活用する方法 (2023/04/18)
- スクリーンクリーン: Nukeでグリーンバックを均一にするテクニック (2023/04/04)
- 10分で分かるNUKE*2 (2020/12/15)
- 10分で分かるNUKE (2020/12/01)
- NukeにおけるOCIOを使ったACESシーンリニアワークフロー (2019/05/08)
- NUKEのスピードを速くするためのTips集 (2016/12/19)
- Nuke Pythonを使ってノードの設定を一括変更する (2016/12/03)
- NUKEのエクスプレッション(Expression)の便利な使い方 (2016/10/18)
- NUKE初心者におすすめのショートカット (2016/10/11)
- NUKE入門! 画像サイズをマスターする10項目のルール (2016/07/15)
- NUKEのノードツリーを整理してワンランク上の合成作業を目指す (2015/11/17)