2013年3月23日土曜日

callback #preRender / #postRender スクリプトをBackburnerで実行する方法

以前もやってましたが、久しぶりにやってみようとしたら少し戸惑いました。
近年のMaxでは「シーンをレンダリング」ダイアログの下部にスクリプトの登録スロットがあるので、それでもいいかもしれません。

ポイント

preRenderスクリプトはシーンに保存されない
persistent:trueを使うとシーン内にコールバックイベントを保存できます。


まとめ
preRender.msとpostRender.msを用意し、callbacks.addscript filename:を用いてそのスクリプトファイルを登録すれば大丈夫です。これはローカルでもBackburner上でも動きます。
preRender.msとpostRender.msをコールバックとしてシーン内に登録するには、シーンを開いた状態でcallbacksRegister.msにより登録して保存しておきます。

以下の例は、レンダリング開始時(#preRender)にローカルの時間をINI形式でファイルに書き出します。
そしてレンダリング終了時(#postRenderローカルの時間をINI形式でファイルに書き出します。
 



preRender.ms
fn myPreRend = (
   iniFile = "H:\\max_Scripts\\preRender_PostRender\\preRender.ini"
   f = createFile iniFile
   setIniSetting iniFile "preRender" "localTime" (localtime as string)
   close f
)
myPreRend()


postRender.ms
fn myPostRend = (
   iniFile = "H:\\max_Scripts\\preRender_PostRender\\postRender.ini"
   f = createFile iniFile
   setIniSetting iniFile "postRender" "localTime" (localtime as string)
   close f
)
myPostRend()


callbacksRegister.ms
callbacks.removeScripts #preRender id:#myRendAuto
callbacks.removeScripts #postRender id:#myRendAuto


callbacks.addScript #preRender fileName:"H:\\max_Scripts\\preRender_PostRender\\preRenderScript_v001-001.ms" id:#myRendAuto persistent:true
callbacks.addScript #postRender fileName:"H:\\max_Scripts\\preRender_PostRender\\postRenderScript_v001-001.ms" id:#myRendAuto persistent:true


callbacks.show()

となると、Backburnerでいちいち手動で無いとレンダーレポートを保存できないあの面倒な部分、それをpostRenderFrameで行えばレポートを便利に出力できますね!

制作・©:のぼる/N.Lab