houdini environment variables

Houdini 環境変数設定

2019-05-10: 復活しました。@suzukiMY さん有難うございました!


Houdini は元々 Unix (SGI Irix) 上で書かれていた。現在でも、特に映画製作など大規模制作環境では Linux が主流。 コマンドラインツールや設定を効率良く行うためには、環境変数を使用する。

Linux 上では環境変数の設定とシェルによる操作は同一のシェルで行えるが、Windows で環境変数を元に処理を行おうとすると Cygwin がどうしても必須となる。ここでは、Houdini の環境変数と Cygwin 使用時のティップを紹介。

  1. Cygwin
  2. macOS
  3. システム環境変数 HOME
  4. houdini_setup
  5. hconfig
  6. 環境変数 HOUDINI_PATH
  7. 環境変数 HFS
  8. 環境変数 HOUDINI_USER_PREF_DIR
  9. houdini.env
  10. 環境変数 HOUDINI_UISCALE
  11. Aliases and Variables
  12. 環境変数 HIP
  13. 環境変数 HSITE
  14. 環境変数 JOB
  15. 環境変数 HOUDINI_OTLSCAN_PATH
  16. 環境変数 HOUDINI_OCL_VENDOR
  17. 環境変数 HOUDINI_SPLASH_FILE
  18. システム環境変数 TEMP
  19. システム環境変数 TZ
  20. 環境変数 OCIO
  21. 環境変数 HOUDINI_NVIDIA_OPTIX_DSO_PATH
  22. Hscript コマンド setenv
  23. その他

ここでの Windows は Windows 7。Cygwin は 1.7.34。
Houdini のビルドは Houdini 16.0.727

Cygwin

ここは Cygwin を説明するところではないので 3DCG ソフト (Houdini および Maya) を使う上での個人的な所見を簡潔に述べるとすれば、

  • インストール時の Root Directory は、デフォルトの C:\cygwin ではなく、C:\ 直下が良い(と思う)。C: 直下にインストールすることで、他のディレクトリに行く時に /cygdrive/c/... とする必要がなくなる。
      こういう風に設定すると警告が出るが、約15年使っていて私の軽い使い方では問題になったことは無い。
      なお、本家FAQにはこうある。
  • ftp は Windows のを使うとプロンプトが表示されないので Cygwin のを入れる。
  • ping は Cygwin のを一般ユーザで使おうすると拒否される。Windows のを使う。
  • どこからコピペしたのか不明だが、~/.bashrc などで
    alias which='type -a'
    が設定されていると、Houdini のコマンドラインツールを C ドライブ以外で起動すると様々なエラーを引き起こす。コメントアウトしておくと問題ない。

macOS

Mac OS では、Houdini アプリケーションの起動ファイルを除く各種ファイルは /Applications/Houdini <バージョン> 以下に無く、環境設定ファイルも Documents 以下にできない。これは Maya も同様。

  • Houdini アプリケーションの各種ファイル ($HFS) は、 /Library/Frameworks/Houdini.framework/Versions/16.0.727/Resources/houdini/config
  • ユーザ環境ファイル ($HOUDINI_USER_PREF_DIR) は
    /Users/<ユーザ名>/Library/Preferences/houdini/16.0 に出来る。
  • Mac のファインダで $TEMP に行くには、Go To Folder というメニュー (Cmd+Shift+G) で表示されるダイアログに /tmp/houdini_temp/ と入力することで可能。

システム環境変数 HOME

Houdini のコマンドラインツールや設定には、$HOME を参照するものもある。よって HOME を明示的に定義しておくことが望ましい。
Cygwin でのデフォルトのホームディレクトリは、/home/<username>
Windows で作業する場合の主なディレクトリは、C:\Users\<username>\Documents\

個人的な趣味や好みもあると思うが、HOME は自分の C:\Users\<username> に Windows のシステム設定から設定する。これにより、houdinix.y/ などの環境設定ディレクトリは、My Documents 以下ではなく、一つ上に出来る。この設定の後、My Documents 以下の houdini16.0 ディレクトリの中で設定を変更しても Houdini に変更は反映されない。

