CG・コンテンツ制作
SUITE USERS NOTES
SoftimageでBackburnerを使う
See English version
izt_ml

プロローグ
Backburnerは、オートデスクが提供するネットワークレンダリングマネジメントツールです。
3ds MaxやMayaのインストーラには標準で含まれておりますので、既に使っておられる方も多いのではないでしょうか。
残念ながら、Softimageのインストーラには、Backburnerは含まれておらず、オートデスク社もSoftimageで使用することは正式にはサポートしておりません。
しかしながら、Backburnerはレンダリングのみならず、一般のバッチジョブを投入するコマンドもサポートしておりますので、これを使用すればSoftimageのレンダリングジョブを投入することができます。

SoftimageからBackburnerにレンダリングジョブを投入するツールはネット上にも幾つか公開されているようですが、ここでは、Mayaの投入ツールにユーザインタフェースを合わせた、Softimageプラグインを公開いたします。MayaでBackburnerをお使いの方には便利ではないでしょうか。

さらに、レンダーマップって、Backburnerに投入できないの?という疑問をお持ちの方、もちろん可能です。そのツールも公開します。

そして、最後に、さらにレンダリング効率アップをお考えの方のため、有料のレンダリングマネジメントツールになりますが、Qube!というのがあります。通常のレンダリング投入プラグインはQube!に付属していますので、ここではレンダーマップ用のプラグインをご提供します。

では、Backburnerは既にセットアップ済みで、Softimageのバッチライセンスも十分に所有しているという前提で話を進めます。ちなみにバージョンは以下の通りですが、旧バージョンでも使えるはずです。(とりあえず、2010でも動作確認してます)
Softimageネットワークライセンス1つにつき、5本分のバッチライセンスが使用できます。

動作環境:
Softimage 2013 SP1 Windows 64bit版ネットワーク版
Backburner 2013
※サーバーマシンの環境は合わせるようにしてください。(OS、インストール先など統一してください)


Backburnerプラグインのインストール
レンダリングジョブ投入ツール(DKN_BackBurner_for_Softimage)
レンダーマップジョブ投入ツールBackburner版(DKN_RenderMap_by_Backburner)
Qube!について
レンダーマップジョブ投入ツールQube!版(DKN_RenderMap_by_Qube)
menu_bb_forSI_sm
Windows7 Professional 64Bit
AMD PhenomⅡ965
メモリ12GB、NVIDIA GeForce 9600GT



Backburnerプラグインのインストール プラグインのインストールは簡単です。以下のリンクからZIPファイルをダウンロードして、解凍すると、DKN_Backburner.xsiaddonが得られます。
そのファイルを、Softimageのビューにドラッグ&ドロップするだけです。

 >> プラグインダウンロード:DKN_Backburner.zip

インストールすると、以下のようにプラグインマネージャに表示され、レンダメニューに3つのプラグインが組み込まれます。
p_managerrend_menu



レンダリングジョブ投入ツール(DKN_BackBurner_for_Softimage)
使い方は簡単です。レンダリングしたいシーンを読み込んで、レンダ > レンダ >  DKN_BackBurner_for_Softimage を実行するだけです。
シーンは、各サーバーからUNCパスで参照される必要がありますので、通常、ファイルサーバーから読み込むことになります。
bb_forSI_org
Scene_Root直下にプロパティが作成され、プロパティページが開きます。MayaでBackburnerをお使いの方は、特に困ることは無いと思いますが、各項目の設定を行います。
項目を設定後、Submitボタンでジョブを投入します。
Scene_Root以下にDKN_BackBurner_for_Softimageプロパティが残っていますので、必要があれば開いて再投入できますが、必要なければ削除してください。
pp_bb_forSI
menu_bb_forSI
Job Setting

Job Name:
ジョブ名を指定します。デフォルトは、シーン名に年月日、時間を繋げた名前になります。
Description:
ジョブの説明を記述します。
Priority:
ジョブの優先度を設定します。デフォルトは50で、0(重大)~100(中止)の値を指定します。
Start Frame, End Frame, Step:
レンダリングするフレームのスタート、エンド、ステップを指定します。
Task Size:
各マシンに割り振る1つのジョブについて、レンダリングするフレーム数を指定します。
Additional Command Options:
xsibatchコマンドに渡されるコマンドオプションを記述します。
例えば、日本語UIでお使いの場合は、ログが文字化けしますので、-uilang en
で回避できます。
Additional Render Options:
xsibatchコマンドに渡されるレンダリングオプションを指定します。
-pass pass1,pass2でパス指定などが可能です。
Backburner Options

