Help us understand the problem. What is going on with this article?

Houdiniの文字モジしたUIたち

More than 3 years have passed since last update.

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の隣に並んでます。
textport.png

なにをするもの?

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ではシステムにインストールされているものが使われます。

dirしてみると

最初から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種が用意されています。

pythonPanes.png

保存される時のファイル拡張子は .pypanel です。

ヘルプ

http://www.sidefx.com/docs/houdini15.0/ref/windows/pythonpaneleditor
先ほどの2種のほか、ここでは6種のサンプルもロードできます。

ほか

houdini本体と同じbin以下に、hythonhscriptというショートカットが置かれており、
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に関して紹介してみる。」です!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした