imaging: 2008年7月アーカイブ
After Effectsのコマンドラインインターフェース・aerender.exe
を Combustion や 3ds max
等のAutodesk製品で使われているネットワークレンダリングマネージャ・Backburnerから利用するテスト。オープンダイアログから指定したAEプロジェクトに含まれる全ての有効なレンダリングキューが処理される、というだけの単純なVBスクリプトです。試してみたい方は下記のスクリプトをテキストエディタ等にコピペして *.vbs
って拡張子で保存したものをダブルクリックして実行してください。
レンダリングマシンを指定したい人は -group Global Group
とか追加すると吉。ちなみにジョブ名が決め打ち(ファイル名+秒数)なのはBackburnerが同じ名前のジョブ名を受け付けない仕様故の苦肉の策。いやまあ面倒くさがらずに「ジョブ一覧を取得→入力されたジョブ名と比較→重複していなければ登録」とかやればいいんですが、如何せん面倒(ry
Dim strRun
Dim arrPath
Set objDialog = CreateObject("UserAccounts.CommonDialog")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objDialog.Filter = "Adobe After Effects プロジェクト (*.aep) | *.aep"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
Dim i
Dim strPath
Dim strFile
strPath = objDialog.FileName
arrPath = split(strPath,"\")
i = UBound(arrPath)
strFile = arrPath(i) & "-" & Timer
objWshShell.Run """C:\Program Files\Autodesk\Backburner\cmdjob"" -jobname " & strFile & " -numTasks 3 -serverCount 3 ""C:\Program Files\Adobe\Adobe After Effects 7.0\Support Files\aerender"" -project " & strPath, 1, False
End If
現状、最大の問題点はAEのマルチマシンレンダリングに依存しているので、ジョブを中断するとレンダリング出力先に0KBのファイルが残ってしまう点。対処方法としては(レンダリング開始前に)まずプロジェクトファイルから有効なレンダーキュー及びファイルの出力先を調べて、0KBのファイルを削除してからレンダリング開始…みたいな形はどうかと思案中。あまり上手いやり方とは言えませんが。あと現在レンダリング中のフレームが Backburner 上から確認出来ないのも不便だよなぁ。いっそのことAE側のマルチマシンレンダリングは使わず、1コマ~数コマずつタスクとして登録する?それも怖いような。
Backburner Submit UI の不具合を修正する為にドキュメントを調べているうちに、ついついこんなものを書いてしまったけど、もう少し粘ってみよう…かな?