On this page |
Previous マテリアル
概要 ¶
この章はマテリアルに関する前の章の続きですが、特にテクスチャマップに焦点を当てています。Karma CPUは、UVおよびPtexテクスチャマップに対応していますが、XPUはまだPtexに対応していません。マテリアルのファミリー別に、マップを読み込むための独自のシェーダがあります。
シェーディングファミリー |
画像入力ノード |
---|---|
MaterialX |
|
Karma |
|
USD Preview |
|
VEX |
Note
MaterialXノードの文字列入力(例えば、画像読み込みノードのファイルパス)は、オブジェクトのトポロジ全体にわたって一定であることを保証するために、 uniform 文字列になっています。Paramater VOPなどの一部のノードでは、エラーなしで文字列入力に接続するために、uniformトグルが必要となります。
テクスチャ座標 ¶
デフォルトで、テクスチャマップを読み込むシェーダは、デフォルトのテクスチャ座標セット(タイプtexcoord2d
のprimvars: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
フィルタリングコントロール ¶

通常、KarmaはMIPレベルの選択とテクスチャマップのフィルタリングを自動的に処理します。Karmaには追加のコントロールがいくつか用意されています。mtlximage
に入力を追加することで、MIPレベルとテクスチャマップの品質を明示的に制御できます。
-
Karma Texture Controlsのレシピは、
MtlX Imageノードにフィルタリングオプションを追加する最も簡単な方法です。
-
既存のマテリアルを編集するには、
Edit Propertiesノードを作成し、
mtlximage
シェーダPrimを指定します。 Edit Properties ボタンをクリックすると、利用可能なコントロールが表示されます。 -
いくつかのコントロールは、
Karma Material Propertiesでも使用できます。
カラー空間 ¶
Karmaは、シーンのリニアカラー空間で内部的にレンダリングするため、テクスチャマップをリニア空間に変換する必要があります。Hydraはパラメータメタデータを渡さないため、Karmaはいくつかの方法でソースのカラー空間を判断します:
-
カラー空間入力が“raw”、または型が
vector
の場合、Karmaは画像カラーを変換しません。 -
Readerノードが“Auto”に設定されている場合、Karmaはソースのカラー空間を検出する処理を実行します:
-
diffuse_map.rec709.exr
など、ファイル名に埋め込まれたロール文字列をチェックします。 -
画像ファイル内のメタデータからカラー空間の仕様をチェックします。
-
8ビット画像ではsRGBを想定し、他のフォーマット/ビット深度ではリニアを想定します。
-
Hydraはパラメータメタデータを渡さないため、color3
またはcolor4
のシグネチャを持つMtlX Imageノードは常に“Auto”モードになります。MtlX Imageノードで画像を強制的に(変換なしで)リニアで読み込ませるには、パラメータのシグネチャを非カラー値(float
、vector3
、vector4
など)に設定します。
次のステップ ¶
Karma向けのシェーダとマテリアルの構築の詳細については、SolarisでのMaterialXの使い方を参照してください。
Next レンダリング