Houdini 20.5 SolarisとKarma Karmaユーザガイド

Karmaユーザガイド テクスチャマップ

On this page

Previous マテリアル

概要

この章はマテリアルに関する前の章の続きですが、特にテクスチャマップに焦点を当てています。Karma CPUは、UVおよびPtexテクスチャマップに対応していますが、XPUはまだPtexに対応していません。マテリアルのファミリー別に、マップを読み込むための独自のシェーダがあります。

シェーディングファミリー

画像入力ノード

MaterialX

Karma

USD Preview

VEX

Note

MaterialXノードの文字列入力(例えば、画像読み込みノードのファイルパス)は、オブジェクトのトポロジ全体にわたって一定であることを保証するために、 uniform 文字列になっています。Paramater VOPなどの一部のノードでは、エラーなしで文字列入力に接続するために、uniformトグルが必要となります。

テクスチャ座標

デフォルトで、テクスチャマップを読み込むシェーダは、デフォルトのテクスチャ座標セット(タイプtexcoord2dprimvars:stなど)を使用します。Karmaは、未接続のtexcoord入力を、MtlX Texcoordノードに接続されているかのように暗黙的に扱います。

任意のUV座標を作成することもできます。アセットに複数のUVセットがある場合や、非標準の名前を使用する場合は、Primvar Reader系ノードを使用して様々なテクスチャ座標を指定し、テクスチャマップを読み込むことができます。

UDIM

Karma CPUとKarma XPUは、どちらもUDIMテクスチャに対応しています。現在のところ、UDIMはMtlX Tiled Imageでは動作しません。そのノードの実装方法が原因です。

また、Solarisには、アーティスト側でUDIMを調整できるように設計されたユーティリティノードが用意されており、Primvarを使用してテクスチャバリエーションを駆動させることができます。これらのノードは、MtlXノードグラフとして実装されているので、理論的には、レンダリング時にUDIMタイルを変更することが許容されているどのUsdMaterialXレンダラーでも動作するはずです。

シェーディングファミリー

画像入力ノード

MaterialX

Copernicus

  • Copernicusネットワークは、テクスチャを作成または変更できます。

  • マテリアルは、ディスクファイルパスの代わりに、op:という接頭辞が付いたパスをCOPノードに渡すことで、COPテクスチャをライブで読み込むことができます。

  • USDがディスクに書き出されるとき、これらのテクスチャも書き出されます。

  • Quick Surface Materialには、COPテクスチャをセットアップするためのショートカットがあります。

フォーマット

Karmaは、Houdiniが対応しているすべての画像フォーマットだけでなく、OpenImageIOを介して対応されている多くの画像フォーマットにも対応しています。テクスチャフォーマットは、パフォーマンスとカラー空間の想定に影響を与えます。

mipmapおよびタイル化されたテクスチャを使用すると、パフォーマンス(特にTime to First Pixel:いざピクセルのレンダリングを開始するまでの時間)が大幅に向上します。通常は、mipmapされた.exrまたは.ratテクスチャファイルを使用することをお勧めします。タイル化されていないフォーマットを検出すると、Karmaは自動的に.ratに変更します(詳細は、自動変換を参照)。

imaketxコマンドラインユーティリティを使用すると、他の画像フォーマットからmipmapされた.exrおよび.ratファイルを生成することができます。imaketxは、.exr画像に対して1枚のAOVのみをmipmapするのに対して、.ratはすべてのチャンネルのmipmapに対応している点に注意してください。

Tip

OpenImageIOから利用可能なフォーマットのリストは、コマンドライン(hoiiotool --list-formats)またはPython(OpenImageIO.get_string_attribute("extension_list"))を介して取得できます。

自動変換

Houdini 20.0以降、Karmaはデフォルトで、mipmapおよび/またはタイル化されていないテクスチャを自動変換します。HOUDINI_TEXTURE_DISK_CACHE環境変数を設定なしに設定することで、この挙動を無効にすることができます。まだHoudini 19.5を使用している場合は、その環境変数を all に設定することで、この機能を有効にすることができます。loggingパネルを追加してKarmaのログを調べれば、テクスチャが変換されているかどうかを判断できます。または、コマンドラインからレンダリングする場合は、verbosityを3以上に設定します。

[09:02:04] Texture Disk Cache: Converting image /jobs/gramophone.usdz[Gramophone_Normal.png] to texture /tmp/houdini_temp/hfsT7MYFL
[09:02:05] Texture Disk Cache: Finished writing output file /tmp/houdini_temp/hfsT7MYFL
[09:04:11] Texture Disk Cache: Converting image /jobs/maps/mandril.jpg to texture /jobs/aces/maps/mandril.jpg.rat
[09:04:11] Texture Disk Cache: Finished writing output file /jobs/maps/mandril.jpg.rat    

フィルタリングコントロール

inputs:karma_blur を0、0.05、0.2、0.45、0.8に設定

通常、KarmaはMIPレベルの選択とテクスチャマップのフィルタリングを自動的に処理します。Karmaには追加のコントロールがいくつか用意されています。mtlximageに入力を追加することで、MIPレベルとテクスチャマップの品質を明示的に制御できます。

  • Karma Texture Controlsのレシピは、MtlX Imageノードにフィルタリングオプションを追加する最も簡単な方法です。

  • 既存のマテリアルを編集するには、Edit Propertiesノードを作成し、mtlximageシェーダPrimを指定します。 Edit Properties ボタンをクリックすると、利用可能なコントロールが表示されます。

  • いくつかのコントロールは、Karma Material Propertiesでも使用できます。

カラー空間

Karmaは、シーンのリニアカラー空間で内部的にレンダリングするため、テクスチャマップをリニア空間に変換する必要があります。Hydraはパラメータメタデータを渡さないため、Karmaはいくつかの方法でソースのカラー空間を判断します:

  1. カラー空間入力が“raw”、または型がvectorの場合、Karmaは画像カラーを変換しません。

  2. Readerノードが“Auto”に設定されている場合、Karmaはソースのカラー空間を検出する処理を実行します:

    1. diffuse_map.rec709.exrなど、ファイル名に埋め込まれたロール文字列をチェックします。

    2. 画像ファイル内のメタデータからカラー空間の仕様をチェックします。

    3. 8ビット画像ではsRGBを想定し、他のフォーマット/ビット深度ではリニアを想定します。

Hydraはパラメータメタデータを渡さないため、color3またはcolor4のシグネチャを持つMtlX Imageノードは常に“Auto”モードになります。MtlX Imageノードで画像を強制的に(変換なしで)リニアで読み込ませるには、パラメータのシグネチャを非カラー値(floatvector3vector4など)に設定します。

次のステップ

Karma向けのシェーダとマテリアルの構築の詳細については、SolarisでのMaterialXの使い方を参照してください。

Karmaユーザガイド

Appendices