【Blender3.1】コンポジットでマスクを行う方法を一挙紹介!

URLをコピーする
URLをコピーしました!

CGBoxの一部の記事にはアフィリエイト広告が含まれております。

目次

はじめに

こんにちは!

今回はフリーの3DCGソフト「Blender」コンポジット(Compositing)で、「マスク」を行う色んな方法を紹介したいと思います。

コンポジットは、レンダリング結果を補正したり、複数の画像・動画と合成したりできる機能です。

「マスク」を使うことで、たとえばコチラのようにオブジェクトごとに別々に、RGBミックスノードを使って色補正をかけることができます。

ちなみに、「コンポジット」の機能の説明、簡単な使用例についてはコチラの記事にまとめているので、参考にしてみてください!

CGbox
【Blender2.9】コンポジット:光の調整 〜初級編〜 | CGbox こんにちは! Blenderでの3DCG制作を勉強中のUEDAです。 Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しい...

また、RGBミックスノードを使った、マテリアルの色補正の方法についてもコチラの記事で紹介しているので、あわせて参考にしてみてください。

CGbox
【Blender3.1】RGBカラーを編集できるノード・使用例を紹介! | CGbox はじめに こんにちは! コチラの記事では、フリーの3DCGソフト「Blender」を使う上でヒントになりそうな情報を紹介しています。 今回は、マテリアルのRGB色情報を編集でき...

コンポジットでのマスクの使い方

長引くコロナ禍で、「マスク」を着けた生活が日常茶飯事になっているので、「マスク」と言うとどうしてもウイルス用のマスクをイメージしてしまう方が多いと思いますが…

映像用語のマスク(Mask)の意味はちょっと違います!!

今回紹介するマスクは、コチラです。

合成やスーパーインポーズのために、画面の一部を見せないように覆ういろんな形状の画像。

出典:CGWORLD用語辞典
https://cgworld.jp/terms/マスク.html

例として、白と黒の2色で塗り分けられた画像を使ったマスクを紹介します。

コチラのようにコンポジターの画面上で、「マスク①」と「マスク②」の2つの白黒画像のマスクを使用して、それぞれ左下のキューブと、右上のキューブの領域を白で表示し、それ以外は黒で隠しています。

そうすることで、白で表示した領域だけ切り出して乗算ノードで色補正する、というコンポジット作業を行うことができます。

ちなみに、マテリアルを編集する「シェーダーエディター」でも同じようにマスクを使った表現ができます。

たとえば、コチラのように「カラーランプ」を使ってマスクを作ることで、傷テクスチャの影響範囲を設定することができます。

コンポジット結果の表示方法について

マスクする方法を紹介する前に、コンポジットノードの使い方についても軽く触れておこうと思います。

コンポジットの手順はコチラです。

STEP
オブジェクト・ライト・カメラを設置し、シーンをレンダリングする。

先にレンダリングしないと、コンポジットした結果が表示できません。

STEP
「Compositing」のワークスペースに切り替え、「ノードを使用(Use Nodes)」にチェックを入れる。
STEP
「ビューアー(Viewer)」を追加し、コンポジットした結果を表示する。

画面右上の「背景」にチェックを入れておくと、コンポジットした結果が画面奥に表示されます。

ちなみに、コンポジットノードの右上の「地球儀のようなマーク」をクリックすると、コチラのように中間結果のプレビューが表示されるようになるので便利です。

シェーダーエディターでも、「Node Preview」という有償アドオンを使えば、ノードのプレビューを表示できるそうです。

興味がある方は試してみてください。

Blender Market
Node Preview A Blender addon that displays rendered thumbnails above Cycles and Eevee shader nodes.

マスクする手法を一挙紹介!

コンポジットでマスクする方法を5パターン紹介します!

それぞれについて、使用例を交えながらやり方を説明していきます!

  • オブジェクト/マテリアルIDでマスクする
  • クリプトマット(Cryptomatte)でマスクする
  • アルファチャンネルでマスクする
  • 画像エディタ/動画クリップエディタでマスク作成
  • 「マット(Matte)ノード」でマスクする

オブジェクト/マテリアルIDでマスクする

コチラのように、2つのオブジェクトに別々のIDを割り当てて、それぞれをマスク・色補正することができます。

オブジェクトIDを使ってマスクする方法について、手順を説明します。

STEP
「ビューレイヤープロパティ」→「パス」→「データ」→「オブジェクトインデックス」にチェックを入れます。
STEP
「オブジェクトプロパティ」→「パス」→「関係」から、1番目と2番目のオブジェクトのパスインデックスを「1」と「2」に設定します。
STEP
レンダリング後に、「Compositing」のワークスペースに切り替えます。
STEP
コンポジター上で「IDマスク」を追加し、「レンダーレイヤー」の「IndexOB」と接続します。
インデックスの値を「1」に設定します。
STEP
「カラー」→「ミックス」ノードを「レンダーレイヤー」と「コンポジット」の間に追加します。
「IDマスク」のアルファをミックスの「係数」に接続し、ミックスのカラーピッカーで色を設定すると、出力プレビューの1番目のオブジェクトの色が変わります。
STEP
2番目のオブジェクトについても、IDマスクのインデックスを「2」にして、同じように接続し、最終出力用に「ビューアー」を追加しました。
すると、コチラのようにオブジェクトごとにマスク・色補正した結果になります。

