Houdini にはおおざっぱに言って以下の3種類の起動ファイルがある。
ファイル名 | 種類 | 役割 |
pythonrc.py | Python | Houdini起動時に実行される |
123.{cmd|py} | Hscript/Python | Houdini FX でファイル名を指定せずに起動した時に実行される。Houdini Core の場合、houdinicore.py というファイル名にする。 |
456.{cmd|py} | Hscript/Python | File->New および File->Open 実行後に実行される |
以下 Houdini FX 19.5 を使った場合の詳細。
pythonrc.py
- Houdini 起動時に実行される。
- デフォルトでは存在しない。
- ~/houdini19.5/scripts/python (要作成)以下に置く。
- ~/houdini19.5/scripts/ においた場合実行されない。
- 上記以外の *.py ファイルの配置位置はこちらを参照。
123.{cmd|py}
- ファイル名を指定せずに Houdini FX を起動した時に実行される。
- Houdini Core の場合、houdinicore.py というファイル名にする。
- デフォルトでは $HH/scripts/123.cmd として存在する。
- ~/houdini19.5/scripts/ (要作成) 以下に 123.{cmd|py}として配置すると、こちらが実行され、 $HH/scripts/123.cmd は実行されない。
- 123.cmd と123.py が共に ~/houdini19.5/scripts/ に存在する場合、123.py が実行され、123.cmd は実行されない。
- 123.py を ~/houdini19.5/scripts/python/ に配置した場合、実行されない。
456.{cmd|py}
- File->NewまたはFile->Open実行後に実行される。
- つまり、Houdini起動後にも実行される。
- デフォルトでは存在せず、 ~/houdini19.5/scripts/ (要作成)以下に置く。
- 456.cmd と456.py が共に ~/houdini19.5/scripts/ に存在する場合、456.py が実行され、456.cmd は実行されない。
- 456.py を ~/houdini19.5/scripts/python/ に配置した場合、実行されない。
- 例えば、デフォルトでは保持されない Edit->Auto Save を起動時およびシーンを新しくするたびに常にオンにしたい場合、
import hou hou.appendSessionModuleSource('''hou.hscript("autosave on")''') print("autosave on 456");
などと 456.py に記述する。
例
pythonrc.py
print ("python/pythonrc.py loaded")
123.py
print ("123.py loaded")
123.cmd
opcd /obj opadd geo opcolor -c 1 0 0 /obj/geo1
456.py
print ("456.py loaded")
456.cmd
opcd /obj opadd geo opcolor -c 0 0 1 /obj/geo1
- 上記の pythonrc.py を ~/houdini19.5/scripts/python/ に、123.py, 456.py を ~/houdini19.5/scripts/ に配置し Houdini を起動すると、起動したシェルまたは Houdini Console に、
python/pythonrc.py loaded 123.py loaded 456.py loaded
と表示され、File->Newを繰り返すたびに、456.py loaded
と表示される。 -
123.py をパスから外し、上記の 123.cmd を ~/houdini19.5/scripts/ に配置し Houdini を起動すると、起動したシェルまたは Houdini Console に、
python/pythonrc.py loaded 456.py loaded
と表示され、シーンには赤く色づけされた /obj/geo1 が出来ている。 File->Newを行えば、456.py loaded
と表示される。 -
456.py をパスから外し、上記の 456.cmd を ~/houdini19.5/scripts/ に配置し Houdini を起動すると、起動したシェルまたは Houdini Console に、
python/pythonrc.py loaded
と表示され、シーンには青く色づけされた /obj/geo1 と色の付いていない/obj/geo2 が出来ている。
File->Newを行えば、青く色付けされた /obj/geo1 だけが残る。
123.py で起動時間を計測
~/houdini19.5/scripts/123.py を以下のように記述。
import hdefereval import time start_time=time.time() last_time = start_time print("beginning at", start_time, "-", time.ctime()) def print_since_start(msg): global start_time global last_time now = time.time() print(msg, "-", now - start_time, "-", now - last_time, "-", time.ctime()) last_time = now print_since_start("NOW") hdefereval.executeDeferredAfterWaiting(print_since_start, 1, "STARTUP TIME")とすれば、Houdini 起動したターミナルまたはコンソールに起動時間が表示される。
複数ある 456.py の実行
456.py が ~/houdini19.5/scripts と $HSITE/houdini19.5/scripts の両方にある場合、Houdini は ~/houdini19.5/scripts 以下の 456.py のみを実行し、$HSITE 以下のは実行しない。両方を実行するには、ホーム以下 (~/houdini19.5/scripts/) の 456.py の最後に以下のようなコマンドを追加。
print("456 in ~/houdini19.5/scripts"); post_load_files = hou.findFiles("scripts/456.py") n = len(post_load_files) for i in range(1, n): post_load_file = post_load_files[i] with open(post_load_file, "r") as f: exec(f.read())とすると、hou.findFiles が自身を含む HOUDINI_PATH にあるすべての 456.py を探すが、range を 0 からではなく 1 から始めているので、自身の再実行は行わない。
Hscript Texport での現在ディレクトリ表示
123.cmd に
prompt '`strcat(oppwf(), " -> ")`'と記述すると、Hscript Textport のプロンプトが現在のディレクトリを表示する。 これを Python で記述するには、
hou.hscript( 'prompt \'`strcat(oppwf(), " -> ")`\'')
おまけ
- "~" はホームディレクトリの意味。ここでの Houdini の実行は環境変数 HOME を設定して行っている。
- $HH は、Houdiniのインストールパス以下の houdini ディレクトリ。(例: /Program Files/Side Effects Software/Houdini 19.5.534/houdini) つまり、 $HFS/houdini/ 。
- Python (pythonrc.py, 123.py, 456.py) であれば print により起動したシェルなり Consoleウィンドウに文字列をプリントすることが出来るが、Hscript (123.cmd, 456.cmd) では同じことは出来ない。一番近いのは echo コマンドで、これを使うと Hscript Textport (Window->Hscript Textport)に起動時に表示される。
- Houdini 環境変数設定
- Hip ファイルのテキスト保存および差分表示
- *.py 配置位置
- スタートアップスクリプト (Houdini ドキュメント)
- HScript言語のガイド (Houdini ドキュメント)
最終更新: 2023-06-22
0 件のコメント:
コメントを投稿