2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パッケージ json を用いて複数の場所にある HDA へ連鎖的にパスを通す

Posted at

Windows で Houdini を起動すると、デフォルトでは
C:\Users\<user_name>\Documents\houdini<version> へパスが通り、その中にある otls フォルダ直下のHDAと、packages フォルダ直下の json ファイルが認識されます。

packages フォルダ内の json ファイルを通して他の場所へパスを通す方法はドキュメントの Houdiniパッケージ のページへ明記されています。ただ自分の読解力が足らず、読み込まれたパッケージをもとに、連鎖的に様々な場所にあるパッケージや HDA へパスを通す方法がなかなか判りませんでした。

やりたい事のイメージは下図のようになります。黄色がディレクトリ、白い四角がファイル、青い矢印が別の場所へパスを通すことを意味します。
image.png

判った後でドキュメントを読めば理解できる内容なのですが、ドキュメントを読むだけで今回の結果にたどり着くのは(自分にとっては)困難だったため、方法を記事に残します。

サンプル

サンプルを こちら からダウンロードできます。

このサンプルは、
C:\Users\<user_name>\Documents\houdini<version>D:\location_AD:\location_BD:\location_C の各 otls フォルダ内に HDA があり、それらへ数珠つなぎにパスを通すことを想定しています。(下図参照)

zip内の各フォルダを次の場所へ展開し、Houdini20.5 を起動すると各 SOP HDA を呼び出すことができるようになります。

  • houdini20.5: C:\Users\<user_name>\Documents
  • location_A, location_B, location_C: D:\

image.png

image.png

パッケージ JSON の書き方

重要なのは、いずれの json にも HDA を認識させるための hpath だけでなく、json を認識させるための package_path を指定したことでした。

set_location_A.json
{
    "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 の置き場所を集約しておかないことによるデメリットもありますが、環境構築方法の一選択肢として参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?