マテリアルごとにマスクできる、「マテリアルID」を使うこともできます。

やり方はコチラです。

STEP
「ビューレイヤープロパティ」→「パス」→「データ」→「マテリアルインデックス」にチェックを入れます。
STEP
「マテリアルプロパティ」→「設定」から、1番目と2番目のマテリアルのパスインデックスを「1」と「2」に設定します。

Step3以降の手順は、さきほどの「オブジェクトID」でマスクする方法と同じです。
「レンダーレイヤー」の出力名が「IndexMA」に変わります)。

同一オブジェクトで、マテリアルごとにマスクしたい場合などに便利ですね。

クリプトマット(Cryptomatte)でマスクする

Blenderには共通規格の「クリプトマット(Cryptomatte)」というソフトが内蔵されており、そちらを使ってマスクすることができます。

クリプトマットの説明と、使用例についてはコチラのWikipediaの説明をご覧ください。

Cryptomatte は Psyop英語版) の Jonah Friedman と Andy Jones によって作成されたオープンソースソフトウェアであり、また、そのソフトウェアや同等機能を持つ他のソフトウェアによって生成された特定スタイルの画像のためにも同義的に使われている。

(中略)

このプログラムは、例えばシーン内の一つまたは複数のオブジェクトに対して画像マスクを作成する際に使用することができるシーンのID マットを生成する。このIDマットは Cryptomatte と呼ばれる通り、非常に特徴的な外観を持つ。これらの Cryptomatte 画像は、各オブジェクトやマテリアルに異なるランダムな色が割り当てられているため、一般的に非常にカラフルとなっている。レンダリング時に利用可能なデータを使用して、モーションブラー、透明度、被写界深度に対応するマットが作成される。

(Alex Treviño and Anaïs Maamar (Original Concept)  /Blender Cloud CC 表示 4.0)

上: Blender 2.81のスプラッシュ・スクリーンで使われているレンダリング画像

下: 同じシーンのCryptomatte画像外観

出典:Wikipedia – Cryptomatte
https://ja.wikipedia.org/wiki/Cryptomatte

先ほど紹介した方法と違って、オブジェクトやマテリアルごとにインデックスを設定する必要がないので、大量のオブジェクトをマスクしたい場合に特に便利です。

やり方・手順を以下で紹介します。

STEP
「ビューレイヤープロパティ」→「パス」→「Cryptomatte」の、「オブジェクト」「マテリアル」「アセット」のうちいずれか、もしくは全てを選択します。

ちなみに、「アセット」とは、「親子関係にあるオブジェクトのグループ」のことだそうです(Blenderリファレンスマニュアルより)。

STEP
レンダリング後に、「Compositing」のワークスペースに切り替えます。
STEP
出力結果のビューアーを追加し、「背景」のチェックをONにしておきます。
STEP
「マット(Matte)」→「Cryptomatte」を追加し、レンダーレイヤーの「画像」ノードと接続します。
STEP
「マットID」の「+」ボタンを押すとスポイトが表示されるので、マスクをしたいオブジェクト/マテリアル/アセットを背景プレビュー上でクリックします。

マスク対象のマットIDが設定されます。

STEP
乗算ノードを「レンダーレイヤー」と「コンポジット」の間に追加し、「Cryptomatte」の出力の「マット」を乗算ノードの「係数」に接続します。

混ぜ合わせる色を設定すると、マスク対象の色が変わります

STEP
他のオブジェクト等にも、同様の方法でクリプトマットのIDを割り当てて色補正すると、コチラのようになります。

ちなみに、コチラのように「+ボタン→スポイトでクリック」を繰り返すことで、複数の対象物を同じマットIDに指定することもできます(「ー(マイナス)」を押した後にスポイトすれば、対象から外せます)。

アルファチャンネルでマスクする

コチラのように、画像のアルファ(透過部分)をマスクとして使うこともできます。

レンダーレイヤーの出力の「アルファ」はマスクとしては使えないので、コチラのように「RGBA分離」ノードを使って「A」(アルファ)出力でアルファを白黒画像として抜き出しているのがミソです。

詳しい使い方についてはコチラの記事で紹介されているので、参考にしてみてください。

ちなみに、「アルファチャンネル」(アルファ)の説明と色んな使い方については、コチラの記事で紹介しているので、あわせて参考にしてみてください!

CGbox
【Blender3.1】アルファチャンネル(透過)を使いこなそう! | CGbox はじめに こんにちは! 今回は、フリーの3DCGソフト「Blender」で、画像の不透明度を表す「アルファ(アルファチャンネル)」を扱う方法について紹介します! アルファ(透過)...

画像エディタ/動画クリップエディタでマスク作成

「画像エディタ」や「動画クリップエディタ」を使って、手描きでベジエカーブを描いてマスクを作ることもできます。

コチラは、主に画像をくり抜くときに使えるテクニックです。

マスクの作り方

