Mantra毎にオブジェクトのパラメーターを変える。


篠島です。

前回はMantraのObjectタブの所でどのオブジェクトをレンダリングするかを指定しましたが、今回はPre-Render Scriptを使ってMantra毎にオブジェクトのパラメーターなどの設定を個別に変更する方法を紹介します。

今回のサンプルファイルです。
RenderScrip.zip

MantraのScriptタブの所に、スクリプトを書く場所があります。数行のスクリプトならそのまま直に書き込みますが、長くなるようならファイルを別に用意するといいと思います。

prerender

スクリプトを書く所で Alt + E を押すと エディタが出てくるので、画面に収まりきらないようなスクリプトや複数行にわたるスクリプトの場合はこのエディタを使います。

editScript

下のように opparm というHScriptを使うことで特定のノードのパラメーターを設定することができます。下の場合は /obj/pointlight1 のライトの shadow_type のパラメータを 0、 すわなち No Shadows にしています。

opparm /obj/pointlight1 shadow_type 0

 

パラメーターの名前はマウスを上にのせる事で分かります。設定する値ですが、ドロップダウンメニューの場合は 0 から始まる番号が付いているので、No Shadows なら0、Ray-Traced Shadows なら 1 という様になります。
light

 

Pre-Render Script を使う上で気をつけなければならないのが、スクリプトを使ってパラメーターをセットしてしまうと、それ以降ずっとそのままの値になってしまっているので、別のMantraでレンダリングをするときにもそのままの設定になってしまいます。なので Post-Render Script で設定を元に戻しておくと安全です。
opparm /obj/pointlight1 shadow_type 1  をPost-Render Scriptに入れることで設定をRay-Traced Shadows に戻しています。
postscript

 

他にもバリエーションとして スクリプトによってオブジェクトのスケールを変えたり、別のティーポットをサッカーボールに変えたりもできます。

 

scriptVariation

 

パラメーターの設定は opparm でしたが、opset によってノードのFlagを変えることができます。例えばMantra毎にオブジェクト内のRender Flagを付け替える事などができます。
opset

 

opset コマンドに -r のフラッグをつけると、Render Flagになり、-d のフラッグを付けると Display Flagになります。そして後にFlagを付けたいオブジェクトを指定するだけです。
opset -r on /obj/Geo/box1

 

Pre-Rener Script によってRender Flagを変えてレンダリングしたのが下です。Post-Render ScriptですぐにRender Flagを元に戻しているのでネットワークビューでフラッグが変わったのを確認することはできませんが、きちんとBoxがレンダリングされているのが分かります。
renderflag

 

もしスクリプトで外部ファイルを指定したければ、適当なファイルを作りスクリプトを書くだけです。ファイルの拡張子は何でもOKだと思います。自分の場合は txt でも問題なく動きました。
scriptFile