Manager Name:
Backburnerマネージャが起動しているマシンの名前を指定します。
指定しなければ自動検索します。
Port:
ポート番号を指定します。通常は変更する必要はありません。
Server List:
ジョブ送信先のサーバマシンを指定します。;(セミコロン)で区切って複数指定できます。
Server Groupが指定されている場合は無視されます。
Server ListもServer Groupも指定されない場合は、使用可能なマシンに順次に割り振られます。
Server Group:
ジョブ送信先のサーバグループを指定します。
Server Listが指定されている場合は無視されます。
Server ListもServer Groupも指定されない場合は、使用可能なマシンに順次に割り振られます。
Number of Servers:
同時にジョブを処理するサーバの最大数を設定します。
Start Job manually:
ジョブを中止の状態で投入し、後に手動でスタートできます。
Create Log file/Log Path:
ONにすると、ログファイルが出力されます。
タスクのログを作成するフォルダの場所を指定します。
フォルダは存在している必要があります。
Scene File:
レンダリングするシーンファイルをUNCパスで指定します。
デフォルトは現在のシーンファイル名になります。
Renderer Path:
xsiBatch.batファイルをフルパスで指定します。
Backburner Path:
Backburnerのcmdjob.exeファイルをフルパスで指定します。
Use Custom Command:
カスタムコマンドを使用する場合、ONにします。
Custom Command Options

See Submit Command:
実際に投入されるジョブコマンドと引数が表示されます。
Use Custom CommandsをONにした場合は、必ず、See Submit Commandボタンを
押して、表示させてください。
ここで、オプションを編集することもできます。
Use Custom CommandsがONになっていないと、このエリアは使用されません。

Submit:
タスクリストが出力され、ジョブが投入されます。
Create Batch and TaskList file:
ジョブは投入せずに、投入用のバッチファイルとタスクリストが出力されます。
出力先は、C:\Users\<username>\AppData\Local\Tempとなり、ファイル名は、
<ジョブ名>.bat、<ジョブ名>.txtとなります。
通常、バッチファイルは使いませんが、コマンドプロンプトから投入する場合、便利に使用できます。
※タスクリストとバッチファイルは自動削除されませんので、時々、手動で削除してください。
menu_bb_forSI2
E-Mail Options

Send E-Mail:
ONにするとE-Mailを送信する設定ができます。
E-Mail Complete:
ジョブが完了したら、E-Mailを送付します。
E-Mail Failure:
ジョブが失敗したら、E-Mailを送付します。
E-Mail Progress/Number of Tasks:
Number of Tasksで指定したジョブ数が完了したら、E-Mailを送付します。
E-Mail From/E-Mail To/SMTP Server:
E-Mailの送信元、送信先、SMTPサーバのアドレスを指定します。

以下に参考のため、MayaのBackburner投入メニューを示します。Mayaでは、レンダー > Backburnerジョブの作成というメニューから投入します。
それぞれ、若干、特有の項目もありますが、設定項目はほとんど同じですよね。レイアウトももう少し似せることもできましたが、あまり凝っても仕方ないので必要最小限にしました。
maya_bb
少々、補足説明しましょう。

 < タスクリストについて > 
Mayaでは、このメニューからBackburnerにジョブを投入すると、タスクリストが作成され、そのリストを元に、各レンダリングサーバーにジョブが割り振られます。
例えば、開始フレームが1で、終了フレームが30、タスクサイズが6の場合、1~6フレームはサーバ1、7~12フレームはサーバ2 となります。
タスクリストは、C:\Users\ < username > \AppData\Local\Temp に、 < ジョブ名 > .txt として出力され、以下のようなフォーマットです。
タスクID、開始フレーム、終了フレームが記述されています。


frames1-6 1 6
frames7-12 7 12
frames13-18 13 18
frames19-24 19 24
frames25-30 25 30

今回のSoftimage版もこの仕様に合わせてありますが、ステップ値が指定できる点が異なっています。
例えば、開始フレームが1で、終了フレームが30、ステップが3、タスクサイズが4の場合、以下のように出力されます。
タスクID、開始フレーム、終了フレーム、ステップ値が記述されています。各タスク毎に4フレーム分レンダリングされることになります。