なぜこうするのかと訊かれても特に強い理由は無いが、しいて言えば

  • My Documents と Desktop の間の行き来が面倒。一つ上からだと楽。
  • .login, .bash_profile などが My Documents にあるのはちょっと変。
  • Linux と Windows (Cygwin) で差異を少なくしたい。
というところか。

Linux の場合、HOME は 一意に決まるので問題はない。

houdini_setup

HOME を上記の通りに設定し、Cygwin シェルを起動すれば、ホームディレクトリは /Users/<username> となっているはず。使用する Houdini のビルドがインストールされているディレクトリに行き、そのビルドの環境をソースする。

$ cd /Program\ Files/Side\ Effects\ Software/Houdini\ 16.0.727
$ source houdini_setup
The Houdini 16.0.727 environment has been initialized.
これで、このビルドのコマンドラインツールがパスに追加され使えるようになる。よって、
$ houdini 
とすれば、Houdini が起動する。
Cygwin はデフォルト bash なので、source houdini_setup_bash としても結果は同じ。

hconfig

hconfig は Houdini が使用する環境変数を設定または表示するためのツール。上記の houdini_setup をソースすれば使えるようになる。

$ hconfig
HFS                         := '/PROGRA~1/SIDEEF~1/HOUDIN~1.727'
HOME                        := 'C:/Users/ktaki'
HOUDINI_DESKTOP_DIR         := 'C:/Users/ktaki/Desktop'
HOUDINI_OS                  := 'Windows'
HOUDINI_TEMP_DIR            := 'C:/tmp'
HOUDINI_USER_PREF_DIR       := 'C:/Users/ktaki/houdini16.0'
SHELL                       := '/bin/bash'
USER                        := 'ktaki'
$ hconfig -a
とすれば、Houdini が使用可能なすべての環境変数 (約270) が表示される。これらは、HOME のように別途定義しない限り、システムなり Cygwin なりに設定された環境変数ではない。あくまで Houdini が認識する変数。

上記で特に重要なのは、

  • HFS: 使用しているビルドのインストール先。
  • HOME: ホームディレクトリ、上記の通り。
  • HOUDINI_USER_PREF_DIR: 個人環境 (プリファレンス、シェルフ設定など) が保存されるディレクトリ。
ユーザが変更することが考慮されていない環境変数など、表示されない環境変数もある 。
例: HH = $HFS/houdini/

$ hconfig -h
で、ヘルプが表示される。

$ hconfig -p
とすれば、パス関係の変数のみ表示される。

$ hconfig -ap
とすれば、パス関係の各変数の詳細情報が表示される。

$ hconfig -H
で、各環境変数の詳細なヘルプが表示される。

    $ hconfig -H HOUDINI_PATH
    とすると、
    HOUDINI_PATH
        The path of directories where Houdini looks for configuration
        files.
    
    というように、各環境変数のヘルプが表示される。

環境変数 HOUDINI_PATH

Houdini が環境設定を見に行くパス。通常は明示的に指定されていないが、Houdini は以下の順に設定を見に行く。

        1) "$HIP"
        2) "$HOUDINI_USER_PREF_DIR"
        3) "$HSITE/houdinix.y"
        4) "$HFS/houdini"
        5) "$HFS/bin"
それぞれで、hconfig -ap で確認できるサブディレクトリをさらに参照する。

環境変数 HFS

使っている Houdini のインストールディレクトリ。例えば、Windows 上で Houdini 16.0.727 を使っている場合には、$HFS は、C:\Program Files\Side Effects Software\Houdini 16.0.727\を示す。MacOS の場合はこちら

環境変数 HOUDINI_USER_PREF_DIR

Houdini の個人環境の保存先。Windows で HOME が明示的に指定されていない場合、My Documents 以下に houdini16.0 という形で作られる。環境変数 HOME を指定した場合、$HOME/houdini16.0 といった形で作られる。別途指定することも可能。

デジタルアセットやスクリプトを保存するのもこのディレクトリ以下。

  • デジタルアセット: otls というディレクトリを作ってその中に格納。
  • スクリプト: scripts というディレクトリを作ってその中に格納。
MacOS の場合はこちら

例えば、D:\Houdini\ 以下の

  • houdini16.5
  • houdini17.0
