まとめ
テクスチャは、シェーダ ライブラリとスタジオ パイプラインによってさまざまな方法で処理され、 Katana 、いくつかの一般的な規則に従ってテクスチャを割り当てるための柔軟なフレームワークを提供します。
以下は、3Delight、RenderMan、および Arnold レンダラで動作するこれらのオプションのいくつかの概要です。ここで説明した両方のアプローチを示す添付のサンプル シーンも参照してください。
詳しくは
マテリアル属性を使用してテクスチャを宣言する
各オブジェクトに独自のテクスチャを与える最も簡単な方法は、オブジェクトごとにマテリアルを作成し、シェーダ内でテクスチャを文字列パラメータとして明示的に宣言することです。次に、各オブジェクトに関連するマテリアルが割り当てられます。
このアプローチは、特に多数のオブジェクトを含むシーンを操作する場合に最も労力がかかり、マテリアルに変更を加える必要がある場合には柔軟性に欠けます。
多くのオブジェクトは同じマテリアルを共有できますが、異なるテクスチャを割り当てる必要があります。この場合、各オブジェクトが独自のテクスチャを取得するようにシーンをセットアップすることが可能です。
オブジェクト属性を使用してテクスチャを宣言する
マテリアルにテクスチャを設定するのではなく、レンダリングされるオブジェクトは、任意の属性を介して関連するテクスチャ ファイルをポイントできます。
Katanaのユーザー データとプリム変数
レンダラーを使用すると、シェーダーによって検索できるユーザー データまたはプリム変数を使用できます。 Katana では、任意のジオメトリ データはgeometry.arbitrary.xxx Katana属性として読み取られるのが慣例であり、その後、デフォルトでユーザー データまたはプリム変数データとしてもレンダラーに書き出されます。これは、プリム変数またはユーザー データを使用してテクスチャを指定している場合、これを自動的に行うことができることを意味します。
Katanaで RenderMan を使用するときにプリム変数を使用してテクスチャを宣言する
RenderMan には、インスタンス間でテクスチャを処理するメソッドがあります。これは、インスタンスの場所でシェーダー パラメータ構文を解決し、 RenderMan <primstr:attributename> 構文を介してこれを実行します。ただし、これは RenderMan 24 でのみ導入されました。
サンプルシーンの作成
以下は、オブジェクト属性を使用してテクスチャを宣言する方法についての手順です。この例では 3Delight レンダラーを使用しています。
- [ヘルプ] > [ポニーが必要]メニューから、CameraCreate、NetworkmaterialCreate、および 2 つの Pony ノードを追加します。各 Pony ノードの name パラメータを必ず変更して、一意になるようにしてください。
- 各ポニーの下流に AttributeSet ノードを作成し、それぞれの上流ポニーのシーン グラフの場所へのパスを設定します。
- 各 AttributeSet ノードを編集し、各attributeNameパラメータを「geometry.arbitrary.basecolor.value」に、typeパラメータを「string」に変更します。
- 各 AttributeSet の stringValue を、一意のテクスチャ ファイルを指すように設定します。 Katanaに含まれるサンプル ファイルは $KATANA_ROOT/demos/tx_files/ にあります。
- NetworkmaterialCreate ノードにジャンプし (ショートカット: Ctrl+MMBまたは選択時にCtrl+Enter )、dlPrincipled ノードと dlTexture シェーディング ノードを作成します。
- dlTexture ノードを編集し、テクスチャ ファイル パラメータを '{attr:geometry.arbitrary.basecolor.value}' に設定します。これにより、以前に設定された属性からファイル パスが読み取られます。
- dlTexture の OutputColor ポートを dlPrincipled ノードの Base > Color ポートの入力に接続し、NetworkmaterialCreate から飛び出します (ショートカット: Ctrl+Backspace )。
- Pony ノードを除くすべてのノードを選択し、「M」を押して下流にマージ ノードを作成します。
- Merge の下に MaterialAssign ノードを作成して接続し、値 '/root/world/geo//*' を持つカスタム CEL 参照を追加し、materialAssign パラメータを '/root/materials/Networkmaterial' に設定します。これにより、シーン グラフ内の「地理」位置の下にあるすべての位置にマテリアルが適用されます。
- 最後に、マテリアル割り当ての下流に GafferThree ノードを作成し、Add 3Delight メニューからEnvironment Light を追加します。
レンダリングすると、1 つのマテリアルから 2 つの異なるテクスチャがポニーに適用されることがわかります。
参考文献
インスタンス間でのテクスチャの処理の詳細については、「 Q100508: 階層 (インスタンス ソース) インスタンス化」を参照してください。
添付ファイル
私たちはそれを聞いて申し訳ございません
理由をお聞かせください