frames1-10 1 10 3
frames13-22 13 22 3
frames25-30 25 30 3

※タスクリストとバッチファイルは自動削除されませんので、時々、手動で削除してください。

 < Additional Command Options > 

xsibatchコマンドに渡すオプションを指定します。どのようなオプションが使えるかは、Softimageコマンドプロンプトを開いて、
xsibatch -help
で確認できます。
あまり、使うべきオプションはありませんが、日本語モードでお使いの場合は、ログが文字化けしてしまいますので、英語モードで実行するオプション、
-uilang en
を指定すると便利です。ただし、次回Softimageを起動すると、英語モードで起動してしまいますので、日本語モードに設定しなおすか、起動時に、
-uilang jp
を指定するようにすると便利です。

 < Additional Render Options > 
xsibatchコマンドで、-renderオプションに伴うオプションを指定します。
こちらも、どのようなオプションが使えるかは、Softimageコマンドプロンプトを開いて、
xsibatch -help
で確認できます。よく使われるオプションとしては、
-pass <pass1;pass2...>
-output_dir <directory>
といったものがあります。



レンダーマップジョブ投入ツールBackburner版(DKN_RenderMap_by_Backburner)

Backburnerにレンダーマップジョブを投入するというのはあまりピンと来ないかも知れませんが、シーン内のオブジェクトに対して一気にレンダマップを作成するには便利なツールです。
以下に概念図です。レンダーマップが設定されたオブジェクト単位で、レンダリングサーバーにジョブを投入するという方法になります。

wf_rendmap

 < 準備 > 
プラグインをインストールして、メニューが組み込まれた状態のままではまだ使用できません。
以下の2つの作業を行います。
① xsiBatch.batは、-scriptを伴って動作しますので、そのスクリプトをインストールする必要があります。
これは、オブジェクト名を受け取って、レンダマップを計算するコマンドを発行するスクリプトです。
プラグインをインストールしていれば、以下のフォルダに、bat_obj_rendermap.vbs があるはずです。
C:\Users\<username>\Autodesk\Softimage_<ver>\Addons\DKN_Backburner\Data\Scripts
このファイルを、各サーバーマシンから同じ記述のUNCパスでアクセスできるフォルダにコピーしてください。
② ダイアログで、サーバーマシンがプルダウンで選択できるよう、スクリプト内の記述を変更します。
C:\Users\<username>\Autodesk\Softimage_<ver>\Addons\DKN_Backburner\Application\Plugins\DKN_RenderMap_by_Backburner.vbs
をテキストエディタで開き、以下のfunction行を探してください。240行目くらいにあるはずです。
function DKN_RenderMap_by_Backburner_OnInit( )
その中の、Array設定で、
workers = Array( "Not Specified",0, "pc1",1, "pc2",2, "pc3",3 )
の記述をマシン環境に合わせて変更してください。
"Not Specified",0, "<サーバマシン名1>", 1, "<サーバマシン名2>", 2, "<サーバマシン名3>", 3, .....
幾らでも羅列して記述できます。最初の "Not Specified",0 は変更しないでください。
本来なら、ここは、自動的にサーバーを検出してリストアップするようにしたかったのですが、難しいもので...
書き換えたら上書き保存してください。

以上でセットアップ作業は終わりです。


 < 作業手順 > 
① シーン内のレンダーマップを作成するオブジェクトおよびグループに、レンダーマッププロパティを設定します。
・オブジェクトもしくはグループを選択し、取得 > プロパティ > レンダマップ を実行します。
・プロパティ内で必要なパラメータを設定します。
② UNCパスで指定可能なファイルサーバー内にシーンを保存します。
レンダ > レンダ > DKN_RenderMap_by_Backburner を実行します。
Scene_Root直下にプロパティが作成され、プロパティページが開きます。
・scene file, script fileをUNCパスで指定します。
・xsiBatch.bat ファイルをフルパスで指定します。(適切なSoftimageバージョンのものを選択してください)
・レンダーマッププロパティが設定されたオブジェクト、グループがリストアップされます。
- 投入ON/OFF、投入先サーバー、プライオリティ、cmdjobコマンドに渡す引数を設定します。
- Common argumentsにて、すべてのジョブ共通のcmdjobコマンドに渡す引数を設定します。
④ Submitボタンをクリックします。
ヒストリペインに、投入されたコマンドが表示されます。
Scene_Root以下にDKN_RenderMap_by_Backburnerプロパティが残っていますので、必要があれば開いて再投入できますが、必要なければ削除してください。


