| On this page |
概要 ¶
.hdaファイルについて
¶
Houdiniは、.hdaファイルにデジタルアセットを格納します。
.hdaファイルフォーマットは、 バイナリアーカイブフォーマット です。
このファイルフォーマットには、アセットのノードタイプ定義、メタデータ、ノードタイプに関連付けられたシェルフツールに加えて、ヘルプファイル、アイコン、テクスチャなどのバイナリブロブ(“セクション”とか“Extra Files”と呼ばれています)など1つまたは複数のアセットに関するデータの階層を格納することができます。
(.otl(Operator Type Library)は、古いバージョンのHoudiniでこのようなファイルに使われていた拡張子で、引き続き使用可能です。この拡張子のファイルがまだパスに含まれている場合があります。新しい“正式”な拡張子は、.hda(Houdini Digital Asset)です。下位互換性のため、.otlファイルは引き続きHoudiniパス上のotlsディレクトリに格納されます。)
通常は、1つの.hdaファイルに1つのアセットを格納することをお勧めします。
こうすると、柔軟性が最大限に生かされ、特定のアセットのみをインストールできます。
また、どのアセットがパス上のどのファイルによってインストールされるのかも把握しやすくなります。
とはいえ、.hdaファイルに含めることができるアセットの数に制限はありません。
これは、スタジオやプロジェクトに必要なすべてのアセットのライブラリを1つのファイルとして共有できるので便利です。
展開されたディレクトリ ¶
.hdaはバイナリフォーマットなので(.zipのような標準的なフォーマットではありません)、ファイルを見るだけではコンテンツに関する情報を得ることはできません。
このユーティリティを使用すると、アーカイブファイルから情報を引き出して、扱いやすい形にすることができます。
.hdaファイルからメタデータをプリントしたり、既存のライブラリをマージしたり、.hdaファイルを“展開された”ディレクトリ形式に変換することができます。
“展開された”アセットライブラリには、ライブラリ自身のメタデータを格納したファイルと、ライブラリのアセット毎のサブディレクトリが含まれます。 サブディレクトリには、アセットのメタデータ、ノード定義、セクション(“Extra Files”)のコンテンツを格納したファイルが含まれます。
ディレクトリがHOUDINI_PATH/otlsにあり、拡張子が.hdaまたは.otlである場合は、展開されたディレクトリから直接Houdiniにアセットをインストールすることができます(.hdaファイルに再変換する必要はありません)。
展開されたディレクトリ形式は、以下の点で便利です:
-
バージョン管理システムにアセット定義を保存することができます。ライブラリのコンテンツの大半はプレーンテキストに展開されるため、バージョン管理システムはアセットに対する変更を比較し、差異を示すことができます。
-
アセットへの変更をバッチ処理/スクリプト化することができます。
例えば、スタジオは次のようなカスタムアセットワークフローを実装することができます:
-
アセット作成者は、展開された形式でアセットを保存します。その展開されたアセットは、バージョン管理システムによって追跡されます。
-
テストスクリプトは、Houdiniを実行する必要なく、展開されたファイルを調べて、保存済みのアセットのコンテンツをチェックすることができます。
-
スクリプトで
-mまたは-Mオプションを使用して、展開されたすべての“ソース”アセットをマージすれば、スタジオのカスタムアセットをすべて含む.hdaファイルをユーザと共有することができます。
Tipsとメモ ¶
-
展開/折り畳みは、 最初は ディレクトリ、 その次に
.hdaファイルという順番で 常に 行なわれます。通常想定される順番とは逆なので注意してください。 -
Houdiniの Asset Manager ユーザインタフェースを使用すると、ライブラリをマージしたり、
.hdaファイルをアンパックされたディレクトリに変換したり、アンパックされたディレクトリを.hdaファイルに変換することもできます。Houdiniのメインメニューで、 Assets ▸ Asset Manager を選択します。 インストールされたライブラリのリストでアセットライブラリを右クリックし、 Convert to Unpacked Format (または Convert to Packed Format )を選択します。
すると、ファイル/ディレクトリが“その場”で変換されます(つまり、ファイルは同じ名前の展開されたディレクトリに置き換えられ、ディレクトリは拡張子が
.hdaのファイルに置き換えられます)。 -
バイナリのノード定義コンテンツの扱い方は、3つの展開オプション(
-x、-Xまたは-t)によって変えることができます。展開されたディレクトリを“折り畳んで”ファイルに戻すには、それに対応するオプション(それぞれ-c、-Cまたは-l)を使用する必要があります。特定のディレクトリがどのように展開されたか分からない場合は、2つのファイルの有無を確認します。
-
サブディレクトリに
Contents.gzが含まれる場合、ディレクトリは-xを使って展開されているため、-cで折り畳むことができます。 -
サブディレクトリに
Contents.mimeが含まれる場合、ディレクトリは-tを使って展開されているため、-lで折り畳むことができます。 -
それ以外の場合は、ディレクトリは
-Xを使って展開されているため、-Cで折り畳むことができます。
-
一般的な引数 ¶
-h
ヘルプ情報をプリントします。
-a
.hdaファイルを書き出すオプションと一緒に使用すると、ファイルの Author フィールドのコンテンツが設定されます。この引数を指定しない場合、コマンドはユーザ名を使用します。
情報をプリントする方法 ¶
hotl [-B|-V] ‹testgeo.hda›
ライブラリ(出力では“オペレータ”と呼びます)内のノードタイプに関するメタデータをプリントします。例:
Operator type library: testgeo.hda Operator: mygeo Label: My Geo Path: oplib:/Object/mygeo?Object/mygeo Icon: OBJ_geo Table: Object License: Extra: User: Inputs: 0 to 0 Subnet: false Python: false Empty: false Modified: Mon Jul 12 13:21:01 2021
ファイルに複数のノードタイプが含まれている場合は、各ノードタイプのフィールドを空白行で分けてプリントされます。
次のオプションを使用すると、出力を変更することができます:
-B
各アセットのメタデータの代わりに、各ノードタイプのフルネームのみをプリントします。
例:
Object/mygeo Object/testgeo
これは、テストスクリプトやアセット管理システムなどにおいて、Houdiniを実行する必要なくファイル内の利用可能なアセットをすべてリストしたい場合に便利です。
-V
各アセットのメタデータのプリントの一部として、アセットに関連付けられたセクション(Extra Files)の名前をプリントします。例:
Operator type library: testgeo.hda
Operator: mygeo
Label: My Geo
Path: oplib:/Object/mygeo?Object/mygeo
Icon: OBJ_geo
Table: Object
License:
Extra:
User:
Inputs: 0 to 0
Subnet: false
Python: false
Empty: false
Modified: Mon Jul 12 13:21:01 2021
Sections:
DialogScript
CreateScript
TypePropertiesOptions
Help
Tools.shelf
ExtraFileOptions
InternalFileOptions
Contents.gz
これは、特定のセクションを持つ(または持たない)アセットを見つけたい場合に便利です。
.hdaファイルをファイルのディレクトリに変換する
¶
hotl -x|-X|-t ‹directory› ‹hdafile›
‹hdafile›のコンテンツを、‹directory›下のファイルツリーに展開します。
色々なオプションを使用して、どのようにノード定義を展開するかを制御します。
-x
各アセットのメタデータとセクションを個々のサブディレクトリに展開しますが、ノード定義データは展開 しません 。
ノード定義データは、各アセットのサブディレクトリにある圧縮されたContents.gzファイルに保持されます。
-X
各アセットのメタデータとセクションを個々のサブディレクトリに展開します。
また 、ノード定義ファイルはContents.gzアーカイブに残すのではなく、Contents.dirサブディレクトリに解凍します。
このオプションは、次の-tとは対照的に、ノード定義のバイナリセクションを個々のファイルに保存します。
-t
各アセットのメタデータとセクションを個々のサブディレクトリに展開します。
また 、ノード定義ファイルをContents.dirサブディレクトリに展開します。
このオプションは、ノード定義のバイナリセクションを、単一のMIMEエンコードされたContents.mimeファイルに保存します。
Tip
このオプションは、バージョン管理システム(SubversionやGitなど)にアセットライブラリを格納する場合に適しています。
-Xによって作成された未加工のノード定義ファイルは、テキストのように見えるものの実際は任意のバイナリデータを含んでいるため、バージョン管理システムが混乱する可能性があります。
-tを使用する場合は、追加のオプションを使用することができます:
-p
MIMEファイルの各セクションのタイムスタンプを含めます(.hdaファイル内に保存されます)。
展開されたディレクトリを.hdaファイルに戻す
¶
hotl -C|-C|-l [-b] ‹directory› ‹hdafile›
‹directory›下のファイルを新しいアーカイブ‹hdafile›に統合します。
ディレクトリを折り畳む各オプションは、どのようにディレクトリを展開したかに合わせて選択します(上記参照)。
-c
-xの反対。各アセットのサブディレクトリでContents.gzファイルを探し、それをノード定義として使用します。
-C
-Xの反対。各アセットのサブディレクトリのContents.dirディレクトリで個々のファイルを探し、それらをノード定義に統合します。
-l
-tの反対。バイナリセクションを含むContents.mimeファイルを格納したContents.dirディレクトリで、個々のファイルを探します。
ディレクトリをファイルに折り畳む時は、次のオプションも使用することができます:
-b
出力される.hdaファイルのバックアップコピーを作成します。
アセットライブラリをマージする ¶
hotl <-m|-M> [-e] ‹source_hda›... ‹dest_hda›
1つまたは複数の“ソース”ライブラリのコンテンツを“保存先”のライブラリにコピーします。各“ライブラリ”は、.hdaファイルまたは展開されたディレクトリとなります。
色々なオプションを使用して、同じ名前のノードタイプをどのようにマージするかを制御します:
-m
名前が重複しているノードタイプを保持します。 Houdiniにインストールするときは、Houdiniのアセット名解決ルールに基づいて、ノードタイプの1つがもう片方を上書きします。
-M
後の“ソース”ファイルのノードタイプ定義が、同じ名前を持つ、それより前のソースファイルのノードタイプを上書きします。
次のオプションも使用することができます:
-e
空のシェルフツールのセクションを上書きしません。
--chmod arg
マージ後に、宛先ファイルのファイル権限を変更します(UNIX)。