04/01追記:Material VariationのUSD PrimVar Reader
Materialのいろいろなアサインの仕方。
さんざんどこかで記事や動画になっていたりしそうだが自分のために整理してメモ。
Material Library
従来のMaterial Palette(Material Networks)
Material Libraryの中でマテリアルを作る。
これ自体にMaterialをアサインする機能があるが、基本は使わないほうが癖をつけたほうが良さそう。 ちゃんとUSDとして運用する場合にマテリアルとアサイン情報を分けたUSDファイルをそれぞれ作成することが多いため。
パラメーターをアニメーションさせる場合
Allow Shader Parameter Animationにチェックをいれる。
他のMaterial NetworkからMaterialを読み込む
Auto Fill Materialsを押して読み込むMaterialが含まれるMaterial Networkを指定する。
読み込んだMaterial Network内に新しく作成したMaterialを読み込みたい場合は再度Auto Fill Materialを押して指定する。
Assign Material
マテリアルをアサインするためのノード
これを使用してマテリアルをアサインする。
リストの下にあるマテリアルアサインの設定で上書きされるため、リストの上で全体にアサインしてもリストの下で個別にアサインすると個別のアサイン情報で指定したものが上書きされる。
Scene Graph Treeからの選択
階層構造の見れるScene Graph Treeから、Primitivesにドラッグドロップしてアサインするのが手軽。
プリミティブマッチングパターン
よく使われるマッチングパターンでのアサイン。
フェースアサインする
アサインしたいUSDファイルに、Subsetの情報が必要。
USD Export時にSubset GroupsでPrimitive Groupを指定しておくか、
Partiton Attributesに文字列型のPrimitive Attributeを入れておくことでSubsetを書き出せる。
Houdiniで使う分にはSubset Groupsで指定する方が多いと思う。
書き出しに成功するとこうなる。
これにマッチングパターンを使用してアサインする。
レンダーしたらスイカの完成!
Collectionを利用する
HoudiniでいうBundle Listのようなものを作成してアサインする方法。
ちなみにマテリアルアサイン以外でも使用可能なので覚えておくと良い。
Collectionノードで内包するPrimを設定する。
表記の方法が2種類あり画像のどちらの名前指定でもアサインすることができる。
「/collections.collection:コレクション名」 が基本の指定方法。 その他、ルートのcollections直下の階層にある場合に限り、 「%コレクション名」 で指定することができる。
Material Variation
マテリアルのパラメーターをPrimやInstance単位で変更できる。VEXを使用しての処理も可能。
Primitivesで適応するPrimを指定してからnameに変更したいパラメーターを指定する。
VEXをのindexの部分は、Primitivesを/rbd/*のように複数指定しないとすべて0になる。 Material がアサインされていないとnameの欄に何も出てこないので注意。 Principled Shaderの場合は値が乗算扱いになるので元の値が0だと変化しない。
USD PrimVar Reader
USD PrimVar ReaderでPrimVarの値を読み取る場合、USD Preview SurfaceかMaterialXのマテリアル(例:MaterialX Standard Surface)を使用すること。
Principled ShaderではUSD PrimVar Readerがデフォルト値を取得しません。従来どおりBindで接続しましょう。 Material Variationの処理も、Principled Shaderでは乗算扱いなのに対してUSD PrimVar Readerは書き換えになります。こちらのほうが感覚的にわかりやすいです。
MaterialX
MaterialXを使用する際はMaterialX系ノードで統一が望ましいです。
USD PrimVar Readerも動作しますが、MaterialX Geometry Property Valueノードを使用することでMaterialXのノードのみで構築できます。そのほか、似た処理ができるノードにMaterialX PrimVar Readerがあります。 Material Variationの処理も、Principled Shaderでは乗算扱いなのに対してUSD PrimVar Readerは書き換えになります。こちらのほうが感覚的にわかりやすいです。
Edit Material Network
アサインされているMaterialの一部パラメーターを上書きしたい場合に使用する。
下流工程で上流のマテリアルをレンダリング時の都合等で少し変更したい場合など。
Material Pathにマテリアルを指定して、Loadボタンを押す。
その後中に潜り、ReferenceされたMaterialのパラメーターの横のチェックを入れてから書き換える。
Material Linker
Scene Graph Treeとマテリアルのビューが合体したような見た目のUIでマテリアルアサインの一括管理ができる。
ちょっと分かりづらいが以下の順でダブルクリックすると文字列の編集が可能。
もちろんCollectionでの指定も可能。