pp_rmap_byBB
menu_rmap_byBB
File

scene file:

レンダリングするシーンファイルをUNCパスで指定します。
デフォルトは現在のシーンファイル名になります。
script file:
ファイルサーバー上のbat_obj_rendermap.vbsファイルをUNCパスで指定します。
xsibatch file:
xsibatch.batファイルをフルパスで指定します。
Backburner Path:
Backburnerのcmdjob.exeファイルをフルパスで指定します。
Object list

レンダーマッププロパティが設定されているオブジェクトやグループがリストアップされます。
それぞれについて、投入ON/OFF、投入先サーバー、プライオリティ、追加の引数を指定し、
レンダーマップジョブを生成します。
左のページの例では、5つのジョブが投入されます。
投入先サーバーで、Not Specifiedを指定すると、順次、レンダリング可能なサーバーに投入されます。
args:は、cmdjobコマンドへの追加の引数を指定します。ジョブ毎に指定可能な引数となります。
Common arguments

XSIBatch args:
xsibatchコマンドに渡されるコマンドオプションを記述します。
例えば、日本語UIでお使いの場合は、ログが文字化けしますので、-uilang en
で回避できます。
submit args:
cmdjobコマンドへの追加の引数を指定します。すべてのジョブに共通の引数となります。



Qube!について

さらに効率の良いレンダリングマネジメントシステムをお望みの方は、Qube!をぜひご検討ください。
Qube!の特徴はこちらをご参照ください。開発元サイトはこちら

Backburnerとの違いですが、以下のようなものがあります。

  • 圧倒的なスケーラビリティ
    Backburnerは数十台までの比較的小規模な運用では十分に威力を発揮しますが、それ以上になると不安定になると言われています。
    Qube!は1000台以上のファームでも安定運用の実績があります。

  • 効率的なCPU負荷分散
    ダイナミックアロケーションによるフレーム単位での効率的な処理が可能です。
    今回のBackburner投入ツールやMaya版の投入ツールでは、1-30フレームを3台でレンダリングする際は、フレームレンジを1-10、11-20、21-30のように3つにあらかじめ分割してジョブが各CPUに分散されますが、Qube!では1フレームずつ、分散して処理を行うことが可能です。これにより、例えば、1つのCPUが何らかの理由で落ちてしまったような場合、ごっそり10フレーム分、抜け落ちてしまうことを防ぐことができます。また、各CPUでレンダリングの終了時間の差を少なくすることができたり、途中でCPUを追加したりといった状況にも対応できます。

  • 数値、クラスタリングによる優先順位指定
    数値による優先度設定はもちろん、「クラスタ」と呼ばれる階層化されたグループで指定することも可能です。
    特定の階層レベルに投入されたジョブは、それ以外のレベルに投入されたジョブよりも優先順位が高くなります。これにより、部門やプロジェクト間でのホストの割当を保持しつつ、空いて遊んでいるマシンを無くし、ファームの効率を極限にまで伸ばすことができます。

  • CPUの負荷を設定
    各ジョブに必要なリソースを細かく指定して投入できます。これを利用すれば、例えば空きメモリの足りないマシンに大きなメモリが必要なレンダリングが分散され、結局最後までレンダリングできずに処理が落ちてしまう、など、時間と資源の浪費が防げます。

    他にもまだまだあります。ぜひ、こちらから詳細をチェックしてください。

レンダリングジョブ投入ツールのDKN_BackBurner_for_Softimageに相当するものは、Qube!のジョブタイプとして提供されていますので、ここではレンダーマップジョブ投入ツールのみを公開します。




レンダーマップジョブ投入ツールQube!版(DKN_RenderMap_by_Qube)

Qube!版は、発行されるコマンドが異なるだけで、操作はBackburner版とほとんど同じです。
 < 準備 > 
