2020-06-17

HDA embedded file

2016年2月に書いた記事に、opdef を用いて一つの .hda ファイルの中で複数の HDA から参照する方法、oplib の使い方を追記


Houdini Digital Asset (.hda) にファイルを埋め込み、opdef コマンドを使ってを正しく参照する方法を紹介する。



使用したバージョン: 15.0.377

1. 元シーンファイルの作成

  1. Geometry ノードを作成。
  2. 中に入り、存在する File ノード (file1) にジオメトリを読み込む。例として、sample_geo.bgeo を読み込んだが、ビューポートに表示できる形状ファイルであれば何でもよい。

2. デジタルアセットの作成

  1. file1 ノードを選択したまま Network ビューの ボタン (Create subnet from selected) をクリック。subnet1 ノードが出来る。
  2. subnet1 ノードを embgeo などと名前を変更。
  3. embgeo 上で RMB (右マウスボタン) ->Create Digital Asset... を実行。必要あれば、ノード名、ラベル名、保存場所を変更。なければそのままAccept をクリックして確定。
  4. Edit Operator Type Properties ウィンドウが開いたら、 Extra Files タブに行く。
  5. ウィンドウ下側にある Filename 脇のをクリック、ファイルブラウザを操作して、sample_geo.bgeo を選択。
  6. Add File をクリックして、選択したファイルを追加する。

    ファイルがExtra Files リストに追加されたのがわかる。
  7. Accept を押してウィンドウを閉じる。

2. Geometry File パラメータの調整

上記のようにデジタルアセットを作成しただけでは、file1 ノードの Geometry File パラメータは、$HOME/Desktop/sample_geo.bgeo のままで、アセットに組み込んだファイルを参照していない。これを変更する必要がある。

  1. Geometry Fileのパラメータを以下のように変更。
    opdef:..?sample_geo.bgeo
  2. 一つ上に上がり、embgeo 上で RMB->Save Node Type を実行。
これで、HDAの編集は終了。

3. HDA の動作確認

作成した HDA が正しく動くかを検証してみる。

  1. Houdini を一度終了。
  2. デスクトップ上にある sample_geo.bgeo をどこか他に退避。
  3. Houdini を再度起動、Geometry ノードを作成、その中で TAB->embgeo を実行。ノードが作成されれば、組み込んだジオメトリがビューポートに表示されるのが確認できる。

2020年5月30日追記。

4. 複数アセットで単一ファイルを使い回す

例えば、multiassets.hda というアセットファイルの中に mycolor とと myreduce の二つのアセットがあり、それぞれに同一ファイルを追加するのではなく、一度ロードしたものを両方で使う場合、以下の方法が可能。

  1. 上記の要領で作成した file ノードに Color ノードを追加。
  2. 二つを選択し、サブネットワークに格納 (Shift+C)、ノード名を mycolor として RMB->Create Digital Asset... を実行。
    • Operator Name を mycolor
    • Operator Name を MyColor
    • Save to Library を multiassets.hda にする (場所はデフォルト)。
  3. Color ノードの Class を Primitive、Color Type を Random にし、Class と Seed を HDA で操作可能なパラメータとして露出する。
  4. 上記2.4~6 の要領で sample_geo.bgeo を HDA に追加。file1 の Geometry File のパラメータは
    opdef:..?sample_geo.bgeo
    ここまで出来たら、mycolor ノード上で RMB->Save Node Type でアセットを保存。
  5. ジオメトリレベル (/obj/geo1) に戻り、file ノード作成を繰り返し、例えば Poly Reduce ノードと組み合わせ、HDA を myreduce という名前で、mycolor と同じ multiassets.hda に格納。
  6. Asset Manager で見れば、一つの HDA ファイルに二つのアセットが定義されているのがわかる。
  7. この時に、myreduce にも sample_geo.bgeo を追加せずに、mycolor にあるファイルを参照するようにしたいのであれば、myreduce 以下の file1 のGeometry File に
    opdef:/Sop/mycolor?sample_geo.bgeo
    とする。 これは、上の Asset Manager での記述と同じ。

2020年6月17日追記。18.0.494 を使用

5. oplib

ドキュメントには、opdef 以外に oplib を使う方法も記述されている。例えば、mycolor を元に myremesh (Remesh ノードを使用) を作成し、oplib を使って mycolor 以下の同じジオメトリを参照する場合、以下のように記述する。

oplib:/Sop/mycolor?Sop/mycolor?sample_geo.bgeo
実際のアセットは下の multiassets.hda 内にあり。

まとめ

  • HDA へのファイルの組み込みは Edit Operator Type Properties ウィンドウの Extra Files タブから行う。
  • Add File を実行すれば指定したファイルが追加され、リストでファイルを選択した上で右下の Save as File をクリックすれば、組み込んであるファイルを抽出することも可能。
  • opdef:..?<ファイル名> はHDAに組み込んだファイルを参照するための構文。
    • ".." は、参照元(File ノード)が HDA ノード直下にある場合。
    • HDAを file1 の上の Geometry ノード (geo1) から作成し、HDA ノードと File ノードの間に2階層ある場合、ここの構文は、
      opdef:../..?<ファイル名>
      となる。
    • 一つの外部ファイルを複数のアセットで認識させるには、HDA ファイル (/Sop/など) からでの絶対パスで記述する。このパスの確認には Asset Manager が便利。ユーザが作ったアセットは通常 Scanned Asset Library Directories 以下にある。
  • HDA の配置パス
  • opdef ドキュメント
  • h18_multiassets.zip (H18.0.494 で作成 61KB)


最終更新: 2020-06-17

0 件のコメント:

コメントを投稿