Cryptomatte について


お久しぶりです篠島です。弊社が2月に行ったセミナーの最後に自分の簡単なデモで Cryptomatte を紹介したのですが、せっかくなのでこれを記事にまとめたいと思います。

 

今回のサンプルファイルです。
Cryptomatte.zip

Cryptomatte とは

オープンソースのマット作成ツールで、Githubのページにて詳細が書かれています。オブジェクト名、マテリアル名、カスタムプロパティ(String)によってレンダリング時に自動的にマットを生成してくれるとっても便利なツールで、Houdini 16.5 で Cryptomatte の機能が搭載されました。

今回は下のようなオブジェクト4つからなる簡単なテストシーンを使って説明します。各オブジェクトには赤、青、緑のシェーダーが割り当てられています。では早速マットの作り方を見ていきましょう。

 

オブジェクト名からマット作成

Mantra ROP の Images > Cryptomatte タブで設定をします。Cryptomatte Layers で + アイコンを押すと事でCryptmatte のレイヤーが追加されていきます。この Property の所の三角ボタンから Object Name を選び、Output Picture からマットの保存先を指定します。ファイルは EXR 形式にしましょう。

 

そしてレンダリングをすると、Output Picture で指定した部分にファイルが作られていると思います。 これを COP ネットワーク内で読み込んで Cryptmatte COP を繋げます。

 

Cryptomatte COP の下の方に英語で説明が書かれていますが、コンポジットビューを左クリックでマット選択、Shift + 左クリック でマットを追加できます。そしてプロパティ画面の中でどのオブジェクトが選択されているかというのが表示されます。

 

 

マテリアル名からマット作成

次にマテリアル名からマットを作成してみます。オブジェクトにマテリアルがアサインされていることを確認し、Mantra ROP で先程のようにレイヤーを追加します。そして今回は Property の三角ボタンから Material Name を選びます(デフォルトでこの設定になっているので何もしなくてもいいです)。後は先ほどと同じ様に Output Picture で出力先を指定します。

 

そして先程と同様にレンダリング、COP 内で読み込み Cryptomatte COP でマットを選択してみます。Cryptomatte のプロパティ内でマットがマテリアルのパスになっているのが分かるかと思います。

 

カスタムプロパティ(String)からマット作成

今回のサンプルのティーポットの様に、一つのジオメトリ内に複数のオブジェクトが含まれている場合があるとします。こういう場合はカスタムプロパティを使ってマットを作成します。まずジオメトリのギアアイコンから Edit Parameter Interface… を選び、

 

左側にあるRender Properties タブから User という項目を右側に追加します。

 

すると、ジオメトリのプロパティ画面で User タブが表示されるので、Property の部分にカスタムプロパティの名前を指定します。ここの部分を後で Mantra ROP で指定します。Type はString にするのを忘れないようにしましょう。String Value には分かりやすい名前を付けて下さい。この値が同じものは同一のマスクが割り当てられます。

 

そして同様に COP で操作してみます。ティーポットは複数のティーポットから構成されているので、マテリアルスタイルシートを使ってランダムにプロパティを割り当てました。マテリアルスタイルシートでランダムのアトリビュートやプロパティを設定する方法に関してはこちらの記事で詳しく説明しています。Cryptomatte のヘルプページでも詳しく説明されているので、この記事のサンプルファイルと合わせて参考にしてみてください。