プラグインをインストールして、メニューが組み込まれた状態のままではまだ使用できません。
以下の2つの作業を行います。
① xsiBatch.batは、-scriptを伴って動作しますので、そのスクリプトをインストールする必要があります。
これは、オブジェクト名を受け取って、レンダマップを計算するコマンドを発行するスクリプトです。
プラグインをインストールしていれば、以下のフォルダに、bat_obj_rendermap.vbs があるはずです。
C:\Users\<username>\Autodesk\Softimage_<ver>\Addons\DKN_Backburner\Data\Scripts
このファイルを、各サーバーマシンから同じ記述のUNCパスでアクセスできるフォルダにコピーしてください。
② ダイアログで、サーバーマシンがプルダウンで選択できるよう、スクリプト内の記述を変更します。
C:\Users\<username>\Autodesk\Softimage_<ver>\Addons\DKN_Backburner\Application\Plugins\DKN_RenderMap_by_Qube.vbs
をテキストエディタで開き、以下のfunction行を探してください。240行目くらいにあるはずです。
function DKN_RenderMap_by_Qube_OnInit( )
その中の、Array設定で、
workers = Array( "Not Specified",0, "pc1",1, "pc2",2, "pc3",3 )
の記述をマシン環境に合わせて変更してください。
"Not Specified",0, "<サーバマシン名1>", 1, "<サーバマシン名2>", 2, "<サーバマシン名3>", 3, .....
幾らでも羅列して記述できます。最初の "Not Specified",0 は変更しないでください。
本来なら、ここは、自動的にサーバーを検出してリストアップするようにしたかったのですが、難しいもので...
書き換えたら上書き保存してください。

以上でセットアップ作業は終わりです。


 < 作業手順 > 
① シーン内のレンダーマップを作成するオブジェクトおよびグループに、レンダーマッププロパティを設定します。
・オブジェクトもしくはグループを選択し、取得 > プロパティ > レンダマップ を実行します。
・プロパティ内で必要なパラメータを設定します。
② UNCパスで指定可能なファイルサーバー内にシーンを保存します。
レンダ > レンダ > DKN_RenderMap_by_Qube を実行します。
Scene_Root直下にプロパティが作成され、プロパティページが開きます。
・scene file, script fileをUNCパスで指定します。
・xsiBatch.bat ファイルをフルパスで指定します。(適切なSoftimageバージョンのものを選択してください)
・レンダーマッププロパティが設定されたオブジェクト、グループがリストアップされます。
- 投入ON/OFF、投入先サーバー、プライオリティ、qbsubコマンドに渡す引数を設定します。
- Common argumentsにて、すべてのジョブ共通のqbsubコマンドに渡す引数を設定します。
④ Submitボタンをクリックします。
ヒストリペインに、投入されたコマンドが表示されます。
Scene_Root以下にDKN_RenderMap_by_Qubeプロパティが残っていますので、必要があれば開いて再投入できますが、必要なければ削除してください。

pp_rmap_byQube
menu_rmap_byQube
File

scene file:

レンダリングするシーンファイルをUNCパスで指定します。
デフォルトは現在のシーンファイル名になります。
script file:
ファイルサーバー上のbat_obj_rendermap.vbsファイルをUNCパスで指定します。
xsibatch file:
xsibatch.batファイルをフルパスで指定します。
Object list

レンダーマッププロパティが設定されているオブジェクトやグループがリストアップされます。
それぞれについて、投入ON/OFF、投入先サーバー、プライオリティ、追加の引数を指定し、
レンダーマップジョブを生成します。
左のページの例では、5つのジョブが投入されます。
投入先サーバーで、Not Specifiedを指定すると、順次、レンダリング可能なサーバーに投入されます。
args:は、qbsubコマンドへの追加の引数を指定します。ジョブ毎に指定可能な引数となります。
Common arguments

XSIBatch args:
xsibatchコマンドに渡されるコマンドオプションを記述します。
例えば、日本語UIでお使いの場合は、ログが文字化けしますので、-uilang en
で回避できます。
submit args:
qbsubコマンドへの追加の引数を指定します。すべてのジョブに共通の引数となります。



さて、次回はまだ未定ですが...What's Next ...
乞う、ご期待!! Stay tuned ..

お気軽にお問い合わせください

Daikin CG News お申し込み

CGクリエイター向けのセミナー・イベントやキャンペーン、製品情報をメールマガジンでお届けします。(登録無料)

Twitter

ページの先頭へ