[blender]IDマスクは使い物になるのか?Cryptomatteの使い方[3DCG]

blender2.82a
blenderには以前からIDマスクという機能がありまして、オブジェクトやマテリアルごとにマスクを出力出来るのですが・・・
話だけ聞くと便利そうですよね?
オブジェクト毎にコンポジットで色を変えたりとか出来そうです。
やってみましょう。


IDマスクを使うにはパスインデックスを指定する
オブジェクトとマテリアル両方にパスインデックスを指定しようと思います。
まずCubeのプロパティウィンドウのオブジェクトタブの関係でパスインデックスを指定します。
最初は0になっているので1などにしましょう。

次にマテリアルのIDマスクの指定をします。
マテリアルが一つだけだとオブジェクトをマスクするのと何ら変わりは無いのでマテリアルを二つ作り、二つ目をいずれかの面に割り当てましょう。
下の方にある設定でパスインデックスを指定できます。
こちらは2にしておきましょう。



次にビューレイヤープロパティタブのパスでオブジェクトインデックスとマテリアルインデックスにチェックを入れます。
そしてレンダリングしましょう。
終わったらコンポジターに変えます。

IDマスクを使うにはコンポジットでIDマスクノードを繋ぐ
コンポジターでノードを使用をチェックして背景をオンにします。
ビューアーを追加し、コンバーター→IDマスクノードを追加します。
IndexOBやIndexMAをIDマスクノードに繋ぎ先ほど指定したインデックスを選ぶとそのマスクが表示されます。








IDマスクを使って色を変えてみる
マスクが出力されたのでこれを使って色を変えてみましょう。
カラー→ミックスを追加しIDマスクノードの出力を係数に繋ぎましょう。
そして上には画像下には好きな色を指定してマスク部分の色を変えます。


結果がこちら
オイ!コラッ!
ダメダメじゃないですか。
なんかギザギザしてたから嫌な予感はしてましたが見ての通り赤い色が残っています。
アンチエイリアスのチェックもありますが大して結果は変わりません。
IDマスクには難があります。
切り抜き程度には使えると思いますが、実用的とは言えません


Cryptomatteを使ってみる
Cryptomatteはblender2.8から追加された新機能です。
期待せずに使ってみましょう。
こちらの使い方は簡単で、パスからCryptomatteのオブジェクト、マテリアル、アセットをそれぞれオンにするだけです。
今回はオブジェクトとマテリアルだけを使います。
レンダリングしてコンポジターに移動します。



背景をオンにします。
マット→Cryptomatteを追加します。
画像とCryptoMaterial00~02をそれぞれCryptomatteノードの対応したところに繋ぎピックをビューアーノードの繋ぎます。
すると背景にマテリアル分けされた画像が表示されます。
マットオブジェクトの追加をクリックして、背景の編集したいマテリアルをクリックします。
そしてビューアーに画像を繋ぐとそのマテリアルだけが抽出されます。 


マットをビューアーに繋ぐとマスクが出力されます。
先ほどと同じように色を変えてみましょう。


若干色が残っていますがIDマスクより良いんじゃないでしょうか。


色が残っていますがマスク画像に数式ノードを追加し乗算で値を大きくすると少しはマシになります。
アンチエイリアスが犠牲になりますが・・・









多少の妥協は必要ですがほとんど前準備が要らず便利な機能です。
試しにオブジェクトを複製してみます。

これだけのオブジェクトを設定なしに個別にマスクを作成できるの便利ですね。