Asset Reference の Reference File パラメータを参照パスとフルパスで切り替える方法についてです。
Asset Reference の Reference File パラメータに入れるファイルパスは、アセットデータベースからそのまま来ています。
例えば Houdini に同梱されているサンプルデータベースを使用している場合、このデータベースはローカルにインストールされた Houdini を指す必要があるため、ファイルパスに $HFS を使用して保存されています。
独自のデータベースを作成する場合、ファイルパスを絶対パスに設定することができ、その場合 Asset Reference ノードはその絶対ファイルパスで作成されます。
既存の .hip ファイルで Asset Reference のファイル名を相対パスから絶対パスに変換したい場合、ノードを列挙してパラメータを変更する Python スクリプトを書くのが一番手っ取り早い方法です。
既存のデータベースでファイルパスを変換したい場合、これも Python スクリプトで可能ですが、より複雑な作業になるかもしれません。
単純に絶対パスを見るだけなら、パラメータの値を右クリックして、Expression > Expand String Value を選択します。(もしくはパラメータのラベル名をホイールクリック)
これで文字列の展開されたバージョンが表示されますが、これはパラメータの実際の値を変更するものではありません。パラメータの値には変わらず env 変数が入ったままです。
このメニューを使ってファイル名を展開/圧縮することはできますが、実際の値を変更する方法はなく、追加する予定は今のところ(2022年 12月 20日現在)ありません。
しかし、パラメータ値を展開・変更するような簡単なメニュー項目を独自で追加することは可能です。
より難しい問題に対処する場合には、ファイルパスを取得して任意に圧縮して env 変数を使用することをお勧めします。
例
以下は $HFS 入りファイルパスをフルパスに変更させる Python Script の例です。これをLayout LOP の中の Asset Reference と同じ階層の Python Script ノードに記述し実行すれば機能します。
ただし $HFS > フルパスの一方向のみですのでご注意ください。(インデントに注意)
for node in hou.node("../").children():
if node.type().name() == "assetreference":
print ("target:" + "\t\t\t" + node.path())
old_filepath = node.parm("filepath")
print ("changed filepath:" + "\t" + old_filepath.eval() + "\n")
node.parm("filepath").set(old_filepath.eval())