Houdini Advent Calendarを眺めてみたところ12/8が空いておりましたので小ネタにて参戦させていただきます。
Advent Calendarというものには初参加で緊張します。。。
これはなに?
Textport、Python Shell、Python Source Editor、Python Panel Editorという
Houdini内の文字モジしたUIたちについて概観してみたいと思います。
Textport
メニューだとHscript Textportですが、Houdini メインウィンドウ内では単に「Textport」です。
ドキュメントでも「Textport window」と呼ばれてます。
デスクトップを「Technical」(←個人的にお気に入り)にしていると、Python Shellの隣に並んでます。
なにをするもの?
HscriptでHoudiniとやりとりするのに使います。
オーソドックスなところで、help
を唱えてみます。
びゅわーっとHscriptに存在するコマンドが並びます。
H15におけるHscriptのドキュメントはこちら
https://www.sidefx.com/docs/houdini15.0/commands/_index
また、exhelp
というのを唱えますと、エクスプレッションがぶわーっと確認できます。
なおH15におけるExpressionのドキュメントはこちら
https://www.sidefx.com/docs/houdini15.0/expressions/_index
Textportでは、
一度に表示できるのは8KB分まで、コマンドラインに渡せる引数は最大1024までとのこと。
ヘルプ
日本語では、H12.1のものがこちら
http://sidefx.jp/doc/ref/windows/textport.html
H15はこちら
https://www.sidefx.com/docs/houdini15.0/ref/windows/textport
備考
Hscript自体は、ドキュメントを眺めていると
割と「旧来もの」扱いされているのをちらほら見かけます。
これから学習するならPythonの方をよろしく的なことのようです。
Python Shell
HscriptではなくPythonでHoudiniとやりとりするためのUIです。
ここで動いているPythonは、WindowsではHoudiniと一緒にインストールされたもの、
LinuxとmacOSではシステムにインストールされているものが使われます。
最初からhouモジュールが読み込まれているのがわかります。
hou.py自体は5万行近い1.5MBほどのものですが、SWIG出力されたもので、
本体は _hou.so になります。こちらは7.1MBほどと大きいです。
os.environを見てみると、Hから始まる環境変数が大量に追加されていることがわかります。
これらは平時Houdiniを使っている時に登場する「$HFS」などのことですね。
import os
os.environ.keys()
['HOUDINI_USER_PREF_DIR', 'HFS', 'HT', 'HH', 'LOGNAME', 'USER', 'HOME', 'HB', 'PATH', 'DISPLAY', 'HD', 'HIP', '__CF_USER_TEXT_ENCODING', 'SHELL', 'SECURITYSESSIONID', 'HOUDINI_OS', 'XPC_FLAGS', 'DBUS_LAUNCHD_SESSION_BUS_SOCKET', 'JOB', 'HOUDINI_VERSION', 'XPC_SERVICE_NAME', 'HSITE', 'H', 'SSH_AUTH_SOCK', 'CLASSPATH', 'ACTIVETAKE', 'Apple_PubSub_Socket_Render', 'HOUDINI_TEMP_DIR', 'TMPDIR', 'HTB', 'POSE', 'HHC', 'HIPNAME', 'HOUDINI_DESKTOP_DIR']
※比較としてHoudini Python Shellの外でのos.environの例
import os
os.environ.keys()
['TERM_PROGRAM_VERSION', 'LOGNAME', 'USER', 'PATH', 'HOME', 'DISPLAY', 'TERM_PROGRAM', 'LANG', 'TERM', 'Apple_PubSub_Socket_Render', 'SHLVL', 'SECURITYSESSIONID', 'XPC_FLAGS', 'DBUS_LAUNCHD_SESSION_BUS_SOCKET', '_', 'TERM_SESSION_ID', 'XPC_SERVICE_NAME', 'PYTHONPATH', 'SSH_AUTH_SOCK', 'SHELL', 'TMPDIR', '__CF_USER_TEXT_ENCODING', 'PWD']
あとHoudiniのPython環境ではnumpyが使えます。PySideと。
hutilとかhou以外のSideFx謹製モジュールもあります。
ていうかhou.pyと同じ並びに 〜util 系モジュールめちゃいっぱい置かれてます。
UI云々の話からは逸脱しますが。
ヘルプ
H15ドキュメントの中には個別にヘルプがない気がします。
もっともそれっぽいのはこちら
Accessing hou from a Regular Python Shell
http://www.sidefx.com/docs/houdini15.0/hom/commandline
そしてPython Scriptingについてはこちら
http://www.sidefx.com/docs/houdini15.0/hom/
houモジュールについてはこちら
http://www.sidefx.com/docs/houdini15.0/hom/hou/_index
Python Source Editor
hou.sessionモジュールを編集するためのエディタです。
hou.sessionはカスタムなクラス、関数、変数を定義するのに使われ、ここに書いた内容は .hip ファイルに保存されます。要はシーン内埋め込みスクリプトに関するエディタ。
hou.sessionについてはこちら
http://www.sidefx.com/docs/houdini15.0/hom/hou/session
http://sidefx.jp/doc/hom/session.html
定義したものは次のようにして呼び出します。
# Python Source Editor内でこのように定義
import os
def envkey_print():
print(os.environ.keys())
↓呼び出すときは、このように hou.session.〜
します。
hou.session.envkey_print()
また、Python Source Editorでなにを書いてるかは、次のように取得できます。
hou.sessionModuleSource()
'import os\n\ndef envkey_print():\n print(os.environ.keys())\n\n'
文字列で返ってきます。
ヘルプ
Python Source Editorも独立したドキュメントは見当たらない気がします
(見落としだったらすいません…)
Python Panel Editor
Python Source Editorと名前の印象が近くて紛らわしいですが、
こちらは、PyQtやPySideを使ってUIを作るためのエディタです。
作ったUIは、Pane Tabのプルダウンから指定して呼び出せます。
デフォルトで**「Pose Library」「Character Picker」**の2種が用意されています。
保存される時のファイル拡張子は .pypanel
です。
ヘルプ
http://www.sidefx.com/docs/houdini15.0/ref/windows/pythonpaneleditor
先ほどの2種のほか、ここでは6種のサンプルもロードできます。
ほか
houdini本体と同じbin以下に、hython
やhscript
というショートカットが置かれており、
houdiniメインウィンドウを開かずにコマンドラインベースであれこれできます。
上記TextportやPython Shellの独立したものです。
http://www.sidefx.com/docs/houdini15.0/render/batch#hython-and-hbatch
ついでにこの辺りも多少関係ありそうということで付記しておきます
Stand-alone utilities
http://www.sidefx.com/docs/houdini15.0/ref/utils/_index
まとめ
Houdini色々できて楽しいですね。
とりあえず「python2.7libs」以下をしっかり眺めるだけで何かと勉強になりそうです。
次は takavfx さんの「Bento Toolsetに関して紹介してみる。」です!