Windows で Houdini を起動すると、デフォルトでは
C:\Users\<user_name>\Documents\houdini<version>
へパスが通り、その中にある otls
フォルダ直下のHDAと、packages
フォルダ直下の json ファイルが認識されます。
packages
フォルダ内の json ファイルを通して他の場所へパスを通す方法はドキュメントの Houdiniパッケージ のページへ明記されています。ただ自分の読解力が足らず、読み込まれたパッケージをもとに、連鎖的に様々な場所にあるパッケージや HDA へパスを通す方法がなかなか判りませんでした。
やりたい事のイメージは下図のようになります。黄色がディレクトリ、白い四角がファイル、青い矢印が別の場所へパスを通すことを意味します。
判った後でドキュメントを読めば理解できる内容なのですが、ドキュメントを読むだけで今回の結果にたどり着くのは(自分にとっては)困難だったため、方法を記事に残します。
サンプル
サンプルを こちら からダウンロードできます。
このサンプルは、
C:\Users\<user_name>\Documents\houdini<version>
、D:\location_A
、D:\location_B
、D:\location_C
の各 otls
フォルダ内に HDA があり、それらへ数珠つなぎにパスを通すことを想定しています。(下図参照)
zip内の各フォルダを次の場所へ展開し、Houdini20.5 を起動すると各 SOP HDA を呼び出すことができるようになります。
-
houdini20.5:
C:\Users\<user_name>\Documents
-
location_A, location_B, location_C:
D:\
パッケージ JSON の書き方
重要なのは、いずれの json にも HDA を認識させるための hpath
だけでなく、json を認識させるための package_path
を指定したことでした。
{
"package_path": "D:/location_A/packages",
"hpath": "D:/location_A"
}
てっきり D:\location_A
へ HOUDINI_PATH が通っていれば D:\location_A\packages
内の json も認識されるかと思っていましたが、そんな事はありませんでした。
なお、上のコードは
{
"env": [
{"LOCATION_A": "D:/location_A"}
],
"package_path": "$LOCATION_A/packages",
"hpath": "$LOCATION_A"
}
のように環境変数を利用する形で書いても良いですし、むしろその方がトラブル時のデバッグが容易になります。
最後に
パッケージ json は設定がしやすく、環境自体に階層のような概念がある場合にも有効に活用できます。また、今回紹介した内容により、HDA を保存する場所の制限を小さくすることができます。
HDA の置き場所を集約しておかないことによるデメリットもありますが、環境構築方法の一選択肢として参考になれば幸いです。