Bifrost-USD には、UsdPreviewSurface マテリアルを簡単に作成できるハイレベルなコンパウンドが含まれており、いくつかの方法のいずれかでジオメトリにバインドすることができます。
USD で使用可能な UsdPreviewSurface マテリアルは、多くのケースをカバーするシンプルかつ最新の物理ベースのマテリアルです。多くのレンダラでサポートされています。
マテリアルを定義するプリミティブを追加するには:
add_to_stage ノードの prim_definitions ポートまたはプリミティブ定義ノードの children ポートを右クリックし、ノードの作成(Create Node) > Usd::Shading::define_usd_preview_surface を選択します。path に設定し、必要に応じてパラメータを設定します。material ポートを使用してマテリアルをバインドするマテリアルをプリミティブに適用する最も簡単で便利な方法は、プリミティブ定義ノードの material ポートに define_usd_preview_surface の出力を接続することです。この「レシピ」が add_to_stage ノードによって処理されると、バインドが自動的に作成されます。
この方法の欠点は、マテリアル接続を使用して各プリミティブの下にマテリアルのコピーを作成することです。このため、単純な状況にのみ適しています。
タグを使用すると、名前によって自動的にマテリアルをバインドできます。これらは、前にステージで定義したライブラリからマテリアルを選択する場合に便利です。
必要に応じて、グラフに define_usd_material_tag ノードを追加し、その出力を define_usd_preview_surface ノードの attribute_definitions ポートに接続し、マテリアルを識別するための一意の文字列に value を設定します。
グラフに別の define_usd_material_tag ノードを追加し、その出力をプリミティブ定義ポートの attribute_definitions ポートに接続し、マテリアル プリミティブ定義の名前に value を設定します。
または、マテリアル プリミティブ定義にタグを接続した場合は、value を同じタグに設定できます。この場合、同じ define_usd_material_tag ノードからの出力を再利用できます。
下流の add_to_stage ノードで、use_material_name_or_tag が有効になっていることを確認します。
関係を使用して、マテリアルを明示的にバインドすることができます。
relationship_definitions ポートを右クリックし、Usd::Prim::define_usd_relationship を選択します。define_usd_relationship は既に material:binding 関係を作成するように設定されています。バインドするマテリアルのパスに target を設定するだけです。Maya のアウトライナでマテリアルを選択し、アトリビュート エディタのマテリアル プリミティブのタブにあるメタデータ(Metadata) アトリビュート グループのプリミティブ パス(Prim Path) からコピー & ペーストして、パスを取得することができます。
assign_usd_material を使用してマテリアルをバインドするassign_usd_material ノードを追加し、その stage 入力ポートと出力ポートを接続します。material_path を設定します。prim_path をバインドするプリミティブのフル パスに設定します。