On this page |
概要 ¶
Cryptomatteは、個々のピクセルをオブジェクトIDと関連付けた画像を生成、使用するためのオープンソースツールセットです。 一般的には、“Cryptomatte”は、ツールによって、あるいはHoudiniをはじめとするソフトウェアに搭載された同等の機能によって生成される画像タイプとして知られています。 これはピクセル毎にオブジェクト名/マテリアルを格納するディープEXR画像で、特殊なフィルタリングによってアンチエイリアシングと透明度を適切にサポートします。
この画像を使用すると、特定の3Dソースオブジェクトと関連付けられたピクセルを対象に、コンポジットエフェクトをマスクすることができます。
下図の例では、Cryptomatte画像を使用して、Houdiniコンポジターネットワークの特定のマテリアルを分ける方法を示しています。
仕様や一般的なコンポジットアプリケーションのプラグインについては、Cryptomatteの公式サイトを参照してください。
Note
CryptomatteはKarma CPUとKarma XPUでサポートされています。
Tipsとメモ ¶
-
Cryptomatteは、プライマリ平面のピクセルフィルタを使用します。 独自のピクセルフィルタプラグインを使うこともできますが、追加画像平面からデータを読み込むフィルタ(例えば、
Z
平面からデータを読み込むminmax
フィルタ)は許可されていません。 -
マイクロポリゴンレンダリングモードでCryptomatteを生成することはできません。
-
Opacity(不透明度)とTransparency(透明度)は別物であることを覚えておいてください: 部分的に不透明なマテリアルは、カメラ光線を通過できるのに対し、透明マテリアルはカメラ光線を遮り、セカンダリ(屈折)光線を放射します。 ピクセル領域はOpacity(不透明度)に基づいて計算されるので、屈折マテリアルの背後にあるオブジェクトに対してマットを生成することができません。
How to ¶
To... | Do this |
---|---|
Karmaを使用してUSDシーンをCryptomatte画像に出力する |
KarmaのCryptomatteを参照してください。 |
Mantraを使用して従来のHoudiniオブジェクトレベルシーンをCryptomatte画像に出力する |
Mantra ROPは、Cryptomatte画像をメインレンダリング画像内または追加生成ファイル内のAOV平面として生成することができます。
|
Cryptomatteからコンポジター内にマスクを生成する |
Cryptomatte COPのヘルプを参照してください。 |
インスタンス化と固有IDs ¶
他のインスタンス間で特定のインスタンスをマットするには、各インスタンスに固有の値のユーザ文字列プロパティを使って、Cryptomatteを生成する必要があります。
以下がMaterial Stylesheetsを使った方法の例です:
-
インスタンスをセットアップします。
-
必ず Fast Point Instancing を使ってください。
-
Attribute Expression(または、あなたが気に入っているメソッド)を使って、
Instance
ノード内の各ポイントに固有の整数値を割り当てます。 -
Instance
ノードにユーザ文字列プロパティを追加します。 -
ルートレベルでスタイルシートを追加し、Targetを Point Instances 、Override Scriptを Render Property にして、 Inline Script を使ってスクリプトを記述し、適切なバインドをセットアップします:
インラインスクリプトの例:
cvex myFn(int id=0; export string myuserprop="") { myuserprop = sprintf("foo%d", id); }
この例では、ユーザプロパティの名前がmyuserprop
です。Point整数アトリビュートの名前がmypointid
です。
生成される固有のプロパティ値は、foo0
, foo1
, foo2
など(mypointid
アトリビュートからの値が入ります)です。
この例では、 Inline Script は、整数アトリビュートを文字列プロパティに変換するためだけに必要でした。 文字列アトリビュートを使っている場合は、単に Attribute Binding を使うことで、このスクリプトとデータバインドの処理をスキップすることができます。
スタイルシートの使い方の詳細は、Material Stylesheetsを参照してください。