Q100170: Katana でオブジェクトにテクスチャを適用する方法

まとめ

テクスチャはシェーダー ライブラリとスタジオ パイプラインによってさまざまな方法で処理され、 Katanaいくつかの一般的な規則に従ってテクスチャを割り当てるための柔軟なフレームワークを提供します。

以下は、3Delight、RenderMan、Arnoldレンダラーで使用できるオプションの概要です。ここで説明した両方のアプローチを示す添付のサンプルシーンもご覧ください。

 

詳細情報

マテリアル属性を使用してテクスチャを宣言する

各オブジェクトに独自のテクスチャを割り当てる最も簡単な方法は、オブジェクトごとにマテリアルを作成し、シェーダー内でテクスチャを文字列パラメータとして明示的に宣言することです。その後、各オブジェクトに適切なマテリアルを割り当てます。

このアプローチは、特に多数のオブジェクトを含むシーンで作業する場合に最も手間がかかり、マテリアルに変更を加える必要がある場合に柔軟性に欠けます。

多くの場合、多くのオブジェクトが同じマテリアルを共有しますが、それぞれに異なるテクスチャを割り当てる必要があります。このような場合、各オブジェクトが独自のテクスチャを取得するようにシーンを設定することができます。

 

オブジェクト属性を使用してテクスチャを宣言する

マテリアルにテクスチャを設定するのではなく、レンダリングされるオブジェクトは任意の属性を介して関連するテクスチャ ファイルを指すことができます。

Katanaのユーザーデータとプリム変数

レンダラーでは、シェーダーが参照できるユーザーデータまたはプリム変数を使用できます。Katana Katana 、任意のジオメトリデータはgeometry.arbitrary.xxxという属性として読み込まれ、デフォルトでユーザーデータまたはプリム変数データとしてレンダラーに書き出されます。つまり、プリム変数またはユーザーデータを使用してテクスチャを指定している場合、この処理は自動的に実行されます。

Katanaで RenderMan を使用するときに、プリム変数を使用してテクスチャを宣言する

RenderManには、インスタンス間でテクスチャを処理するための方法があります。これは、インスタンスの位置でシェーダーパラメータ構文を解決し、 RenderMan <primstr:attributename> 構文を介してこれを実行します。ただし、これはRenderMan 24で初めて導入されました。

 

サンプルシーンの作成

次の手順は、3Delight レンダラーを使用してオブジェクト属性を使用してテクスチャを宣言する方法について説明します。

  1. ヘルプ > ポニーを作成」メニューから、CameraCreate、NetworkMaterialCreate、そして2つのPonyノードを追加します。各Ponyノードのnameパラメータは必ず変更し、重複しないように注意してください。

  2. 各ポニーの下流に AttributeSet ノードを作成し、それぞれの上流ポニーのシーングラフの場所へのパスを設定します。

    mceclip1.png

  3. 各 AttributeSet ノードを編集し、各 attributeName パラメータを 'geometry.arbitrary.basecolor.value' に変更し、type パラメータを 'string' に変更します。

    mceclip4.png

  4. 各AttributeSetのstringValueを、固有のテクスチャファイルを指すように設定します。Katanaに付属するサンプルファイルは$ Katana $KATANA_ROOT/demos/tx_files/にあります。また、この記事にテクスチャファイルを添付しています。

    mceclip5.png

  5. NetworkMaterialCreate ノード (ショートカット: Ctrl+MMBまたは選択した場合はCtrl+Enter ) に移動し、dlPrincipled と dlTexture シェーディング ノードを作成します。

  6. dlTexture ノードを編集し、テクスチャ ファイル パラメータを{attr:geometry.arbitrary.basecolor.value}に設定します。これにより、以前に設定した属性からファイル パスが読み取られます。

    mceclip6.png

  7. dlTexture の outputColor ポートを dlPrincipled ノードの Base > Color ポートの入力に接続し、NetworkMaterialCreate から抜け出します (ショートカット: Ctrl+Backspace )。

    mceclip7.png

  8. Pony ノードを除くすべてのノードを選択し、「M」キーを押して下流にマージ ノードを作成します。

    mceclip8.png

  9. Mergeノードの下にMaterialAssignノードを作成して接続し、値/root/world/geo//*を持つカスタムCEL参照を追加し、 materialAssignパラメータを/root/materials/NetworkMaterialに設定します。これにより、シーングラフ内の「geo」位置より下のすべての場所にマテリアルが適用されます。

    mceclip9.png

  10. 最後に、MaterialAssign の下流に GafferThree ノードを作成し、「Add 3Delight」メニューから Environment Light を追加します。

レンダリングすると、単一のマテリアルからポニーに適用された 2 つの異なるテクスチャが表示されます。

mceclip10.png

さらに詳しく

インスタンス間でのテクスチャの処理の詳細については、次を参照してください: Q100508: 階層的 (インスタンス ソース) インスタンス化によるシーン グラフのクック パフォーマンスの向上

添付ファイル

私たちはそれを聞いて申し訳ございません

理由をお聞かせください