kurosaba
Nov. 8, 2024 08:54:53
Add Variant Blockノードにより、ShaderのAssetPathを変更するVariantを組みたい。
しかし、AssetPathをセットすることはVariantが機能しないようでした。IntやFloatをセットすることはVariant機能しました。
他にも、ShaderのInputとOutputを接続 → 切断することはVariantが機能しないようでした。逆に未接続 → 接続することはVariant機能しました。
これはバグなのでしょうか?それとも仕様なのでしょうか?
ご存知の方いらっしゃいましたら、ご教示お願いします。
kurosaba
Nov. 8, 2024 08:59:01
件の問題では、USD UV TextureのFileをVariantさせようとしています。
特別なことは特にしておらず、単に適当な文字列を入力しても、Variantに変化はありませんでした。
Ken Taki
Nov. 8, 2024 16:53:40
kurosaba
Nov. 9, 2024 05:57:36
どうぞ。
add variant blockで定義したものと、Pythonで定義したものを用意しました。
手順
setvariantで /root/looks に設定されているtest_variantを切り替えるだけで状況を確認できます。
結果
variantをv1へ変更しても、/root/looks/material/usduvtexture1 の file input の値が "aaaa" → "gjpajdpwa" に変わらない。
よろしくお願い致します。
Satsuki_Sensei
Nov. 11, 2024 00:59:45
仕様と思われます。Houdini というよりは USD 側の仕様です。具体的には、LIVRPS(リバピーズ)と呼ばれる優先順位の仕様によるものと思われます。文章だけで説明するのは難しいと思いましたので、hip ファイルに具体例をつくりました。詳しくはそちらをご参照ください。
また、いただいたセットアップでは「ある値だけをバリアントの機能によって上書きしたい」という目的が一部達成されていませんでしたので、そちらについての修正案も兼ねています。併せてご確認ください。