2016年2月に書いた記事に、opdef を用いて一つの .hda ファイルの中で複数の HDA から参照する方法、oplib の使い方を追記。
Houdini Digital Asset (.hda) にファイルを埋め込み、opdef コマンドを使ってを正しく参照する方法を紹介する。
使用したバージョン: 15.0.377
1. 元シーンファイルの作成
- Geometry ノードを作成。
- 中に入り、存在する File ノード (file1) にジオメトリを読み込む。例として、sample_geo.bgeo を読み込んだが、ビューポートに表示できる形状ファイルであれば何でもよい。
2. デジタルアセットの作成
- file1 ノードを選択したまま Network ビューの ボタン (Create subnet from selected) をクリック。subnet1 ノードが出来る。
- subnet1 ノードを embgeo などと名前を変更。
- embgeo 上で RMB (右マウスボタン) ->Create Digital Asset... を実行。必要あれば、ノード名、ラベル名、保存場所を変更。なければそのままAccept をクリックして確定。
- Edit Operator Type Properties ウィンドウが開いたら、 Extra Files タブに行く。
- ウィンドウ下側にある Filename 脇のをクリック、ファイルブラウザを操作して、sample_geo.bgeo を選択。
- Add File をクリックして、選択したファイルを追加する。
ファイルがExtra Files リストに追加されたのがわかる。 - Accept を押してウィンドウを閉じる。
2. Geometry File パラメータの調整
上記のようにデジタルアセットを作成しただけでは、file1 ノードの Geometry File パラメータは、$HOME/Desktop/sample_geo.bgeo のままで、アセットに組み込んだファイルを参照していない。これを変更する必要がある。
- Geometry Fileのパラメータを以下のように変更。
opdef:..?sample_geo.bgeo - 一つ上に上がり、embgeo 上で RMB->Save Node Type を実行。
3. HDA の動作確認
作成した HDA が正しく動くかを検証してみる。
- Houdini を一度終了。
- デスクトップ上にある sample_geo.bgeo をどこか他に退避。
- Houdini を再度起動、Geometry ノードを作成、その中で TAB->embgeo を実行。ノードが作成されれば、組み込んだジオメトリがビューポートに表示されるのが確認できる。
2020年5月30日追記。
4. 複数アセットで単一ファイルを使い回す
例えば、multiassets.hda というアセットファイルの中に mycolor とと myreduce の二つのアセットがあり、それぞれに同一ファイルを追加するのではなく、一度ロードしたものを両方で使う場合、以下の方法が可能。
- 上記の要領で作成した file ノードに Color ノードを追加。
- 二つを選択し、サブネットワークに格納 (Shift+C)、ノード名を mycolor として RMB->Create Digital Asset... を実行。
- Operator Name を mycolor
- Operator Name を MyColor
- Save to Library を multiassets.hda にする (場所はデフォルト)。
- Color ノードの Class を Primitive、Color Type を Random にし、Class と Seed を HDA で操作可能なパラメータとして露出する。
- 上記2.4~6 の要領で sample_geo.bgeo を HDA に追加。file1 の Geometry File のパラメータは
opdef:..?sample_geo.bgeo
ここまで出来たら、mycolor ノード上で RMB->Save Node Type でアセットを保存。 - ジオメトリレベル (/obj/geo1) に戻り、file ノード作成を繰り返し、例えば Poly Reduce ノードと組み合わせ、HDA を myreduce という名前で、mycolor と同じ multiassets.hda に格納。
- Asset Manager で見れば、一つの HDA ファイルに二つのアセットが定義されているのがわかる。
- この時に、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 件のコメント:
コメントを投稿