すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

Solaris - Material Assign

04/01追記:Material VariationのUSD PrimVar Reader

Materialのいろいろなアサインの仕方。

さんざんどこかで記事や動画になっていたりしそうだが自分のために整理してメモ。

Material Library

従来のMaterial Palette(Material Networks)

Material Libraryの中でマテリアルを作る。

これ自体にMaterialをアサインする機能があるが、基本は使わないほうが癖をつけたほうが良さそう。
ちゃんとUSDとして運用する場合にマテリアルとアサイン情報を分けたUSDファイルをそれぞれ作成することが多いため。

パラメーターをアニメーションさせる場合

Allow Shader Parameter Animationにチェックをいれる。

f:id:godofsuama:20220326182208p:plain

他のMaterial NetworkからMaterialを読み込む

Auto Fill Materialsを押して読み込むMaterialが含まれるMaterial Networkを指定する。

読み込んだMaterial Network内に新しく作成したMaterialを読み込みたい場合は再度Auto Fill Materialを押して指定する。

f:id:godofsuama:20220326182352p:plain

Assign Material

マテリアルをアサインするためのノード

これを使用してマテリアルをアサインする。

リストの下にあるマテリアルアサインの設定で上書きされるため、リストの上で全体にアサインしてもリストの下で個別にアサインすると個別のアサイン情報で指定したものが上書きされる。

f:id:godofsuama:20220326183056p:plain

f:id:godofsuama:20220326183112p:plain

Scene Graph Treeからの選択

階層構造の見れるScene Graph Treeから、Primitivesにドラッグドロップしてアサインするのが手軽。

f:id:godofsuama:20220326183244p:plain

プリミティブマッチングパターン

よく使われるマッチングパターンでのアサイン。

プリミティブマッチングパターン

フェースアサインする

アサインしたいUSDファイルに、Subsetの情報が必要。

USD Export時にSubset GroupsでPrimitive Groupを指定しておくか、

Partiton Attributesに文字列型のPrimitive Attributeを入れておくことでSubsetを書き出せる。

Houdiniで使う分にはSubset Groupsで指定する方が多いと思う。

f:id:godofsuama:20220326183635p:plain

書き出しに成功するとこうなる。

f:id:godofsuama:20220326183735p:plain

これにマッチングパターンを使用してアサインする。

f:id:godofsuama:20220326183848p:plain

レンダーしたらスイカの完成!

f:id:godofsuama:20220326183909p:plain

Collectionを利用する

HoudiniでいうBundle Listのようなものを作成してアサインする方法。

ちなみにマテリアルアサイン以外でも使用可能なので覚えておくと良い。

Collectionノードで内包するPrimを設定する。

f:id:godofsuama:20220326191603p:plain

表記の方法が2種類あり画像のどちらの名前指定でもアサインすることができる。

「/collections.collection:コレクション名」

が基本の指定方法。


その他、ルートのcollections直下の階層にある場合に限り、

「%コレクション名」

で指定することができる。

f:id:godofsuama:20220326191629p:plain

Material Variation

マテリアルのパラメーターをPrimやInstance単位で変更できる。VEXを使用しての処理も可能。

Primitivesで適応するPrimを指定してからnameに変更したいパラメーターを指定する。

VEXをのindexの部分は、Primitivesを/rbd/*のように複数指定しないとすべて0になる。
Material がアサインされていないとnameの欄に何も出てこないので注意。
Principled Shaderの場合は値が乗算扱いになるので元の値が0だと変化しない。

f:id:godofsuama:20220326184735p:plain

f:id:godofsuama:20220326184758p:plain

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は書き換えになります。こちらのほうが感覚的にわかりやすいです。

f:id:godofsuama:20220402212800p:plain

MaterialX

MaterialXを使用する際はMaterialX系ノードで統一が望ましいです。

USD PrimVar Readerも動作しますが、MaterialX Geometry Property Valueノードを使用することでMaterialXのノードのみで構築できます。そのほか、似た処理ができるノードにMaterialX PrimVar Readerがあります。
Material Variationの処理も、Principled Shaderでは乗算扱いなのに対してUSD PrimVar Readerは書き換えになります。こちらのほうが感覚的にわかりやすいです。

f:id:godofsuama:20220402213314p:plain

Edit Material Network

アサインされているMaterialの一部パラメーターを上書きしたい場合に使用する。

下流工程で上流のマテリアルをレンダリング時の都合等で少し変更したい場合など。

Material Pathにマテリアルを指定して、Loadボタンを押す。

f:id:godofsuama:20220326185440p:plain

その後中に潜り、ReferenceされたMaterialのパラメーターの横のチェックを入れてから書き換える。

f:id:godofsuama:20220326185521p:plain

f:id:godofsuama:20220326185610p:plain

f:id:godofsuama:20220326185636p:plain

Material Linker

Scene Graph Treeとマテリアルのビューが合体したような見た目のUIでマテリアルアサインの一括管理ができる。

f:id:godofsuama:20220326190236p:plain

ちょっと分かりづらいが以下の順でダブルクリックすると文字列の編集が可能。

f:id:godofsuama:20220326190409p:plain

もちろんCollectionでの指定も可能。

f:id:godofsuama:20220326192617p:plain