を起動するバージョンにあわせて切り替えたい場合、
HOUDINI_USER_PREF_DIR=D:\Houdini\houdini__HVER__
と指定する。HVER の前後にはそれぞれアンダースコア ('_') が二つ必要。詳しくはこちら (インディゾーンHoudini情報日本語ブログ)。

houdini.env

Houdini 専用の環境変数を定義するためのファイル。$HOUDINI_USER_PREF_DIR にある。このファイルで環境変数を指定する場合、

VAR = VALUE
または
VAR = "VALUE"
という風に指定する。
例: HOUDINI_OCL_VENDOR = "NVIDIA Corporation"

他の注意点として、

  • このファイルは source houdini_setup を最初に実行した時に作成される。
  • パスなど文字列を定義する場合には、" (二重引用符) で括る。
  • 複数のパスを指定する場合、パスの間にスペースは入れない。
  • Windows であっても、ディレクトリの切れ目は '/' を使う。
    • Windows のコントロールパネルのシステムから環境変数を設定する場合、'/' を使うことも '\' を使うことも可能。
  • 共用環境を構築する場合、Windows 上では、可能な限り、UNCパスで書くことが望ましい。
    • 例えば w:\share の代わりに //dell-m4700/share/share など
    • ラップトップなど、オフラインになった時には UNC で記述されたパスは届かないことがある。よって、オフラインになる可能性がある環境では UNC パス を使用しないほうが良い(?)。
  • houdini.env を保存する場合には、"UTF-8 without Signature" (Byte order mark=BOM なし) で保存する。BOM があると、hconfig 実行時など、警告が出る。

HOUDINI_UISCALE

環境変数 HOUDINI_UISCALE を使うことで、UI のスケールを変更可能。詳しくはこちら

Aliases and Variables

Edit->Aliases and Variables を実行するとウィンドウが表示され、各種エイリアスおよび一部の環境変数をリストで見ることが可能。環境変数は Variables タブに表示されるが、ここに表示されるものは、Houdini 起動中に動的に変更できるもののみ。HFS などは変更できないので表示されない。

環境変数: HIP

環境変数 $HIP は、

  1. コマンドラインで Houdini を起動した時の現在のディレクトリ
  2. 開いたシーンファイルのある元のディレクトリ
  3. またはシーンファイルを最後に保存したディレクトリ
動的に指定している。よって、上記 Alias and Variables ウィンドウで変更が可能だが、houdini.env 等で指定することはあまり意味が無い。

$HIP を元に以下のファイルの格納位置がデフォルトでよく定義される。

  • レンダリング画像ファイル ($HIP/render/ 以下)
  • シミュレーションキャッシュファイル ($HIP/geo/ 以下)
  • 群衆キャッシュ・設定ファイル ($HIP/crowd/ 以下)

Houdini をデスクトップアイコンから (ファイル名を指定することなしに) 起動すると、環境変数 HIP$HOME (定義されている場合) または My Documents になる。
この状態で .hip ファイルをデフォルトディレクトリ以外から開くと、HIP の指定先が変わるのは、.hip ファイルが開いた後。

よって、デジタルアセットやスクリプトの格納先を $HIP に関連付けるには、

  1. Houdini をコマンドラインで、.hip ファイルを引数として指定して起動
  2. 同じディレクトリにあるファイルを開いた後に開く