まず、ベジエカーブでマスクを作る方法・手順を紹介します。

STEP
トップバーから「画像エディタ」を開き、ヘッダーの「開く」からマスクをつけたい画像を開きます。
STEP
ヘッダー左上でモードを「マスク」に切り替え、ヘッダー右上の「New」をクリックして新しいマスクを作成します。
STEP
〔「Ctrl」キーを押しながら左クリック〕で、マスクしたい領域に沿ってベジエカーブの制御点を追加していきます。
STEP
制御点を選択して「V」→ハンドルタイプ「自動」を選択すると、ハンドルを追加して曲線を滑らかにできます。

ハンドルタイプ「自動」「ベクトル」「整列(シングル)」「整列」「フリー」から選択できます。

ベジエカーブの「ハンドルタイプ」についてはコチラの記事で紹介しているので、あわせて参考にしてみてください。

STEP
ショートカットキー「Alt+C」で、カーブを閉じます。

「Alt+C」を繰り返し押すことで、カーブの「開く」「閉じる」を切り替えることができます。

カーブを閉じたら、マスクとしては完成です。

描いたマスクをコンポジットで使う

コンポジターで「入力→マスク」ノードを追加し、コチラのようなノードを組むことによって、描いたマスクで画像を加工することができます。

手描きのマスクは、「実写合成」(VFX)でよく使われる手法です。

以下のチュートリアル動画の例では、「VFX」プロジェクトでモーショントラッキングを行ったあと、動画クリップエディター上でマスクを作成し、

出典:Modeling Happy – Blenderで撮影した動画に炎を作って手に持たせてモーショントラッキングで合成するチュートリアル動画 https://modelinghappy.com/archives/26775

コチラのように人の手の中で炎が燃えているように映像を合成することができます。

出典:Modeling Happy – Blenderで撮影した動画に炎を作って手に持たせてモーショントラッキングで合成するチュートリアル動画 https://modelinghappy.com/archives/26775

作成方法の詳細については、コチラの記事と元動画を参考にしてみてください。

3DCG最新情報サイト MODELING HAPP...
Blenderで撮影した動画に炎を作って手に持たせてモーショントラッキングで合成するチュートリアル動画 • 3D... エフェクトにモーショントラッキングにコンポも出来ちゃうBlenderですが、撮影した手に炎を持たせ映画さながら

ちなみに、Blenderでの「実写合成」(VFX)のやり方については、コチラの記事で紹介しているので、ぜひ参考にしてみてください!

CGbox
【Blender2.9】実写合成しよう!~VFX入門~ | CGbox はじめに こんにちは! 今回は3DCGソフト「Blender」上での、簡単な「実写合成」の方法について紹介します! 3DCGを実写背景動画と合成してみよう! 「実写合成」とは、文...

「マット(Matte)ノード」でマスクする

コンポジットでは、さまざまな方法でマスクができる「マットノード」(Matte)があります。

(さきほど紹介した「クリプトマット」(Cryptomatte)もその一つです。)

コチラのように全部で14種類あります(出典:Blenderリファレンスマニュアル)。

それぞれのノードの機能についてはまた別の機会に紹介したいと思いますが、今回はこの中で、「マスク」という名がついている以下3つのノードについて紹介します。

ボックスマスク(Box Mask Node)

コチラのように、箱型の四角い形状でマスクします。

縦横の長さ・位置はパラメータで変更できます。

楕円マスク(Ellipse Mask Node)

コチラのように、楕円形状でマスクします。

コチラのように縦横の位置・幅・長さ・回転はパラメータで変更できます。

ダブルエッジマスク (Double Edge Mask Node)

2つのオブジェクトIDマスクを組み合わせて、「ぼかし」の効果を加えられるマスクです。

コチラの例では、2つのキューブにオブジェクトID1と2を割り当てて、それぞれをダブルエッジマスクノードの「内部マスク」「外部マスク」につないでいます。

外部マスクの部分が「ぼかし」の効果で半透明になっているのが分かるかと思います。

まとめ

Blenderのコンポジットで使える、いろんなマスクの方法について紹介してみましたが、いかがだったでしょうか?

「コンポジット」と「マスク」を使いこなせるようになると、3DCGと実写を組み合わせたりなど多彩な表現ができるようになって面白いので、ぜひ試してみてください!

最後に、今回のまとめです。

  • コンポジットでのマスクの使い方一部を切り出して色補正したり、別々の画像の合成に使える!
  • コンポジット結果の表示方法について→レンダリングした後に「ノードを使用」をON!
  • マスクする手法を一挙紹介!
    • オブジェクト/マテリアルIDでマスクする→「ビューレイヤープロパティ」などで設定。
    • クリプトマット(Cryptomatte)でマスクする→大量のオブジェクトにマスク設定するときに便利!
    • アルファチャンネルでマスクする→RGBA分離ノードを使う。
    • 画像エディタ/動画クリップエディタでマスク作成→画像を切り出す時に便利!
    • 「マット(Matte)ノード」でマスクする→「ボックス」「楕円」「ダブルエッジ」など

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

CGBox編集部。CGに関する様々な記事を執筆しております。

目次
閉じる