On this page |
プラグインのインストール
概要 ¶
従来では、Houdiniの環境変数の値を設定する方法はhoudini.env
ファイルを編集することでした。
セットアップで一番重要な変数は$HOUDINI_PATH
です。
この変数は、アセットなどのファイルを検索する場所をHoudiniに伝えます。
他にも、便宜的な変数(例えば、$TEXTURE_DIR
)を作成したり、システム環境変数($PATH
などのバイナリ検索パス)を編集しても構いません。
ここで問題になるのは、ユーザだけでなく、スタジオやプラグイン作成者なども環境変数を設定したい場合です。
複数の関係者が最終的にそのhoudini.env
ファイルを書き直したり記述を足したりすることになり、場合によってはエラーが起きたり、冗長になりがちです。
さらに、ある場合に変数を定義し、そうでない場合に定義したくないこともあります(例えば、プロジェクト固有のパスに切り替えたり、“実験段階の”アセットを有効化/無効化したい場合です)。
このようなセットアップを可能にするための新しい解決策が パッケージ です。
パッケージは、HOUDINI_PATH/packages
内に.json
ファイルとして格納します。
各パッケージファイルには、その環境設定の修正方法を示した仕様を記述します(Houdini Pathと他の変数も記述します)。
以下の単位でパッケージを分けることができます:
-
スタジオ変数。
-
プロジェクト変数。
-
ユーザ変数。
-
プラグイン、ツール、アドオン毎の変数。
このファイルフォーマットは、何かしらの自動化ができるようにするためのちょっとしたエクスプレッション言語に対応しています。 エクスプレッションを使用すれば、例えば以下のことが可能になります:
-
ツールのインストールを有効化/無効化したり、そのツールで必要となるパッケージ(s)を指定することができます。
-
汎用的なパッケージファイルを記述することができます。
-
1つのパッケージで複数のプラットフォームのセットアップを管理することができます。
-
単純なオペレータ、Houdiniキーワード、環境変数を使った条件分岐で変数を設定することができます。
これによって、houdini.env
の編集は不要になります。
hou.ui.loadPackageも参照してください。
パッケージファイルの使い方 ¶
-
パッケージファイルが正しくJSONで記述されていて、そのファイルの拡張子は
.json
でなければなりません。 -
Houdiniは、起動時に以下のディレクトリ(存在した場合)からパッケージファイルを検索します:
-
$HOUDINI_USER_PREF_DIR/packages
-
$HSITE/houdinimajor.minor/packages
(例えば、$HSITE/houdini18.0/packages
) -
$HOUDINI_PACKAGE_DIR
Houdiniは
$HOUDINI_PACKAGE_DIR
で指定されたディレクトリ直下にあるパッケージファイルを処理します。$HOUDINI_PACKAGE_DIR
にpackages
ディレクトリを足してパッケージファイルを検索するわけでは ありません 。 -
$HFS/packages
Note
$HSITE
と$HOUDINI_PACKAGE_DIR
は、Houdiniを起動する前に必ず設定してください。 -
-
Houdiniは、上記で指定された順番で各パッケージディレクトリを走査します。その順番は、
$HOUDINI_USER_PREF_DIR/packages
から始まり、次に$HSITE
などの順番になります。パッケージファイルは、各パッケージディレクトリ内でアルファベット順に読み込まれます。この処理順は、process_orderキーワードを使って変更することができます。 -
packages
ディレクトリ内に複数のパッケージファイルを格納することができます。 -
Houdiniは
packages
内のサブディレクトリを検索 しません 。 -
パッケージファイルから追加パッケージフォルダを動的に指定することができます。
パッケージファイルの記述 ¶
パッケージファイルを記述する際には以下のキーワードを使用します:
env
環境変数を設定または変更します。
enable
パッケージを有効または無効にします。
load_package_once
パッケージが何回もロードされるのを回避します。
"load_package_once": true
を指定すると、Houdiniは、検索パス内の最初のパッケージをロードし、その検索パス内の 同じファイル名 の他のパッケージを無視します。
このキーワードのデフォルトはfalse
です。
process_order
パッケージディレクトリ内のパッケージを処理する順番を変更するためにHoudiniで使用可能な整数値を指定します。
package_path
動的にパッケージパスを走査します。
hpath
HOUDINI_PATH
を設定するショートカット。
Note
path
は廃止され、代わりにhpath
を使用してください。
recommends
依存関係を強制することなく、特定のパッケージ(s)が利用可能かどうかをチェックします。
requires
特定のパッケージ(s)が利用可能かどうかをチェックし、依存関係を強制します。
Houdini Pathの制御 ¶
To... | Do this |
---|---|
Houdini Pathの前に新しいディレクトリを追加する |
{ "hpath" : "/user/bob/libs" }
|
Houdini Pathの前に複数のディレクトリを追加する |
{ "hpath" : [ "/user/bob/libs", "/user/tom/libs", "/user/sam/libs" ] } |
|
デフォルトでは、新しいパスは既存パスの 前 に追加されます。
Houdini Pathの末尾に1つのパス、Houdini Pathの頭に2つのパスを追加する: { "hpath" : [ { "value" : "/user/bob/libs", "method" : "append" }, "/user/tom/libs", "/user/sam/libs" ] } 前のHoudni Pathを新しいパスで上書きする: { "hpath" : [ { "value" : [ "/user/bob/libs", "/user/tom/libs", "/user/sam/libs" ], "method" : "replace" } ] } |
他のパッケージファイルに依存したパッケージファイルを指定する。 |
{ "recommends" : "package_name", "hpath" : "/user/bob/libs" }
{ "requires" : ["package1","package2"], "hpath" : "/user/bob/libs" } どちらのキーでも値には、パッケージ名の文字列またはパッケージ名の文字列の配列を指定することができます。 |
エクスプレッションに基づいてパスを追加または追加しないようにする |
{ "hpath" : [ {"houdini_os != 'windows'" : "/user/bob/libs"}, {"houdini_os == 'windows'" : "$HOME/bob_win_libs"}, {"$use_tom_libs == '1'" : "$HOME/tom_libs"} ] } 以下のパッケージエクスプレッションを参照してください。 |
パッケージを“無効”としてマークして、Houdiniにそのパッケージを無視させる |
トップレベルキーの { "enable" : false, "hpath" : "/user/bob/libs" } ブール値の代わりに { "enable": "houdini_os == 'linux'" } このエクスプレッションの意味を逆にしたいのであれば、デフォルトの { "enable": { "houdini_os == 'linux'": false } } |
Houdiniが検索パスで後で見つけた同じパッケージファイル名の他のパッケージをロードしないようにする |
{ "load_package_once" : false } または、 { "load_package_once": "houdini_os == 'linux'" } または、JSONマップを使用することができます: { "load_package_once": { "houdini_os == 'linux'": false } } |
任意の環境変数を設定する ¶
To... | Do this |
---|---|
環境変数を設定/変更する |
トップレベルキーワードの
Note
以下のJSONは、 { "requires" : ["package1","package2"], "env": [ { "BOB": "$HOME/bob_tool" }, { "HOUDINI_PATH" : [ "$BOB/libs", { "houdini_version>'17.5' and houdini_version<'17.5.250'": "$BOB/test", "method": "append" } ] } ] } 別の構文を使用すれば、予約済みキーである { "requires" : ["package1","package2"], "env": [ { "var": "BOB_TOOL", "value": "$HOME/bob_tool", "method": "append" }, { "var": "BOB", "value": "$HOME/bob_tool" }, { "var": "HOUDINI_PATH", "value": [ "$BOB/libs", { "houdini_version>'17.5' and houdini_version<'17.5.250'": "$BOB/test2", "method": "append" } ] }, { "PATH" : { "value" : "$BOB/bin", "method": "append" } } ] } 独自のパス変数を定義することができます。 { "env": [ { "MYPATH": ["$HOME/bob_tool", "$HOME/bob/test"] } ] } 中括弧({})を使用することで、変数値と値リテラルを連結することができます。 この中括弧の構文は、HSCRIPT変数と同じです。 { "env": [ {"BOB": "/home/bob/bob_tool"}, {"BOB1": "${BOB}1"}, {"BOB2": "${BOB}2"} ] } Hscript Textportから: / -> echo $BOB /home/bob/bob_tool / -> echo $BOB1 /home/bob/bob_tool1 / -> echo $BOB2 /home/bob/bob_tool2 デフォルト変数構文 ¶デフォルト変数構文である
{ "hpath" : [ "${EMPTY_VAR-/var/tmp}", "${BOB_TOOL-${HOUDINI_PACKAGE_PATH}/../BOB_TOOL}" ], "env": [ {"BOB": "${BOB_TOOL-/home/bob/bob_tool}"}, {"BOB1": "${BOB_TOOL_V1-${BOB}}"} ] }
. echo $HOUDINI_PATH /var/tmp:/home/bob/BOB_TOOL . echo $BOB /home/bob/bob_tool . echo $BOB1 /home/bob/bob_tool |
相対パス変数 ¶
To... | Do this |
---|---|
パッケージパスを基準に環境変数を設定する |
例えば、 { "env": [ { "HOUDINI_PATH": "$HOUDINI_PACKAGE_PATH/../tools" } ] } Houdiniは、 HOUDINI_PATH := '/home/user/bob/tools;&' |
パッケージフォルダを動的に設定する ¶
パッケージファイルを読み込むために事前に指定されたスタートアップフォルダに加えて、Houdiniではパッケージファイルから追加でパッケージフォルダを設定することができます:
-
package_path
キーワードを使用することで、単一フォルダまたはフォルダの配列を設定することができます。 -
Houdiniは、指定したフォルダ直下に配置されているパッケージファイルを処理し、それらのフォルダ下に
packages
ディレクトリを追加 しません 。 -
Houdiniは、追加パッケージフォルダをキューに入れて、それらを再帰的に処理していきます。このキューは、現行パッケージフォルダの処理が完了した時に逐次処理されていきます。このループは、キューにフォルダが追加されなくなった時に終了します。
Note
env
キーワードを使って設定された環境変数は、package_path
の設定には使用することができません。
Houdiniを起動した時の環境からの変数のみを使用することができます。
To... | Do this |
---|---|
走査する単一フォルダを設定する |
{ "package_path" : "$HOME/bob_tool" } |
条件分岐でフォルダを指定する |
{ "package_path" : { "houdini_version == '18.0.302'": "/opt/bob/packages" } } |
走査するフォルダの配列を設定する |
{ "package_path" : [ "$HOME/bob_tool", "/opt/tom_tool" ] } |
フォルダの配列を設定する |
{ "package_path": [ "$HOME/bob_tool1", "$HOUDINI_PACKAGE_PATH/../bob_tool2", {"houdini_version > '17'" : "$HOME/bob_tool3" } ] } |
パッケージの処理順を変更する ¶
Houdiniは、起動時に特定のパッケージディレクトリを走査してから、各ディレクトリで見つかったパッケージをファイル名のアルファベット順で読み込みます。
それらのパッケージの処理順はそれと同じです。
パッケージディレクトリ内のその処理順は、process_order
キーワードを使って変更することができます。
Houdiniは、このキーワードを使用してパッケージを昇順でソートした後に、それらのパッケージを処理します。
process_order
が一番低いパッケージが最初に処理され、process_order
が一番高いパッケージが最後に処理されます。
Note
処理順の変更は、パッケージディレクトリ別に行なわれ、パッケージのprocess_order
は、そのディレクトリ内でのみ影響があります。
To... | Do this |
---|---|
デフォルトの処理順で |
$HOUDINI_USER_PREF_DIR/packages/package1.json { "hpath" : "$HOME/bob1" } $HOUDINI_USER_PREF_DIR/packages/package2.json { "hpath" : "$HOME/bob2" } $HOUDINI_USER_PREF_DIR/packages/package3.json { "hpath" : "$HOME/bob3" } 結果: . hconfig -xa . HOUDINI_PATH := '$HOME/bob3;$HOME/bob2;$HOME/bob1;&' |
カスタムの処理順で |
$HOUDINI_USER_PREF_DIR/packages/package1.json { "hpath" : "$HOME/bob1", "process_order" : 3 } $HOUDINI_USER_PREF_DIR/packages/package2.json { "hpath" : "$HOME/bob2", "process_order" : 2 } $HOUDINI_USER_PREF_DIR/packages/package3.json { "hpath" : "$HOME/bob3", "process_order" : 1 } 結果: . hconfig -xa . HOUDINI_PATH := '$HOME/bob1;$HOME/bob2;$HOME/bob3;&' |
カスタムの処理順で |
$HOUDINI_USER_PREF_DIR/packages/package1.json { "env": [ { "HOUDINI_PATH": { "value": "$HOME/bob1", "method": "append" } } ], "process_order" : 3 } $HOUDINI_USER_PREF_DIR/packages/package2.json { "env": [ { "HOUDINI_PATH": { "value": "$HOME/bob2", "method": "append" } } ], "process_order" : 2 } $HOUDINI_USER_PREF_DIR/packages/package3.json { "env": [ { "HOUDINI_PATH": { "value": "$HOME/bob3", "method": "append" } } ], "process_order" : 1 } 結果: . hconfig -xa . HOUDINI_PATH := '$HOME/bob3;$HOME/bob2;$HOME/bob1;&' |
サンプル ¶
パス ¶
パスを |
{ "hpath": "$HOME/bob_tool/libs" } |
パスを複数追加 |
{ "hpath": ["$HOME/bob_tool/libs", "$HOME/bob_tool/test"] } |
エクスプレッションの使用 |
{ "hpath": {"houdini_os == 'windows'": "$HOME/bob_tool/libs"} } |
環境変数 ¶
複数の環境変数を定義 |
{ "env" : [ { "BOB" : "$HOME/bob_tool" }, { "TOM" : "$HOME/tom_tool" } ] } |
エクスプレッションの使用 |
{ "env": [ { "QUAD_LIBS": { "houdini_version > '17.0' and houdini_version < '17.5'" : "$HOME/quad_libs" } } ] } |
環境変数を利用したエクスプレッションの使用 |
{ "env": [ { "SERVER1": { " $MY_SERVER_SETUP == 'ICARUS' ": "/servers/icarus" } }, { "SERVER2": { " $MY_SERVER_SETUP == 'MERCURY' ": "/servers/mercury" } } ] } |
変数の作成とその再利用 |
{ "env" : [ { "BOB" : "$HOME/bob_tool" }, { "BOB_TEST" : "$BOB/test" } ] } |
|
{ "env" : [ { "HOUDINI_PATH" : "$HOME/bob_tool" } ] } |
|
{ "env" : [ { "HOUDINI_PATH" : { "value": "$HOME/bob_tool", "method": "append" } } ] } |
|
{ "env" : [ { "HOUDINI_PATH" : { "value": [ "$HOME/bob_tool", "$HOME/tom_tool" ], "method": "replace" } } ] } |
複数の変数 |
{ "env": [ { "BOB" : "$HOME/bob_tool" }, { "HOUDINI_PATH" : { "value": [ "$BOB/libs", { "houdini_version>'17.5' and houdini_version<'17.5.250'": "$BOB/test", "method": "append" } ] } } ] } |
|
{ "env" : [ { "PATH" : { "value": [ "$HOME/bob_tool", { "value": "$HOME/tom_tool", "method": "append" } ] } } ] } |
推奨/必須 ¶
bob_toolパッケージが見つからなかった場合に警告を表示 |
{ "recommends": "bob_tool" } |
複数の依存パッケージ |
{ "recommends": [ "bob_tool", "tom_tool" ] } |
条件次第で必要な依存パッケージ |
{ "recommends": { "houdini_version > '17.0'": "sam_tool" } } |
bob_toolパッケージが見つからなかった場合にエラーを表示 |
{ "requires": "bob_tool" } |
複数の必須パッケージ |
{ "requires": [ "bob_tool", "tom_tool" ] } |
条件次第で必須なパッケージ |
{ "requires": { "houdini_version > '17.0'": "sam_tool" } } |
パッケージエクスプレッション ¶
エクスプレッションを使用すれば、条件分岐でパッケージ変数を設定することができます。 この文法は、以下の比較演算子と論理演算子の組み合わせで定義されたブール表現に対応しています。
-
エクスプレッションは次の演算子を使用することができます:
(
,)
,==
,!=
,<
,>
,<=
,>=
,and
,or
。 -
()
で閉じることで優先順位を決めることができます。()
を使わなかった場合は、and
とor
の優先度が高く、比較演算子はどれも同じ低い優先度になります。 -
文字列をシングルクォーテーションで閉じることで、そのままの文字列として比較することができます。
'This is a valid string'
-
環境変数名の頭に
$
を付けることで、その変数を比較で使用することができます。$MY_VAR == '/var/tmp' $HOME == '/user/bob'
-
以下の“キーワード”を比較の一部として使用することができます:
houdini_version
現在のHoudiniバージョン(フルバージョンパス)。
houdini_os
OSプラットフォーム('windows', 'linux', 'macos')。
houdini_python
HoudiniのPythonのバージョン('python3.7', 'python3.9')。
houdini_platform_build
houdini_platform_build keyword
は、異なるHoudiniビルドのコンパイルで採用されたコンパイラの特定のバージョンを示します。 このキーワードの書式は、コンパイラ.major.minorの構造に準拠しています。以下のテーブルには、Houdiniでサポートされている各プラットフォームで使用されているコンパイラを載せています。 Houdiniの色々なビルドに関する情報は、Houdiniのサードパーティ製ライブラリのページを参照してください。
プラットフォーム
コンパイラ
Linux
gcc
gcc -v
を使用すると、コンパイラのmajor
とminor
のバージョン番号が分かります。Mac
clang
clang -v
を使用すると、コンパイラのmajor
とminor
のバージョン番号が分かります。Windows
cl
cl.exe
を使用すると、コンパイラのmajor
とminor
のバージョン番号が分かります。 このcl
バージョン番号はMSVC
バージョンやVisual Studio
バージョンやToolset
バージョンとは異なります。 詳細は、Microsoftのドキュメントを参照してください。Note
Houdiniのコンパイルで使用されているコンパイラのバージョンは、
About Houdini
ダイアログ内のPlatform Build
下で確認することができます。 -
エクスプレッション言語は、 文字列値にのみ に対応しています。他のタイプに関しては、新しい識別子で今後対応予定です。
サンプル ¶
"houdini_version == '16.5'" "houdini_python == 'python3.9'" "houdini_version == '16.5' and houdini_os=='linux'" "houdini_version => '16.5' and houdini_version < '17.5'" "houdini_os != 'windows' or houdini_version == '17.5' or houdini_version == '17.5.56'" "(houdini_os != 'macos') or (houdini_version >= '17.4' and houdini_version <= '17.5')" "houdini_os == 'windows' and houdini_version >= '17.5' and $USE_XYZ == 'TRUE'" "houdini_platform_build == 'gcc.11.2'" "houdini_platform_build == 'clang.14.0'" "houdini_platform_build >= 'cl.19.22'"
パッケージのデバッグ ¶
パッケージをデバッグしたり、単にパッケージ情報をリストしたいのであれば、Houdiniを起動する前にHOUDINI_PACKAGE_VERBOSE
環境変数を設定します。
HOUDINI_PACKAGE_VERBOSE
が有効になっていれば、すべてのパッケージがロードされると、Houdiniはパッケージ情報を標準出力デバイスに書き出します。
Note
HOUDINI_PACKAGE_VERBOSE
は、Houdiniの起動で使用するターミナル内またはスクリプト内で設定してください。
パッケージファイル内に直接設定しないでください。
. export HOUDINI_PACKAGE_VERBOSE=1 . hconfig -xa = = = Houdini Package log = = = Loading: C:/Users/bob/houdini19.5/packages/mypackage.json WARNING: Undefined variable $USE_PACKAGE used in expression houdini_version > '19.0.589' and $USE_PACKAGE == 'TRUE' WARNING: mypackage is marked as disabled. Loading: C:/Users/bob/houdini19.5/packages/opencolorio.json Loading: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/apex.json Loading: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/kinefx.json Loading: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/package_dirs.json Processing load once: C:/Users/bob/houdini19.5/packages/opencolorio.json Processing: C:/Users/bob/houdini19.5/packages/opencolorio.json Processing: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/apex.json Processing: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/kinefx.json Processing: C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/package_dirs.json Loading: C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.0.json WARNING: SideFXLabs19.0 is marked as disabled. Loading: C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5.json Processing load once: C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5.json Processing: C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5.json Resolved variables: OCIO : C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5/misc/labs_ocio/aces_config.ocio HOUDINI_PATH : C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5 C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/kinefx C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5/misc/labs_ocio/aces_config.ocio & SIDEFXLABS : C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5 Loading Info: Loaded Packages (5): C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5.json C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/apex.json C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/kinefx.json C:/Users/bob/houdini19.5/packages/opencolorio.json C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/package_dirs.json Disabled Packages (2): C:/Users/bob/houdini19.5/packages/mypackage.json C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.0.json = = = = = = = = = = = = = = = = HFS := 'C:/Users/bob/HOUDIN~3/HOUDIN~1.39/' HOME := 'C:/Users/bob' HOUDINI_DESKTOP_DIR := 'C:/Users/bob/Desktop' HOUDINI_OS := 'Windows' HOUDINI_PACKAGE_VERBOSE := 1 HOUDINI_PATH := 'C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5;C:/Users/bob/HOUDIN~3/HOUDIN~1.39/packages/kinefx; C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5/misc/labs_ocio/aces_config.ocio;&' HOUDINI_TEMP_DIR := 'C:/Users/bob/AppData/Local/Temp/houdini_temp' HOUDINI_USER_PREF_DIR := 'C:/Users/bob/houdini19.5' SHELL := 'C:/PROGRA~1/Git/usr/bin/bash.exe' USER := 'bob'
パッケージ化のテクニック ¶
Houdiniでプラグインをパッケージ化する際に使用頻度の高いテクニックがいくつかあります。
プラグインファイルを統合する簡単な方法 ¶
otls
、python panels
、viewer states
、dso
などのファイルの検索場所をHoudiniに伝えるために、$HOUDINI_PATH
を設定するパッケージファイルとプラグインフォルダを作成します。
プラグインフォルダには、以下のように標準のHoudiniフォルダを含めてください:
$HOUDINI_USER_PREF_DIR/xyzplugin18.5/ dso/ otls/ python_panels/ viewer_states/
パッケージファイル内には、プラグインフォルダの参照をHOUDINI_PATH
に設定します:
$HOUDINI_USER_PREF_DIR/packages/xyzplugin.json { "hpath": "$HOUDINI_USER_PREF_DIR/xyzplugin18.5" }
Note
WindowsのPATH
とは異なり、パッケージファイル内にLinuxのLD_LIBRARY_PATH
(MacのDYLD_LIBRARY_PATH
)を設定しても、パッケージはHoudini起動後にうまく処理されるので、何の効果もありません。
LD_LIBRARY_PATH
は、Houdini起動前に設定されている場合にのみ効果があります。
dlopen()は、Houdini起動後にLD_LIBRARY_PATH
に加えられた変更を評価しません。
上記の手法を用いることでこの問題が解決します。
プラグインのバージョン制御をする方法その1 ¶
指定したHoudiniバージョンのプラグインフォルダで$HOUDINI_PATH
を設定するパッケージを記述することができます。
これは、各エントリーがエクスプレッションを使用して特定のHoudiniバージョンのプラグインフォルダに合わせられるように、配列変数を使って行なうことができます。
$HOUDINI_USER_PREF_DIR/packages/xyzplugin.json { "env": [ { "XYZ": [ { "houdini_version == '18.0'": "$HOUDINI_USER_PREF_DIR/xyzplugin18.0" }, { "houdini_version == '18.5'": "$HOUDINI_USER_PREF_DIR/xyzplugin18.5" } ] } ], "hpath": "$XYZ" }
上記のサンプルでは、Houdini18.0
を起動すると $HOUDINI_USER_PREF_DIR/xyzplugin18.0 、Houdini18.5
を起動すると $HOUDINI_USER_PREF_DIR/xyzplugin18.5 を$HOUDINI_PATH
に設定します。
どれにも該当しなかった場合は、$HOUDINI_PATH
は設定されません。
ただし、デフォルト変数構文を使用すれば、どのHoudiniバージョンにマッチしてもプラグインフォルダが$HOUDINI_PATH
に設定されるようにすることができます。
以下のサンプルでは、18.0
と18.5
以外のHoudiniバージョンに対して $HOUDINI_USER_PREF_DIR/xyzplugin を$HOUDINI_PATH
に設定します。
$HOUDINI_USER_PREF_DIR/packages/xyzplugin.json { "env": [ { "XYZ": [ { "houdini_version == '18.0'": "$HOUDINI_USER_PREF_DIR/xyzplugin18.0" }, { "houdini_version == '18.5'": "$HOUDINI_USER_PREF_DIR/xyzplugin18.5" } ] } ], "hpath": "${XYZ-$HOUDINI_USER_PREF_DIR/xyzplugin}" }
プラグインのバージョン制御をする方法その2 ¶
プラグインのバージョン管理をするもう1つの手法は、複数のパッケージファイルを使用することです。
Houdiniの現行バージョンに合致したパッケージがenable
とマークされ処理されるようになります:
$HOUDINI_USER_PREF_DIR/packages/xyzplugin18.5.json { "env": [ { "XYZ": "$HOUDINI_USER_PREF_DIR/xyzplugin18.5" } ], "hpath": "$XYZ", "enable": "houdini_version == '18.5'" }
$HOUDINI_USER_PREF_DIR/packages/xyzplugin18.0.json { "env": [ { "XYZ": "$HOUDINI_USER_PREF_DIR/xyzplugin18.0" } ], "hpath": "$XYZ", "enable": "houdini_version == '18.0'" }
OPlibrariesファイルを使ってHDAsを読み込む方法 ¶
デフォルトでは、HoudiniはHOUDINI_OTLSCAN_PATH
内のフォルダを走査してHDAファイルを読み込みます。
これは、Operator Type ManagerダイアログがOPlibraries
ファイルを使用してHDAファイルを検索しないように設定されている場合に実行されます。
ただし、ユーザがOPlibraries
オプションを設定することを選択した場合には、必ずプラグインがOPlibraries
ファイルを使用してHDA
ファイルを読み込むようにする必要があります。
1) パッケージフォルダ内にOPlibraries
ファイルを置きます。このファイルには、読み込みたいすべてのHDAファイルを必ずプラグインフォルダを基準とした相対パスでリストする必要があります。
$HOUDINI_USER_PREF_DIR/xyzplugin18.5/OPlibraries otls/OPlibXYZ.hda
2) OPlibraries
ファイルを検索する場所をHoudiniに伝えます。通常では、これは$HOUDINI_PATH
またはHOUDINI_OPLIBRARIES_PATHにプラグインフォルダを設定することで行ないます。
Tips ¶
-
hou.houdiniPath()をコールすることで、HoudiniのPythonシェル内でHoudini Pathの内容とその並びを簡単に表示することができます。
-
env
配列内の前方で環境変数を定義しておけば、その配列内の以降の値でその変数を使用することができます。必ず変数はそれを使用する値の 前 に定義してください。 -
あるパッケージ内で設定された環境変数は、他のパッケージからも参照することができます。
-
パッケージ内で設定された環境変数は、Houdiniプロセスにのみ影響します(例えば、コマンドラインからHoudiniを起動しても、これらの環境変数はそのシェルには影響しません)。
-
サブプロセスからHoudiniを起動すると、そのHoudini親プロセスの環境変数がサブプロセス環境にコピーされます。サブプロセスを起動する前に
HOUDINI_PACKAGE_SKIP=1
を設定することで、Houdini親プロセスのパッケージ環境変数の重複を回避することができます。
プラグインのインストール