Houdini 21.0 SolarisとKarma

AOVs

レンダリング変数のワークフロー。

On this page

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

少し分かりやすく説明すると、AOVsを使用することで、レンダリング画像を別々のパスに分割することができます。 例えば、深度、ディフューズ、発光、透明度などの情報を抽出することができます。 その後、それらの様々なパスをコンポジットアプリケーションに取り込んで、エフェクトや色調の調整を施します。 そして、それらの加工された画像平面/AOVを最終画像に合成します。

標準のAOVs

AOVを作成するにはいくつかの方法がありますが、最も手軽な方法は、Karma Render Settings LOPを使用することです。 Image Output ▸ AOVs (Render Vars) タブでは、そのLOPで利用可能なすべてのAOVを確認することができます。 AOVは DiffuseVolume といったセクションでグループ化されており、そこでエクスポートしたいAOVを有効にすることができます。

AOVを個別に管理したい場合は、Karma Standard Render Vars LOPを使用すると良いでしょう。 このLOPには、Karma Render Settings LOPとまったく同じカテゴリが用意されているものの、AOV毎に固有のパラメータがいくつか用意されています。

  • Solarisフィルタ構文を使用して、色々なフィルタを適用することができます。 フィルタパラメータの関連ドロップダウンメニューには、事前定義されたフィルタのリストが含まれています。

  • Output Colorspace パラメータでは、カラー空間をAOVに直接適用することができます。 このパラメータの関連ドロップダウンメニューから、利用可能なカラー空間(例えば、 ACEScg )を選択してください。

  • Precision ドロップダウンメニューでは、AOVのカラー深度を定義します。 16 Bit および 32 Bit のどちらかを選択することができます。

Split per LPE Tag チェックボックスは、AOV関連LOPノード すべて に共通して用意されています。 このオプションを使用するには、光源にLPEタグが割り当てられている必要があります。 LPEタグを使用することで、選択したAOVに対する特定の光源の寄与度を抽出することが可能です。 例えば、redwhiteblueというLPEタグが設定されていれば、beautyAOV(C)は自動でC_redC_whiteC_blueに分割されます。

追加Render Vars

Karma Render Settings LOPには、 Extra Render Vars セクションがあり、ここでカスタムAOVのルールを定義することができます。 Render Vars パラメータの値を増やすと、カスタムAOV毎にパラメータセットが生成されます。 代わりにAdditional Render Vars LOPを使用することもできます。

Tip

あなたがカスタムAOVの作成にまだ慣れていないのであれば、 Name パラメータのドロップダウンメニューを開いてください。 そこには、事前定義されたルールやAOVの長いリストが表示されます。 これらのエントリには、最も重要なAOVが網羅されているはずです。 それでもさらにカスタマイズが必要な場合は、これらをテンプレートとして利用すると良いでしょう。

Source Type のドロップダウンメニューでは、作成したいAOVのタイプを指定します。

  • Raw がデフォルトの選択肢になっており、レンダラーが Source Name 文字列(例えば、カメラ空間の深度を取得する場合はray:hitPz)を解釈できる必要があります。

  • Primvar では、AOVに出力されるアトリビュート(Primvar)を定義することができます。 典型的な例を挙げると、オブジェクトのテクスチャ座標を書き出すにはstを指定します。

  • LPE では、光線がサーフェスに相互作用した結果を出力するために使用します。 例えば、beautydiffusereflectionglossytransmissionなどがあります。 Light Path Expressionsの作成に関する詳細は、LPEガイドを参照してください。

  • Intrinsic のルールには、例えばCPU時間や光線の数などの統計情報を含めることができます。

Scene Graph Tree

アクティブなすべてのAOVは、Scene Graph Treeペインにリストされます。 それを確認するには、/Render/Products/Varsブランチを展開してください。 以下の場所では、そのデフォルトパスを変更することができます:

  • Karma Render Settings LOP ▸ Image Out Put ▸ AOVs (Render Vars) ▸ Existing Render Vars

  • Karma Standard Render Vars ▸ Parent Primitive Path

  • Additional Render Vars ▸ Parent Primitive Path

AOVsを確認する方法

インタラクティブなプレビューレンダリングを開始すると、ビューポート内でアクティブなAOVを直接評価することができます。

  • ビューポートの右上コーナーにある、 1つ目 のドロップダウンメニューを開きます。 デフォルトのエントリは Persp になっています。メニューから Karma デリゲートのどれかを選択してください。

  • ビューポートの右側にあるアイコンバー上の Render Outputs ボタンをクリックすると、すべてのアクティブなAOVが表示されます。 リストから1つを選択すると、レンダリングが更新され、そのチャンネルを確認することができます。

MPlayにレンダリング結果を出力した場合、ドロップダウンを使用して、利用可能なすべてのAOVから選択することができます。 メニューのデフォルトのエントリは C です。

マテリアルベースのAOVs

AOVは、サーフェスプロパティ、Primvars、その他のソースタイプだけでなく、マテリアルからも作成することができます。 最初の手順は、AOVを定義して、以下に示すシェーダネットワークを作成することです。

画像をクリックするとズームします。

すべての作業は、Material Library LOPの中で行ないます。 stage レベルでそのMaterial Library LOPをダブルクリックして中に入ります。 そこで、Tabメニューから Karma Material Builder ツールを実行します。 このツールは、Subnetwork VOPをセットアップします。そのSubnetwork VOPをダブルクリックして中に入ると、基本的なシェーダネットワークが表示されます。

次に、MtlX Image VOPを配置します。 Filename パラメータで、 Open floating file chooser… ボタンをクリックしてテクスチャを読み込みます。 この目的は、このテクスチャをカスタムマテリアルベースのAOVとしてエクスポートすることです。

