2018-02-03

hip ascii and diff


Houdini 16.0 から .hip は テキストフォーマットで保存することが出来るようになった。ここでは、今更だが、その方法とそれに付随する便利な機能を紹介する。


使用したビルド: 16.5.354 (2023年6月以降 Text ベースの .hip ファイルを使った運用をするのであれば 19.5.654 以降のビルドが必須。詳細はこのページの「テキスト保存のプリファレンス設定」を参照のこと)

1. Save as Text

  1. 例えば、Create シェルフから Ctrl キーを押しながら Torus を実行する。
    • 原点に torus_object1 が作られる。
    • ここで File->Save を実行、例えば torus.hip という名前で保存すると、保存されるファイルはバイナリファイルになり、テキストエディタで開くことは出来ない。
  2. シーンをテキストファイルで保存するには、File->Save As Text... を実行し、ファイル名を、例えば torus_ascii.hip などと指定する。
    • テキストであっても拡張子は .hip
    • 一度 Save As Text を実行すると、
      • その後の File->Save と Save As... は、テキストファイルで保存するようになる。
      • 同メニューは Save as Binary に変わり、こちらを実行すれば、デフォルト同様バイナリ保存に戻る。
      • Save As Text は、Houdini 終了時まで有効。

2. テキストシーンファイルの差分表示

テキストで保存した .hip ファイルは、当然ながら、テキストエディタで開いて編集したり、差分を取ったりすることが容易になる。ここでは、Windows 上で外部ツール Meld を利用した差分表示方法を紹介する。

  1. Meld をダウンロードしインストールする。
      Meld でなくとも良いが、Meld のロゴは Houdini のロゴに似ていなくもない。一番下にDiff ツールのリストあり。
  2. Houdini で Edit->Preferences->External Tools に行き、File Compare と Folder Compare の Executable Path に インストールした Meld の実行ファイルまでのパス (C:/Program Files (x86)/Meld/Meld.exe) を挿入、Accept をクリック。
  3. Create シェルフから Ctrl キーを押しながら Sphere を実行する。
      シーンに sphere_object1 ができる。
  4. File -> Show Change... を実行し、表示されたパネルで Compare: を Current Scene (デフォルトのまま) でCompare ボタンをクリック。

      Meld が起動、差分が表示される。
  5. 同パネルで Compare: を File...、 Against も File... とすれば二つの異なる(テキスト保存された) .hip ファイルの差分を表示することも可能。

3. HDA の差分表示 その1

HDA に対する差分表示も可能。実行する場所により行えることが異なる。

  • ネットワークエディタ
    • シーンにロードした HDA 上で RMB-> Show Changes... とすれば、最後の保存やバックアップとの差分表示が可能。
  • Asset Manager
      ここでは、二つの HDA の差分比較が可能。
      1. メインメニューの Assets->Asset Manager... を実行し、パネルを開き、比較をしたいHDA ノード(最下流) を選択。
      2. RMB->Compare... を実行し、パネルを開き、Against: に、別のアセットを選択すれば、二つのアセットの違いを表示可能。

3. HDA の差分表示 その2

ディスク上に格納された HDA は単一ファイルとなっているが、これをディレクトリ構造のファイルシステムとして展開することも可能。また展開したディレクトリ構造を HDA として再びまとめることも可能。これは hotl というコマンドラインツールで行う。

  • HDA の展開
    • 例えば test.hda という HDA があり、これを test1 というディレクトリ以下に展開したい場合、
      $ hotl -x test1 test.hda
      とする。
    • Meld は二つのディレクトリの差分を取ることも可能。
  • HDA のまとめ
      今度は test1 以下を test2.hda という HDA にまとめたい場合、
      $ hotl -c test1 test2.hda
      とする。
  • これらを活用することで、より柔軟な HDA 編集・管理が可能になる。

なお、GitHub からダウンロードした SideFXLabs-Development.zip から単一の .hda を作りたい場合は、

$ hotl -m SideFXLabs-Development/otls/*.hda test.hda 
(test.hda はターゲットファイル名) とする。

4. テキスト保存のプリファレンス設定

.hip ファイルをバイナリ保存 (デフォルト) するかテキスト保存するかの設定は、 Edit -> Preferences -> Save and Load Options 以下の Save New File As を Text にすることで可能。ただし、一部の操作後にこの設定が無視されるケースがある (あった)。

  1. Houdini 起動後、File -> New を行うまで
  2. File -> Open または File -> Merge で別.hip ファイルを読み込んだ後
  3. ネットワークエディタでノードのコピペをした後
このうちの #2 と #3 が Houdini 19.5.654 で修正されている。 プリファレンスの設定にかかわらず、Houdini が .hip ファイルをバイナリで保存するのかテキストで保存するのかを最も確実に知る方法は
hou.hipFile.saveMode()
を Python Shell で実行すること。このコマンドで saveMode.Text が返ればテキスト保存され、saveMode.Binary が返ればバイナリで保存される。

また Python 経由で同設定を Text に強制変更するには

hou.hipFile.setSaveMode(hou.saveMode.Text)
とする。 #1 と #2 や他のうっかり誤操作などに対応するために hou.hipFile.setSaveMode(hou.saveMode.Text) 456.py に追記しておくと良い。

おまけ

Diff ツール。TortoiseMerge と Beyond Compare は Houdini がインストールされていることを検知し、 Preferences の External Tools の項が空の場合、自動的に設定される。おそらく Windows 版のみ。

名前 対応OS 価格
Meld Windows 無償
Kdiff3 Windows, Linux, Mac 無償
TortoiseMerge Windows 無償
Beyond Compare Windows, Linux, Mac 有償
Extenal Tools のツールは、環境変数 HOUDINI_COMPARE で上書き設定も可能。

こんなのものある。GitHub - golubevcg/hip_file_diff_tool



最終更新: 2023-09-19

0 件のコメント:

コメントを投稿