はじめに
こんにちは。大城です。
HoudiniのCryptomatte COPの使い方にちょっと躓いたので、使い方を残しておきます。
そもそもCryptomatteとは
Cryptomatteはレンダリングパスの一つで、特定のオブジェクトやマテリアルを選択、マスク、操作するためのデータを生成します。オブジェクトごとに一意のカラーチャンネルを割り当て、コンポジティングソフトで簡単に特定要素を選択可能にします。
つまりCryptomatteがあるとコンポジットで要素ごとのマスクがしやすくなるということですね。
Cryptomatte COPはCOPでそのCryptomatteのマスクを取るノードです。
サンプルシーン
至極シンプルに、オブジェクトをいくつか並べたシーンを作りました。
Scene Graph Treeはこんな感じ
Karma Render Settings
AOVでCryptomatteの出力設定を行います。
Karma Render Settings LOPのImage Output
>AOVs (Render Vars)
>Extra Render Vars
からCryptomatteの設定を追加します。
Cryptomatte Object Name(オブジェクトごとのCryptomatte)
かCryptomatte Material Name(マテリアルごとのCryptomatte)
を選択します
exrのマニフェストを調べる
レンダーしたexrの画像にはメタデータとしてCryptomatteのオブジェクト名が含まれます。
Cryptomatte COPでマスクを作るために、まずこのメタデータを見る必要があります。
今回はHoudiniのスタンドアロンユーティリティの1つであるiinfo
を使います。
Houdiniのスタンドアロンユーティリティを使う方法はいくつかありますが、今回はHoudiniのツールバーからシェルを立ち上げます。
シェルで以下のコマンドを打ちます
iinfo -v path/to/filename.exr
まずこの文字列の中の最初あたりのMeta Data:
を探します。
Meta Data:
のインデントの中のcryptomatte/(16進数の数字)/manifest (type string)
という項目を探します。
今回の私のデータはこんな感じ。これが欲しかったデータです。
cryptomatte/3ae39a5/manifest (type string):= "{"/grid1/mesh_0":"ff21a168","/rubbertoy/geo/shape":"cd53092d","/pig/geo/shape":"42f2c749"}"
Cryptomatte COP
CopNetを作り、File COPでexrを読み込みます。
Add AOVs from File
をクリックするとexrのAOVも読み込まれます。
CyptoObjectxx
のピンを全部Cryptomatte COPにつなぎます。(とはいえ今回マスクしたい情報が入っているのはCryptoObject00だけですが)
ここでさっき探したマニフェストデータを見てみます。
/grid1/mesh_0
と/rubbertoy/geo/shape
、/pig/geo/shape
というキーがありますね。これがそれぞれのオブジェクトの名前です。
cryptomatte/3ae39a5/manifest (type string):= "{"/grid1/mesh_0":"ff21a168","/rubbertoy/geo/shape":"cd53092d","/pig/geo/shape":"42f2c749"}"