2022-04-19

setting up multiple 3rd party renderers

Arnold, Redshift, RenderMan などをインストールすると、デフォルトの設定は他のサードパーティレンダラーを考慮しない設定になっていることが多く、そのままでは同時に複数のレンダラーを使うことが出来ない。ここでは、これらをまとめて認識させる方法を紹介する。

使用したビルド:

  • Houdini 19.0.561 (どのビルドでもおそらく同じ)

houdini.env

2022年4月時点で、上記の各レンダラーは、必要なパス設定を houdini.env に書き込んでいる。例えば、Arnold、それから Redshift という順番にインストールすると、houdini.env には以下のような記述が追加される。

# htoa config start
PATH = "$PATH;C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3/scripts/bin"
HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3;&"
# htoa config end

PATH = "C:/ProgramData/Redshift/bin;$PATH"
HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;&"

この設定を元に Houdini を起動すると、Redshift は使えるが、Arnold は使えない。

以下のように Redshift の設定の各分の先頭に # を挿入すると、Arnold が使えるようになる。

# PATH = "C:/ProgramData/Redshift/bin;$PATH"
# HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;&"

が、これでは Redshift が使えず、レンダラー切り替えるたびに Houdini を終了して houdini.env を書き換え、Houdini を再起動するのは、非常に効率が悪い。そこで、RenderMan も含め、一度に全部使えるようにしたい。そのためには、書き換える必要があるが、注意点は二つ。

デフォルトパスの記述

それぞれのレンダラーは PATHHOUDINI_PATH の環境変数で定義されている。

Arnold の場合、以下の二行。

PATH = "$PATH;C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3/scripts/bin"
HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3;&"

Redshift の場合、以下の二行。

PATH = "C:/ProgramData/Redshift/bin;$PATH"
HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;&"

RenderMan の場合、もう少し多い。

RMANTREE = "C:/Program Files/Pixar/Pixar/RenderManProServer-24.3-py3"
RFHTREE = "C:/Program Files/Pixar/RenderManForHoudini-24.3-py3"
RMAN_PROCEDURALPATH = "$RFHTREE/19.0.561/openvdb;&"
HOUDINI_PATH = "$RFHTREE/19.0.561;&"

これら3つの HOUDINI_PATH が houdini.env にある状態で、hconfig -a | grep HOUDINI_PATH (ないし hconfig -p で結果を視認) すると、

HOUDINI_PATH := 'C:/Program Files/Pixar/RenderManForHoudini-24.3-py3/19.0.561;&'
となり、Arnold と Redshift が認識されない上に、& も正しく展開されない。

まず、

HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3;&"
HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;&"
HOUDINI_PATH = "$RFHTREE/19.0.561;&"
の三行で、& が三度出現しているが、これが問題で、houdini.env の中で、各環境変数に対し、& が使えるのは一度だけ。よって、これを下記のいずれかの方法で書き換える必要がある。

a. 一行にまとめる

もっとも手っ取り早いのは、以下のように一行にまとめてしまうこと。

HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3;C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;$RFHTREE/19.0.561;&"

パス3つをセミコロン(;)で区切り (Linux/Mac の場合 ':' コロン)、最後に & をつけて全体を '"' (double quote) で括る。 これだと後で修正が面倒と感じるかもしれない。

b. $HOUDINI_PATH を使う

3行に分けて、$HOUDINI_PATH で事前の設定を参照することもできる。

HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3;&"
HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561;$HOUDINI_PATH"
HOUDINI_PATH = "$RFHTREE/19.0.561;$HOUDINI_PATH"

この場合、3行に分けられているが、2行目以降が前の行に一つづつ追加している。このままであれば問題無いが、他の定義が間にあったりすると場合によっては肥大する可能性が出る。

c. 別々に定義する

3行を別の変数で定義してから最後に一つにまとめることも可能。

AN_HOUDINI_PATH = "C:/Users/ktaki/htoa/htoa-6.1.1.0_r8825678_houdini-19.0.561.py3/htoa-6.1.1.0_r8825678_houdini-${HOUDINI_VERSION}.py3"
RS_HOUDINI_PATH = "C:/ProgramData/Redshift/Plugins/Houdini/19.0.561"
RM_HOUDINI_PATH = "$RFHTREE/19.0.561"
HOUDINI_PATH = "${AN_HOUDINI_PATH};${RM_HOUDINI_PATH};${RS_HOUDINI_PATH};&"

AN_HOUDINI_PATHRS_HOUDINI_PATHRM_HOUDINI_PATH は事前に定義されているも出ないので、他とかち合わない限り、どんな名前でも良い。

${AN_HOUDINI_PATH} のように '{' と '}' で囲っているのは、環境変数名の始めと終わりを明確にするため。詳細はこちら

a, b, c いずれの方法でもうまくいくので自分の他のニーズに合わせて方法を選択するのが良い。ただし、最も望まれるのは、各レンダラーが SideFXLabs 同様パッケージ化することである。

リンク

0 件のコメント:

コメントを投稿