のいずれかを行う必要がある。Windows では、Cygwin などを使わないと非現実的。

    $HIP 注意点 (Windows)

    Windows で Houdini をデスクトップアイコンまたは Start メニューから起動した場合、起動直後の $HIP は C:\Users\<ユーザ名> に設定されている。この状態で、Geometry ノード内の file ノードで例えばデスクトップにある aaa.obj を読んだ場合、aaa.obj までのパスは $HIP/Desktop/aaa.obj となる。この状態で、File->Save として、シーンを C:\Users\<ユーザ名>\My Documents\HoudiniFiles\test.hip などとして保存した場合、保存後の $HIP は、C:\Users\<ユーザ名>\My Documents\HoudiniFiles となる。このあとで、test.hip を開くと、HoudiniFiles\以下に Desktop\aaa.obj が無いので、エラーになる。これを回避するには、

    1. file ノードに aaa.obj を読み込む前にシーンファイルを保存する。
    2. $HOME を定義しておく。こうすると $HIP の代りに $HOME が使われ、この問題が起きない。

    変数: HIPFILE

    現在のシーンファイル名を絶対パスで指している。例: C:/Users/ktaki/untitled.hip

    変数: HIPNAME

    現在のシーンファイル名から拡張子 ".hip" を取り除いたものを指している。例えば、HIPFILEが C:/Users/ktaki/untitled.hip の場合、HIPNAME は untitled となる。

    変数: OS

    この変数が指定されている現在のノード名を取得するための変数。Render ROP で その ROP 名を書き出すファイル名に含める際に多用される。

    変数によるファイル名指定の詳細はこちら

    変数: _HIP_SAVEVERSION

    .hip ファイルを読み込んだ際に、そのファイルがどのバージョンの Houdini で書かれたかを知ることが出来る。Edit -> Aliases and Variables > Variables にも表示されるし、Hscript Textport で

    echo $_HIP_SAVEVERSION
    15.0.313
    とすることも可能。

環境変数 HSITE

個人単位での設定ではなく、チーム全体で共通の環境設定をするためには、環境変数 HSITE を使用する。HSITE を使うことで、アセット、スクリプト、シェルフツールの共通化が可能。つまり、個人環境 ($HOUDINI_USER_PREF_DIR) で行なっている環境設定を共有ディレクトリで行うことが可能になる。この場合、$HSITE で指定するディレクトリ以下に、バージョンごとのhoudinix.y (例: houdini16.0) というディレクトリが必須。この houdinix.y がなければ設定は無視される。

HSITE は、houdini.env でも、システム環境変数としても設定可能。例えば、Windows 上で C:\share というディレクトリを w: として共有し、その下の HoudiniFiles というディレクトリを HSITE にしたい場合、

HSITE = W:/HoudiniFiles
または、
HSITE = //dell-m4700/share/HoudiniFiles
とする(dell-m4700 はホスト名で、share は共有ディレクトリ)。

環境変数: JOB

個人単位での設定ではなく、プロジェクト単位で、またはショット単位で共通の環境設定をするためには、環境変数 JOB を使用する。Houdini 15.0 以降、File->New Project..., File->Set Project... とすると、$JOB を定義・再定義していることになる。

例えば $HSITE 以下の projects ディレクトリを JOB にしたい場合、
JOB = %HSITE%/projects
または、
JOB = //dell-m4700/HoudiniFiles/projects 
とする(dell-m4700 はホスト名で、HoudiniFiles は共有ディレクトリ)。

$JOB の値は .hip の中に記述されている場合があるので注意が必要。
現在の $JOB の値は、Hscript の job コマンドで確認可能。
シーンファイルに内包された $JOB 値に関わらず、$JOB を一定にしたい場合には、456.py などで、値を設定する。

import os
hou.allowEnvironmentToOverwriteVariable("JOB", True)
os.environ["JOB"] = "//dell-m4700/share/HoudiniFiles/projects"

環境変数 HOUDINI_OTLSCAN_PATH

任意の共有空間に Houdini デジタルアセット (HDA) を配置し、自動的に HDA が読み込まれるようにするには、環境変数 HOUDINI_OTLSCAN_PATH を使う。例えば、上記の HSITE 以下に W:/share/otls/ を配置して使用バージョンに無関係に使うアセットファイルを共有したい場合、 環境変数は以下のように定義する。

HOUDINI_OTLSCAN_PATH = "W:/HoudiniFiles/otls;@/otls"
または
HOUDINI_OTLSCAN_PATH = "%HSITE%/otls;@/otls"
@/otls がデフォルトのスキャンパスを定義し、それにW:/HoudiniFiles/otls が追加された形となる。
HOUDINI_OTL_PATH という環境変数もあるが、これは古いバージョン用で、現行の Houdiniでは使わない。

環境変数 HOUDINI_OCL_VENDOR

この環境変数は、ラップトップなど、1台のPCに複数のGPUが搭載されている時に、どちらを使うかを指定するのに使用する。

HOUDINI_OCL_VENDOR = "NVIDIA Corporation"
上記の場合、NVIDIA と Corporation の間に半角スペースが必要。

