イントロ
みなさん、Houdiniをご存知でしょうか。
とりあえずググってみると、世紀の魔術師Harry Houdiniがヒットします。
Potter家の魔術師ではないHarryです。ムキムキですね。
さて、CG業界には、デジタルコンテンツクリエイション(DCC)ツールの一つとして、彼の名前を借りたツールが存在します。
それが、SideFX社が提供するHoudiniというアプリケーションです。
Houdiniが利用された映像作品は以下のリンクから確認できます。
The 2018 Houdini reel is ALIVE! A HUGE thank you to the studios who supplied the work for this reel - and even HUGERER kudos to the talented artists who worked on these amazing shots. We LOVE seeing the work you bring to life with the help of Houdini! https://t.co/sX5WfqrATL pic.twitter.com/UUWRC5FG65
— SideFX (@sidefx) 2018年8月3日
こっちはゲーム系。
New reel! The 2018 Houdini Games Reel highlights some of the amazing #gamedev work our crazy-talented customers create with the help of Houdini https://t.co/pWk06qxk0o
— SideFX (@sidefx) 2018年3月15日
プロシージャルなコンテンツ作成を基本とした、ノードベースでのCG作成が行えます。
Houdini Apprenticeという、まさに「見習い」向けにほぼフル機能を無料で試せますので、興味がある方はぜひダウンロードして触ってみてください。
Houdiniは、Pythonスクリプトや、独自のアセット機能Houdini Digital Asset(HDA)といった機構をもち、それをアーティストやゲーム開発者などに補助機能として提供する事が出来ます。その時に設定するのが、このHoudiniが持つ環境変数の設定です。
今回は、そのHoudiniの環境変数の設定にまつわるお話です。
そもそもなぜ環境変数を設定するか
理由はいくつかあります。
- サードパーティのプラグインインストーラーが、そのプラグイン管理のために独自のパスの先に配置していくため、その場所をHoudiniに知らせる必要がある。
- 社内で同じプラグインのバージョンを同プロジェクト内ユーザーに使ってもらいたいため、ネットワーク上に配置し、それを一律で読みに行くようにしてもらう。
- プラグインのバージョン違いをサクサクっと検証できるように、バージョン区分けのディレクトリに保存しておくため、Houdiniに知らせるそれぞれのバージョンのプラグインのパスを切り替えられるようにしておく。
- コードを編集するための外部エディタを任意のものに指定する。
などです。
環境変数設定がないDCCツールは、こういった設定が柔軟にできず、地味にDCCツールサポートの苦労を強いられます。
全DCCツールはカスタムの環境変数設定に対応してほしいものです…。
環境変数の設定の仕方
環境変数の設定の仕方はいくつかあります。
- houdini.envに書き込む。
- packagesコンフィグファイルを活用する。
- 起動batやshファイルに書き込む。
- ツールランチャーの機能を使って起動時に一緒に設定してもらう。
- 例えば、Pythonの
subprocess.run('houdini', env=envs)
でセットして行く感じです。
- 例えば、Pythonの
などです。
houdini.env
#
# Houdini Environment Settings
#
# The contents of this file are read into the environment
# at startup. They will override any existing entries in
# the environment.
#
# The syntax is one entry per line as follows:
# VAR = VALUE
#
# Values may be quoted
# VAR = "VALUE"
#
# Values may be empty
# VAR =
#
# Example:
#
# HOUDINI_NO_SPLASH = 1
HOUDINI_PATH=C:\tools\houdini\USD\2018.11.10;&
batファイル
@echo off
set HOUDINI_VERSION=17.0.395
set HOUDINI_EXE=C:\Program Files\Side Effects Software\Houdini %HOUDINI_VERSION%\bin\houdinifx.exe
set HOUDINI_PATH=C:\tools\houdini\USD\2018.11.10;&
%HOUDINI_EXE%
まず最初の闇、それはhoudini.env
「プラグインが読めてない!」という問題が起こり、ユーザーからトラブルの対応相談が来ることがあります。その場合、まず疑いに行くといいのがhoudini.env
ファイルです。
このhoudini.envファイル、Windowsだと、
C:\Users\<username>\Documents\houdini<version> (例: C:\Users\takanori\Documents\houdini17.0)
の直下に保存されています。
ここに環境変数を登録していくことによって、Houdiniが起動時にスクリプトやHDAファイルを認識できるようにしてくれます。
しかしながら、このファイル、人も触ることもあれば、プラグインのインストーラーが勝手に触ることもあり闇を生みがちです。
よくあるのが、
一つのプラグインをインストールしておいて、
二個目のプラグインをインストーラーを使ってインストールすると、
一個目のプラグインが動作しなくなることがあります。
これは二個目のインストーラーが以下のように書き込み、前の環境変数を上書いてしまうためです。
# 一個目 <- 二個目に上書きされてしまうパス。「記述されてるのに、読み込めてない」、みたいなことになる。
HOUDINI_PATH=C:\tools\Houdini\GameDevTool\1.72;&
# 二個目 <- こっちが最終的な設定として認識される
HOUIDNI_PATH=C:\Program Data\Redshift\Plugin\Houdini 17.0.532;&
ちなみに、bat起動などで環境変数をあらかじめ設定したうえでHoudiniを起動しようとしても、Houdiniの環境変数設定の順序は一番最後にhoudini.envのものを読み込んでくるため、頑張ってbat起動時に環境変数を設定しても、houdini.envでセットされた環境変数が上書いてきて邪魔する事があります。
一番の解決方法としては、houdini.envには書かずに、社内でこういった環境変数を一括管理し、いっぺんにプロジェクトデフォルトの環境変数をセットしてくれるDCCツールランチャーを開発・購入して、それを経由してHoudiniを立ち上げる事です。
そうでない場合は、プロジェクト固有の起動Bat等を作っておく事が良いでしょう。
環境変数の呪文
Houdiniの環境変数は17.0.395のバージョンの時点でざっと311コくらいです。
確認方法は、HoudiniのCommand Line Toolsを使い、hconfig -a >> houdini_envs.txt
とでも出してみると分かります。
その中でも、チームで共有するのによく使うのは、
-
HOUDINI_PATH
- Houdiniが定めるフォルダ階層に従って適切なディレクトリ・ファイルを配置していくことで、Houdiniがそれらを起動時に自動認識します。
-
HOUDINI_MENU_PATH
- Houdiniのメインメニューを定めるファイルが配置されているパスです。
-
HOUDINI_TOOLBAR_PATH
- シェルフツールという、Houdiniの便利スクリプトを並べたカスタムのツールバーを設定したファイルを見に行くパスです。
-
HOUDINI_PYTHON_PANEL_PATH
- Pythonパネルという、Houdiniに組み込めるPySide/PySide2ベースのカスタムGUIパネルの設定ファイルを見に行くパスです。
-
HOUDINI_OTLSCAN_PATH
- Houdini Digital Assetを配置するパスです。
-
HOUDINI_DSO_PATH
- ライブラリ等のビルドされたバイナリファイル等を配置するパスです。
などで、他に個人の自由で使用するものとしては、
-
EDITOR
- 「外部のコードエディターで編集する」機能を使う際に、これにセットされているexe等が実行されます。
-
HOUDINI_EXTERNAL_HELP_BROWSER
- Houdiniからヘルプを開く時のデフォルトブラウザを指定します。
-
HOUDINI_DSO_ERROR
- DSO関連のエラーをどれだけ表示するかを指定します。
などがあります。
また、ここには載ってないですが、PythonではおなじみのPYTHONPATH環境変数もHoudiniにPythonモジュールを知らせるものとしてよく使います。
HOUDINI_PATH以外のパスを設定するということ
基本的にはHOUDINI_PATHがほぼすべてを握っています。
マスター級とでも認識してもらえればいいです。
このHOUDINI_PATHに設定されていると、例えば以下のような階層の場合、
- root(HOUDINI_PATHに設定されているところ)
- config(フォルダ)
- otls(フォルダ)
- python_panels(フォルダ)
- sciprts(フォルダ)
これらの決まったディレクトリや、決まったファイルは、Houdiniが起動時に自動で認識してくれます。
では、すべて HOUDIN_PATH で設定すればいいのか?と思うと思いますが、必ずしもそうとも限りません。
スクリプトやHoudini Digital Assetを開発して検証する際には、問題範囲を限りなく絞って開発したいため、そのディレクトリだけ読んでほしいケースがままあります。
また、そもそも全部が全部 HOUDINI_PATH で設定していると、総パスがとんでもない長さになるので、何を読んでいるのか追うのが大変になっていきます。
基本的には、インハウスツールの開発・検証・運用のフルセットでのスピードを重視したい場合、最初からこのHOUDINI_PATHではない固有パスを設定するのが良いです。
開いているシーンで、どういったパスが設定してあるかを確かめる
Houdiniのシーンを開いている状態で、そのシーンが現在どの環境変数をカスタムで持っているかを確認する事が出来ます。
Main Menu -> Windows -> ShellでShellウィンドウを開き、hconfig
コマンドを利用します。
それぞれの設定呪文
HOUDINI_PATH
以下、基本的にはbatとかへの書き方は同じなので、houdini.envへの書き方を前提にサンプルを提示
HOUDINI_PATHを設定する場合にはこうやります。
HOUDINI_PATH=C:\tools\houdini\USD\2018.11.10;&
そう。 &
というものが要るのです。
これがないと、どうなるかというと…
なんと、立ち上がりすらせずにHoudiniがクラッシュします。恐怖ですね。
環境によっては立ち上がることもありますが、UIやシェルフツールなどいろんなものが吹っ飛ぶので、結局まともに使えません。
忘れずに &
を追記しましよう。
HOUDINI_MENU_PATHの場合
Houdiniにはメインメニューがこんな感じになっています。
Houdiniのメインメニューにカスタムの、例えば、チームの名前を入れたチームのためのツールを追加していきたい場合、HOUDINI_MENU_PATHに設定されたファイルMainMenuCommon.xml
を読みに行きます。
その場合はこうやります。
HOUDINI_MENU_PATH=C:\tools\houdini\team\ta;@
!!?
ここでは、@
が必要になってくるのです。
これがないと…、エラー警告を出しながら、もともとのメニューが吹っ飛びます。
HOUDINI_TOOLBAR_PATHの場合
ここにカスタムのツールバーを追加したい場合は、HOUDINI_TOOLBAR_PATHが必要になります。
その場合こうやります。
HOUDINI_TOOLBAR_PATH=C:\tools\houdini\Bento\v5.0.2\toolbar;@/^
!?
なんと記号が増えました。
@/^
が要ります。呪文味あります。
これがないと、一応該当場所にエラーメッセージは出ますが、コンソールエラーは出さずに、シェルフツールがふっとびます。
HOUDINI_DSO_PATHの場合
dsoというのは、プラグインをビルドしたバイナリファイルの行き場所です。
対象ディレクトリにはdllファイルやisoファイルが配置されます。
HOUDINI_DSO_PATH=C:\tools\houdini\USD\2018.11.10\dso;@/dso_^;@/dso
!!!??
今度は、 @/dso_^;@/dso
が必要になります。
短いはずなのに、奇妙さを覚えさせる呪文です。
これがないと、Houdiniがインストール時に持っているデフォルトのバイナリファイルが読めなくなります。
様々なノードの機能がdllファイルに格納されてたりするので、かなりの機能が使えなくなってしまいます。
どうやって調べるか
さて、こういうのを闇雲に追っていくのはさすがに骨が折れます。
こういった環境変数、どうやって知ればいいか。
方法があります。
Command Line Toolsという名の魔導書へ呪文を唱えるのです。
hconfig -ap
この呪文を使うと以下のように、それぞれの環境変数に対する解説と、デフォルトで入れるべき環境変数が帰ってくるので、それを読み解きつつ、環境変数をセットする場合に忘れずにセットします。
最後に
Houdiniの用意する環境変数がたくさんあります。正直覚えられないです。
なので、補助ツールや自動化ツールの追加など、カスタム対応を行おうとして環境変数の罠を踏んでしまったら、**魔導書(Command Line Tools)**でもって、hconfig -ap
コマンドで対処しましょう。