Karma AOV VOPを配置します。 複数のAOVを書き出したい場合は、テクスチャ毎に1個のKarma AOV VOPが必要になります。 新しいノードのパラメータを確認すると、 Create Render Var が有効になっていることが分かります。 このオプションは、 AOV Name に入力された名前でAOVを作成します。 デフォルト値が$OSなので、AOVの名前にはそのノード名が使用されます。 ここでは、名前をkarmaとします。以下のようにノードを接続します:

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

  • Karma AOV VOPの出力をMaterial_Outputs_and_AOVsノードのnext入力に接続します(next入力の名前は、その接続されたKarma AOVの名前に変わります)。

これで、Karma AOV VOPの入力先を別のノード(例えば、MtlX Unified Noise 3D VOPやその他の有効なノード)に置き換えることもできます。 KarmaはAOVを自動で更新します。 Scene Graph Treeを確認すると、karmaというAOVが表示されていることが分かります。

ノイズ除去とトーンマッピング

Karma Render Settings LOPには、AOVのノイズを除去するためのパラメータが用意されています。 Image Output ▸ AOVs (Render Vars) ▸ Filters タブに進みます。 Denoiser ドロップダウンメニューから、デノイザ(例えば、 NVIDIA OptiX Denoiser )を選択します。

AOVs パラメータには、ノイズを除去したいRender Varsをスペースで区切ったリストを指定します。 正しいAOV名が分からない場合は、 AOVs パラメータの関連ドロップダウンメニューからエントリを選択することもできます。 そこには、アクティブなすべてのRender Varsが網羅された完全なリストが表示されます。

また、 Filters タブには、 Tone Map ドロップダウンメニューがあります。 ここでは、 AOVs パラメータに追加したRender Varsに適用されるトーンマッピングカーブを選択することができます。 操作方法は、デノイザと同様です。

順序を定めたRender Vars

状況によっては、最終画像/出力内のAOVの順序を変更したい場合があります。 その場合は、Render Product Edit LOPを使用し、Karma Render Settings LOPの下流に追加してください。 Render Product Edit LOPの Standard タブに Ordered Render Vars パラメータがあります。 このパラメータの関連ドロップダウンメニューには、利用可能なすべてのAOVのリストが表示されます。 画像に保存したい順序でAOVを追加してください。

特定のAOVを最上位に配置し、残りの順序は問わない場合は、ワイルドカードを使用すると良いでしょう例:

/Render/Products/Vars/combinedglossyreflection /Render/Products/Vars/**

MPlayにレンダリング結果を出力した場合でも、この順序は維持されます。 ただし、MPlayでは最終画像が表示されるようにデフォルトで常にbeautyパスが表示されます。 また、Scene Graph TreeにはAOVの順序が反映されない点にも注意してください。

AOVsを書き出す方法

Karma Render Settings LOPでは、画像およびそのAOVの出力パスを指定することができます。 Output Picture パラメータは、様々な変数を組み合わせてファイル名を生成しますが、カスタムパスを定義することもできます。 ディスク上の保存先を選択するには、 Open floating file chooser ボタンをクリックします。

最後にAOVsを書き出すには、USD Render ROPも必要になります。 そこで、 Valid Frame Range を調整して、 Render to Disk ボタンまたは Render to Disk in Background ボタンをクリックします。 アクティブなAOVは、マルチチャンネルEXRファイルとして保存されます。

Render to MPlay ボタンをクリックした場合、MPlayパネルの File メニューを開いて、 Save Frame As… または Save Sequence As… を選択することができます。 表示されるダイアログに従って操作することで、EXRファイルを保存することができます。

Cryptomatte

KarmaはCryptomatte AOVsに対応しており、以下のデータソースを使用してCryptomatte IDsを作成することができます:

  • Primitives

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

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

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

Tip

詳細は、Cryptomatteガイドを参照してください。

SolarisとKarma

SolarisとUSD

  • USDの基本

    いくつかUSDの概念について取り上げ、それらの概念とHoudini USD対応との関係性について説明します。

  • LOPの挙動

    Solaris LOP(Lighting Operator)がUSDを生成/変更する際の挙動について説明します。

  • Solarisユーザインターフェース

    LOPネットワークとUSDデータを操作するためのユーザインターフェースの使い方を案内します。

  • プリミティブマッチングパターン

    USDプリミティブマッチング構文の使い方。

  • LOPとUSDの用語集

    USDわかりますか?

  • Solarisシーンビューア

    Houdiniオブジェクト/SOPビューアと比較したSolarisビューアの違い/拡張について説明します。

  • USDでのVEXの使い方

    スクリプトによってSolaris/USDをカスタマイズする。

  • USDへ書き出す方法

    USDデータをディスクに保存します。

  • SOP Geometry I/O

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

  • Component Builder

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

  • パフォーマンスTips

    Solarisのインタラクティブなワークフローを向上させます。

  • サンプルシーン

    SolarisとUSDを学習するのに役立つシーンとアセットを紹介します。

Karma

  • Karma

    Houdiniの物理ベースのUSDレンダラー。

  • Karma XPU

    Houdiniの高速でモダンなXPUレンダーエンジン。

  • カラーマネージメント

    OCIO、カラー空間、ガンマ、トーンマッピングについて詳しく学習します。

  • レンダリング統計

    進行中のレンダリングやレンダリング画像のレンダリングプロセスに関して、様々な統計情報を表示する方法。

Karmaユーザガイド

ルック開発

  • MaterialX

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

  • UDIMパス

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

  • シェーダ変換

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

  • Shotbuilderツール

    マルチショットパイプライン用便利ツール。

プロシージャル

補足ドキュメント