環境変数 HOUDINI_SPLASH_FILE

この環境変数を houdini.env などで設定すると、Houdini 起動時に表示される画像のカスタマイズが可能になる。詳しくはこちら

    環境変数 HOUDINI_SPLASH_MESSAGE

    HOUDINI_SPLASH_MESSAGE を使うことで、指定した文字列を起動画面左下に表示することが可能。詳しくはこちら

    環境変数 HOUDINI_NO_SPLASH

    この環境変数を houdini.env などで

    HOUDINI_NO_SPLASH = 1
    とすると、起動画面が表示されなくなる。

システム環境変数 TEMP

システム環境変数 TEMP は一時ファイルが作成されるディレクトリ。Windows のエクスプローラ (Internet Explorer ではない) で、%TEMP% とアドレスバーに入力すれば到達できる。 Mac の場合は、こちら

    なお、Houdini 16 より、Houdini 内での $TEMP は、システムで定義された $TEMP 以下の houdini_temp/ になった (これが $HOUDINI_TEMP_DIR)。

システム環境変数 TZ

システム環境変数 TZ はタイムゾーンを設定する環境変数。Cygwin は、(最近?) tzset コマンドからWindowsの設定を読んで、"America/New_York" or "Asia/Japan" などと指定するようになった。

$ echo $TZ
Asia/Japan
などと、地域名と都市名で定義されている場合、Render View の左上に表示される 各レンダリングの開始時間が GMT (グリニッジ標準時間) で表示されるようになる ^^;。 これを回避するには、
export TZ=JST-9
と古い設定方法で行うか、
unset TZ
と定義を外すかのどちらか。TZ を unset しても、Windows 上で設定されている時間がそのまま保たれる。その場合、RenderView の時間表示はWindows 時間を使う。
ちなみに アメリカ東海岸の設定は EST5EDT、西海岸の場合 PST8PDT

環境変数 OCIO

環境変数 OCIOOpenColorIO の設定ファイルを指定する環境変数。

$ export OCIO = <ファイルまでのパス>/ocio_config.ocio
などとすると、 Mplay の Color Display 設定に、指定したファイル内で displays 以下に定義されている名前が表示される。

環境変数 HOUDINI_NVIDIA_OPTIX_DSO_PATH

環境変数 HOUDINI_NVIDIA_OPTIX_DSO_PATH は NVIDIA OptiX Denoiser を使用する際のパスを設定する。詳しくはこちら

Hscript コマンド setenv

Hscript コマンド setenv を引数なしで Hscript Textport で実行すると、現在のシーンに設定されている 変数が表示される。


Houdini FX Version 16.0.534 (Compiled on Mar  1 2017)
/ -> setenv
F       = 1
FF      = 1
T       = 0
FPS     = 24
NFRAMES = 120
TEND    = 4.95833
TLENGTH = 4.95833
TSTART  = 0
FSTART  = 1
FEND    = 120
RFSTART = 1
RFEND   = 120
UNITLENGTH      = 1
UNITMASS        = 1
ACTIVETAKE      = Main
E       = 2.7182818284590452354
EYE     = stereo
HIP     = D:/SideFX/HoudiniFiles/projects/_test/h16
HIPFILE = D:/SideFX/HoudiniFiles/projects/_test/h16/camera_switcher3.hip
HIPNAME = camera_switcher3
JOB     = D:/SideFX/HoudiniFiles/projects
PI      = 3.1415926535897932384
POSE    = C:/Users/ktaki/houdini16.0/poselib
_HIP_SAVEPLATFORM       = windows-x86_64-cl19
_HIP_SAVETIME   = Thu Mar  2 09:18:12 2017
_HIP_SAVEVERSION        = 16.0.534
_HIP_SHELFTOOLCOUNT     = 10
status  = 0
/ -> 
このうち、_HIP_SAVEPLATFORM_HIP_SAVEVERSION で、特に誰か他の人からもらったファイルが書かれたプラットフォームとバージョンと知ることが出来る。

その他

以下、変数および環境変数のドキュメント


最終更新: 2019-09-10 (2018-04-13 のファイルを復旧および加筆)

0 件のコメント:

コメントを投稿