On this page | |
Since | 18.0 |
How to ¶
To... | Do this |
---|---|
1つ以上のPrimにマテリアルを割り当てる |
|
VEXを使って計算されたマテリアルを割り当てる(上級) |
|
VEXを使ってマテリアルパラメータを上書きする(上級) |
これによって、マテリアルアサインメント別にマテリアルパラメータの値を変えることができます。
|
VEXを使ってジオメトリ内の個々のエレメントにマテリアルを割り当てる(上級) |
このノードは、同じ名前のマテリアルパスを持ったエレメントセット別にジオメトリサブセットを自動的に作成します。 |
CVEX VOPネットワークの使い方(推奨していません) ¶
Note
私どもは、 CVEX VOPネットワークの代わりにVEXpressionsを使用 することを強く推奨しています。 以下で詳細を説明していますが、CVEXネットワークでは、複数の工程をセットアップする必要があります。 計算を行なう上で非常に高度なVOPネットワークを組む必要がある場合、または、既存のVOPsを再利用したい場合を除いて、VEXスニペットを記述したほうが 非常に 簡単です。
-
Specify Material Using または Parameters Override のどちらかを“CVEX Script”に設定します。
-
CVEX VOPネットワークを作成するのに非常に便利な場所は、このAssign Materialノード自体の中です(このノードには、VEX Builderネットワークが含まれています)。 その中に入って、⇥ Tabを押して、CVEX Shader Builderネットワークノードを作成します。
-
CVEX Builderノードの名前は、そのネットワークの処理内容についてわかりやすい名前(例えば、
material_assignment
)に変更します。 Assign Materialノード内に複数のCVEXネットワークを使って複数のマテリアルアサインメントを行なう場合には、それらのネットワークの名前は必ず固有な名前にしてください。 -
CVEX Builderノードの中に入って、USD Global Parametersノードを配置します。このノードには基本入力(
primpath
,elemnum
,numelem
)が備わっています。 -
Assign Materialノードがバインドを作成している場合、このネットワーク内でそれに呼応したParameter VOPsを作成することで、バインドされたVEX変数を表現することができます。
マテリアルアトリビュートをパラメータに割り当ててそのアトリビュートを上書きする場合には、そのParameter VOPの Export パラメータを“Always”または“When Input is Connected”に設定することを忘れないでください。
-
ネットワークを使ってマテリアルアサインメントの計算をする場合には、そのネットワークの最後に単一のParameter VOPを作成して、その“return”値を表現します。 Name パラメータを
matname
に設定し、 Export パラメータを“Always”に設定し、残りのネットワークをその入力に接続してください。 -
必要な計算が行えるようにVOPネットワークを組みます。
-
Assign Materialノードのパラメータに戻ります。 CVEX Node パラメータまたは Override CVEX Node パラメータに、さきほど作成したCVEXネットワークのパスを入力します。
このAssign Materialノードの中でネットワークを作成した場合、単にそのネットワークの名前(例えば、
material_assignment
)を入力するだけで構いません。他の場所でネットワークを作成した場合、そのネットワークノードのパス(例えば、
/mat/material_assignment
)を入力しなければなりません。
Tips ¶
-
VEXスニペットでは、コロン(
:
)を含んだ@
変数名を使用することができます。これによって、特定のUSDアトリビュート名(例えば、i@primvars:foo
)を自動的にバインドするのが簡単になります(通常、このような名前はVEXソースコード内では有効ではありません。このような名前がスニペット内で使用されると、このノードが自動的にその名前をエンコードします)。
パラメータ ¶
Number of Materials
1個のノード内で複数のマテリアルアサインメントを実行することができます。 ここには、実行したいマテリアルアサインメントの数を設定します。 または、プラスとマイナスのボタンを使ってマテリアルアサインメントの追加/削除をすることができます。
Primitives
マテリアルを割り当てたいPrim(s)。 テキストボックスの隣にある選択ボタンをクリックすることで、シーングラフツリーからPrimsを選択することができます。 他にもプリミティブパターンを使って高度なマッチングを行なうこともできます。
Specify Material Using
割り当てるマテリアルを指定する方法。
Explicit path
シーングラフツリー内の特定のパスにあるマテリアルを割り当てます。
VEXpression
VEXスニペットの計算結果に基づいて、選択されたPrim毎にマテリアルを割り当てます。
CVEX Script
TBD.
Material Path
Specify Material Using が“Explicit Path”の時にバインドに使用するマテリアルPrimのUSDパス。
VEXpression
Specify Material Using が“VEXpression”の時、選択されたPrim毎に、このVEXスニペットが計算されます。
VEXスニペットには、@primpath
(現行Primのパス)、@elemnum
(選択されたPrimsのリスト内の現行Primのインデックス)、@numelem
(選択されたPrimsの総数)を使用することができます。
現行Primに割り当てるマテリアルのパスを含んだ文字列をreturn
で返さなければなりません。
例えば、以下のスニペットは、選択されているPrimsのリスト内で奇数番目、偶数番目のPrimに基づいてrough_red
とrough_blue
のマテリアルの割り当てを切り替えます:
return (@elemnum % 2) ? "/materials/rough_red" : "/materials/rough_blue";
CVEX Node
Specify Material Using が“CVEX”の時、CVEX VOPネットワークのパス。上記のCVEX VOPネットワークを参照してください。
Parameters Override
マテリアルアサインメント毎に個々のマテリアルパラメータを上書きするかどうか、または、その方法。
None
マテリアルパラメータを上書きしません。
VEXpression
マテリアルアサインメント毎にVEXスニペットを実行して、新しいパラメータ値を計算することができます。
CVEX Script
CVEXノードで用意されたVEXプログラムを実行して、マテリアルパラメータのオーバーライド値を計算します。
Override VEXpression
Parameter Override が“VEXpression”の時、選択されているPrim毎に、このVEXスニペットが実行されます。
“CVEX Bindings”セクション内のこれらの設定は、マテリアルパラメータをVEX変数にマッピングする方法を制御します。
マテリアルパラメータをそれに呼応する変数に割り当てることで、そのマテリアルパラメータを上書きすることができます。
VEXスニペットには、@primpath
(現行Primのパス)、@elemnum
(選択されたPrimsのリスト内の現行Primのインデックス)、@numelem
(選択されたPrimsの総数)を使用することができます。
例えば、マテリアルにroughness
という名前のパラメータがある場合(且つ、 Autobind by Name が有効になっている場合。デフォルト)、VEXスニペット内にそれに呼応する変数を設定することで、そのマテリアルパラメータを上書きすることができます:
@roughness = (@elemnum % 3) ? 0.25 : 0.5;
Override CVEX Node
Parameters Override が“CVEX”の時、CVEX VOPネットワークのパス。上記のCVEX VOPネットワークを参照してください。
VEX Bindings to Export
最終VEXプログラムからエクスポートしたいVEXpressionパラメータを選択するパターン。 例えば、マテリアルパラメータのオーバーライドに使用される出力パラメータがそれです。
Materials Parent Path
このLOPがオーバーライドを使って自動的に生成されたマテリアルを編集する親PrimのUSDパスを指定します。
Materials Parent Type
オーバーライドを使用してマテリアルを自動的に生成するために編集する必要のある親PrimsのPrimタイプを指定します。
Autobind by Name
これを有効にすると、現行Prim上のアトリビュート(マテリアルアサインメントを計算する時)またはマテリアルパラメータ(オーバーライドを計算する時)が自動的にそれと同じ名前のVEX変数として、それに関連したVEXエクスプレッション(またはCVEXネットワーク)内で利用可能になります。 これを無効にして、以下のMulti-Parmを使うことで、アトリビュート名またはマテリアルパラメータをVEX変数名に手動でマッピングすることができます。
Number of Bindings
手動で作成するアトリビュートからVEX変数へのバインドの数。
Attribute Name
バインドのペアにおいて、VEX変数に変換するUSDアトリビュートの名前。
VEX Parameter
バインドのペアにおいて、USDアトリビュートに呼応したVEX変数の名前。
Create and Bind Geometry Subsets
これを有効にして、 Primitives パラメータにジオメトリPrimまたはジオメトリサブセットPrimを指定すると、
このノードは、選択されたPrim毎ではなくて、そのジオメトリ内の ジオメトリエレメント (例えば、ポリゴンフェース)毎にVEXスニペットを実行します。
スニペット内では、@elemnum
が現行エレメントのインデックス、@numelem
がジオメトリ内のエレメントの総数になります。
このノードは、同じマテリアルパスを持ったエレメントセット別に自動的にジオメトリサブセットを作成します。
Purpose
マテリアルアサインメントのpurpose
値を設定します。これは、マテリアルアサインメントが適用されるレンダーのタイプを制御します。
All
マテリアルアサインメントがすべてのレンダリングに適用されます。
Full Render
マテリアルアサインメントがフル/最終レンダーにのみ適用されます。
Preview Render
マテリアルアサインメントがプレビューレンダーにのみ適用されます。
Strength
ツリー内のPrimへのマテリアルアサインメントとその子Primsのマテリアルアサインメントの干渉に関する“オピニオン”の強度を制御します(例えば、このノードが/materials/zerbra
を/a
に割り当てた時に、既に/a/b/c
に/materials/tiger
が割り当てられている場合)。
Default
オピニオン強度の通常のルールを使用します(子Primsのマテリアルアサインメントが親Primのマテリアルアサインメントをオーバーライドします)。
Stronger than descendants
このマテリアルアサインメントが常にツリー内の下層にあるPrimsのマテリアルアサインメントをオーバーライドします。
これは、コレクションベースのバインドが、既にマテリアルをバインドしている子Primsをオーバーライドさせたい場合に役立ちます。 このオプションによって、親よりも子の方がオピニオンが強いという通常ルールに関係なく、親Prim上のコレクションベースのバインドが有効になります。
Weaker than descendants
このマテリアルアサインメントが常にツリー内の下層にあるPrimsのマテリアルアサインメントによってオーバーライドされます。 これは“Default”と同じです。
Method
マテリアルアサインメントをUSD内で表現する方法。
Direct
それぞれのPrim上でmaterial:binding
リレーションシップを編集することで、マテリアルを割り当てます。
Collection Based
material:binding:collection
リレーションシップを使って、共通の親のPrimコレクションに各マテリアルを割り当てます。
Primitives パラメータにコレクションを使ってPrimsを指定していた場合、これは、そのコレクションを再利用します。
それ以外の場合、以下の Path パラメータを使ってPrimのパスを指定することで、このノードは、そのPrim上に新しくコレクションを作成します。
Note
コレクションベースのマテリアルバインドに関するUSDの仕様では、binding
リレーションシップが定義されているPrimの子Primsにのみマテリアルが割り当てられると書かれています( Path パラメータを参照)。
つまり、binding
は、そのPrimの子Primsではないコレクション内のPrimsには何も影響を与えません。
Include Descendant Primitives in Collection
Method が“Collection Based”の時、このオプションを有効にすると、コレクションベースのバインド用に作成されたコレクションは、ターゲットPrimsのすべての子Primsを展開するようにマークされます。 これによって、マテリアルの割り当てがシーングラフツリーブランチ全体に適用されます。 “Direct”バインドを使用した場合は、これと同じ動作が常に起こり、シーングラフツリー以下を常に継承します。
Path
Method が“Collection Based”の時、このパスのPrim上にコレクションベースのバインドが定義されます。
他にも、このLOPノードが新しいコレクションを作成する必要がある場合、このPrim上にそのコレクションを作成します。
このパスが空っぽの場合、このLOPノードは、 Primitives パラメータで指定されているすべてのPrimsに共通の一番深くにある親Primの使用を試みます。
Name
コレクションベースのマテリアルバインド名を指定します。空っぽの場合、マテリアルの名前が使用されます。
See also |