Houdini 20.0 Solaris

KarmaでのCrypromatteとマテリアルAOVs

On this page

AOVs(“Arbitrary Output Variables:任意の出力変数”)は、別名Extra Image Planes(追加画像平面)とも呼び、OpenEXRなどの“ディープ”(マルチ平面)に対応したレンダリング画像フォーマットで、追加でピクセル単位のデータを記録します。

マテリアルベースのAOVs

以前のバージョンのHoudiniでは、マテリアルベースのAOVを書き出すのに、かなり面倒な方法に従わなければなりませんでした。 Karma AOVはMtlX Standard Surface VOPに接続されておらず、代わりにMtlX Switch VOPに接続されていました。 そのAOVに切り替えた後に、Karma Render Settings LOPに進んで追加でRenderVarを作成し、名前を設定し、そのAOVのシグネチャを指定しなければなりませんでした。 その後でAOVが表示されました。 このワークフローは互換性を保つ理由で今でも利用可能ですが、もう使用しないでください。

Houdini20では、カスタムAOVsをセットアップするワークフローが大幅に改良され、今ではそれが推奨される方法になっています。 ただし、マテリアルベースのAOVsはまだUSDの概念ではないので、少し遠回りする必要があります。

AOVを定義する方法

最初の手順は、AOVを定義し、以下に示したようなシェーダネットワークを作成します。

画像をクリックするとズームします。
  1. Material Library LOPの中に入り、⇥ Tabを押してTabメニューを開きます。そこからKarma Material Builderツールを選択します。このツールはSubnetwork VOPをセットアップします。そのサブネットワークをダブルクリックして中に入ります。

  2. そのサブネットワークには既にいくつかのノードが含まれています。MtlX Image VOPを追加します。

  3. Filename パラメータの横にある Open floating file chooser… ボタンをクリックして、テクスチャを読み込みます。

    ここでの目的は、このテクスチャをカスタムマテリアルベースのAOVとしてエクスポートすることです。 いくつものAOVを書き出したいのであれば、テクスチャ/シェーダ毎に1個のKarma AOV VOPが必要になります。

  4. Karma AOV VOPを追加します。この新しいノードのパラメータを見ると、 Create Render Var が有効になっていることが分かります。このオプションは、 AOV Name パラメータに入力されている名前のAOVを作成します。デフォルトの入力の$OSは、ノードの名前を使用します。ここでは、名前をbarrel_diffuseと入力します。

  5. MtlX Image VOPの出力をKarma AOV VOPの入力に接続します。

  6. Karma AOVの出力をMaterial_Outputs_and_AOVsノードのnext入力に接続します。その入力の名前が、接続先のKarma AOVの名前に変わったことが分かります。

このネットワークは、AOVを作成し、自動的にそのAOVがUSD/Karmaで利用できるようにします。 Scene Graph Treeを見ると、barrel_diffuse AOVを確認することができます。

AOVの使い方

AOVを動作させるには、Karma Render Settings LOPを接続すれば良いだけです。 このノードによってAOVが認識され、ビューポートでそのAOVを有効にすることができます。

  1. ビューポートの右側にある Display Options バーの Viewing output ボタンをクリックします。

  2. ドロップダウンメニューからbarrel_diffuse AOVを選択すると、そのAOVがビューポートに表示されます。

左側の画像は、ビューポートでのレンダリング結果を示し、右側の画像はbarrel_diffuse AOVを示しています。

これでKarma AOVの入力を別のノードに置換できるようになっているので、例えば、MtlX Unified Noise 3D VOPや他の有効なノードに置換すると良いでしょう。 この新しいワークフローは、AOVを自動的に更新するので、手動で何かする必要はありません。

Cryptomatte

KarmaはCryptomatte AOVに対応しており、以下のデータソースを使用したCryptomatte IDsの生成に対応しています。

  • Primitives

  • Primsにバインドされているマテリアル

  • ConstantまたはUniformの文字列/整数Primvars

インスタンス毎に固有なIDを生成していれば、マテリアルスタイルシートを使用する必要がありません。 あなたがすべき事は、インスタンス毎に固有の文字列Primvar値を割り当てることだけです。

Tip

さらなる情報は、Cryptomatteガイドを参照してください。

How to

To...Do this

Karmaから手動でCryptomatte AOVを出力する

  1. Karma LOPまたはROPで、 Image Output ▸ AOVs サブタブに進んで、 Extra Render Vars セクションを展開します。

  2. プラスボタンをクリックしてRender Varを追加します。

  3. 作成するAOVの名前を Name に設定します。

  4. Format を設定し、 Data Typecolor3fに設定します。

  5. Source TypePrimVarに設定します。

  6. レンダージオメトリ上のUSD Primvarの名前を Source Name に設定します。

Cryptomatteを使ってAOVを出力する

  1. IDの生成元のインスタンス上にConstantまたはUniformの文字列Primvarを作成します。

  2. 上記の手順に従ってカスタムAOVを追加します。そのAOVのフィールドを入力する時は、以下の設定をします。

    • インスタンス上に作成したConstantまたはUniformの文字列Primvarの名前を Source Name に設定します。

    • Cryptomatte チェックボックスを有効にします。

See also

Solaris

USD

ジオメトリ

  • SOP Geometry I/O

    HoudiniがSOPジオメトリをUSDに変換する方法、その工程を制御する方法の詳細。

  • Component Builder

    Component Builderツールは、マテリアル、バリアント、ペイロード、レイヤーをサポートし、SOPからUSDモデルを作成するためのネットワークスニペットを配置します。

レイアウト

  • Editノード

    ビューア内でインタラクティブにPrimsをトランスフォームさせます。物理衝突を使用して、プロップを現実的に配置することができます。

  • Layoutノード

    インスタンス化されたUSDアセットをシーンに取り込むツールが備わっています。個々にコンポーネントを配置したり、カスタマイズ可能なブラシを使って色々な方法でコンポーネントをペイント/スキャッターしたり、既存のインスタンスを編集することができます。

  • カスタムレイアウトブラシ

    Layout LOPの挙動をカスタマイズして利用可能なレイアウトブラシデジタルアセットの作成方法。

ルック開発

  • MaterialX

    HoudiniにはMaterialXシェーダノードに呼応させたVOPノードが用意されています。これらのノードを使用してシェーダネットワークを構築したり、既存のMaterialXベースのシェーダをインポートすることで、(HoudiniのUSDレンダラーの)KarmaでMaterialXシェーダノードを利用することができます。

  • UDIMパス

    テクスチャ空間の異なるタイルを、それぞれ別の解像度で、異なるテクスチャファイルにエンコードすることができます。その後、kaiju.exrといったテクスチャファイル名を指定すると、Houdiniがロード時にそのトークンを特定のタイルアドレスに置き換えてくれます。

  • シェーダ変換フレームワーク

    シェーダノードのUSDプリミティブへの変換を含む、Solarisシェーディングフレームについて説明しています。

Karmaレンダリング

チュートリアル