すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

Python - Houdiniでの調べ方、スクリプトの配置とか

Houdini側がメインの諸々。後で見直したとき見れば何かしらHoudiniのPythonがわかるようにメモ。

ターゲットは同じようにPythonよくわかんないぜ!って言う人向けです。とりあえずなんかちょっとできるかもだぜ!を一緒に目指しましょう。

用語とか怪しいのでなにかあればお願いします。

最初にメモ

Console

print()などの出力結果を表示するHoudini Console、Windowsだとデフォルトで出てた気がする...?

Linuxだと起動時に-foregroundのフラグを立てるか、フラグを立てなくても起動後にPython Shellに出力される。

スクリプトの置き場

他にもいくつあったはずだけど簡単な2つ。

このパス(ディレクトリ、フォルダ)を認識させることによって、外部ファイルの~~.pyやモジュールとかが実行できるようになる。

Python スクリプトの場所

PYTHONPATH

これはPython自体の環境変数なので、Pythonが使えるDCCならどれでも同じように指定できる。

Linux

export PYTHONPATH="/my/script_dir_path"

Windows

set PYTHONPATH="/my/script_dir_path"

Houdini Package

Houdiniパッケージ

  1. コマンドラインから'HOUDINI_PACKAGE_DIR'の環境変数を設定して実行

  2. 'HOUDINI_PACKAGE_DIR'のjsonファイル内の環境変数がすべて設定される

  3. 環境変数が設定されたHoudiniが起動する

起動用のShell Script例 (Linux)
#set version 
VERSION="20.0.547"
#set path
export PATH=$PATH:/opt/hfs${VERSION}/bin
#set env
export HOUDINI_PACKAGE_DIR="your_package_json_dir";
#run Houdini
houdini
パッケージファイル例

もっと色々設定できるので詳細は公式ヘルプを見ること。

{
    "env": [
        {"HOUDINI_PATH": "your_houdini_config_file_dir"},
        {"EDITOR": "your_editor"}
    ]
}
Houdini Config File

環境変数HOUDINI_PATHに記述する、Houdiniの初期設定やHDAなど各種を読み込むディレクトリです。

これは、指定したディレクトリ以下の特定のフォルダ名を自動的に処理してくれる便利なやつです。

例えば以下画像のような構成であればこのdefaultをHOUDINI_PATHで設定することで、

このフォルダ内のPython ScriptやHDA、Shelfなども全部読み込んでくれます。

HOUDINI_PATH以下のフォルダ名の定義

以下のコマンドを走らせるとどういうフォルダ名にすればどのように利用されるかが羅列されるので、

それをもとにHOUDINI_PATHで設定するディレクトリ以下の階層名を決める。

Python Scriptであればpython3.10libsというようなディレクトリ名にする。(3.10の部分はPythonのバージョンが入る)

Windows

HoudiniのCommand Line Toolsを実行してhconfig -ap

Linux
cd /opt/hfs20.0.547
source houdini_setup
hconfig -ap

Python Scriptが使えるかどうかの確認方法

外部ファイルのPython Scriptを呼び出して実行するためには、環境変数PYTHONPATHにそのディレクトリが設定されている必要がある。

Python Pathを確認するPython

import sys
for path in sys.path:
    print(path)

を実行する。これもPython自体の機能なのでDCC問わず使える。

Consoleにこんな感じで表示される。

一時的にPathを通すPython

テスト中とかで所定の箇所に配置せずに使いたい場合。これもPython自体の機能なのでDCC問わず使える。

import sys
sys.path.append(" /my/script_dir_path")

HoudiniのPythonで使えるモジュールとか

こういうふうに調べるとか、ここに書いてあるとか。

Python標準ライブラリ

Pythonが内包しているものはこっち

docs.python.org

docs.python.org

USD関連

USDのヘルプ?はよくわからないと本当によくわからない。

左のメニューのSdfの項目のSdfLayerとかはfrom pxr import Sdf, Usdした後でたまに使うような気がする。

openusd.org

メニューがいっぱいあって嫌になるが、ClassesのClass Listで、LOPでよく使いそうなのはSdf〜とUsd~のような気がする?

USDに関してはゼロからPythonでUSDやりまーす!とかじゃなければOmniverseのヘルプもあり。

Sdf module — pxr-usd-api 105.1 documentation

公式 HOM Help

www.sidefx.com

その他モジュール

Houdiniには(多分)公式ヘルプに記載のないモジュールがいっぱいある。

以前は以下URLのページを見たりもしていましたが永らく更新がないようなので、それの調べ方。

Welcome to Houdini Python modules’s documentation! — Houdini Python modules 17.0.439 documentation

調べ方

Houdiniを起動して、Python Shellからhelp('modules')を実行する。

するとなにか謎の呪文のようなものが大量にリストアップされてくる。

これがすべて使えるモジュールなので、Pythonimport モジュール名にするとその機能が使える。

絞り込んでの調べ方

さらに、例えばLOP関連のモジュールを表示したいとかであれば、help('modules lop')とするとlopを含むモジュールをリストアップできる。

モジュール(パッケージ)のファイルの場所を調べる

だいたいはここにある`$HFS/houdini/python3.10libs/`

Pythonから探す場合は〜

import モジュール名
print(モジュール名.__file__)

パッケージの場合は__file____path__でもいける。

モジュール内の関数を調べる

help('モジュール名')にするとそのモジュール内の関数とその引数がリストアップされる。

ものによってはhelp('モジュール名.関数?')とかで調べると更に詳しく出たり?

ただし、以下の画像のようにHoudiniのHelpに乗ってない系モジュールはモジュール名と引数くらいしかわからないことが多い。