3dsmax9で3200x2400pixelの高解像度レンダリングに挑戦
mentalrayはとても早いのですがメモリを喰います。高解像度レンダリングをするとたいていFinalGather用のメモリを確保できなくなりエラーとなってしまいます。
- メモリ1GB積んだPCでレンダリングすると、システム全体のメモリが1.5GBでエラーが出て終了してしまいます。
- メモリを2GBに増やしました。今度はエラーこそ出ませんが高解像度でレンダリングすると、レンダリング結果が明らかに異常になってしまいます。
3dsmax9にはbackburnerを利用した分割レンダリング(ストリップレンダリング)という機能が用意されています。
- 3dsmax9のライセンスが1つだけの場合、ネットワークレンダリングにチェックを入れてbackburnerマネージャにジョブを投入し、3dsmax9のライセンスをインストールしたPCのみをサーバーとしてレンダリングを行います。この時に例えば、3200x2400pixelであれば、3200x120の20個のタスクに分割してレンダリング、最後に統合するといった機能が備わっています。
- backburnerは分散レンダリングのためのツールですが、ジョブ/タスクの管理ツールとして使用し、レンダリングを行うサーバーは1台だけです。
- もちろんライセンスが複数あれば分割したタスクを振り分けて並列レンダリングすることも可能ですが、体験版としてインストールしたPCと2台でレンダリングを行ったところ、最後の分割イメージを集めるタスクでエラーが起きました。どのみち体験版は30日でライセンスが切れるのでこれ以上実験していません。
- 分散レンダリングするときは、ディストリビュートレンダリングをonにして、mentalrayのサテライトノードのIPアドレスを指定します。通信頻度がどうしても高くなるのでbackburnerによる並列レンダリングより遅くなりますが、mentalrayのサテライトノードは1度に8台接続でき、複雑な設定もいらないので手軽です。
ストリップレンダリングでも途中のタスクからレンダリング結果が異常になってしまいました。所々穴があいています。
- 結局プレースホルダオブジェクトを使用にチェックが入っているとレンダリングの途中で画像が乱れることが分かりました。
成功したときの設定。
- サイズ:3200x2400pixel
- フレームバッファ:16bit整数
- 出力:.tga形式
- ディストリビュートレンダリングON
- サテライトノードはIPアドレスで指定(PCの名前で指定したら失敗)
- サテライトノードのmentalrayサービスは3dsmaxをインストールしただけで起動している。(3dsmaxの体験版ライセンスが切れてもmentalrayサービスは残る)
- backburnerは3dsmaxを起動しているPC上でマネージャ、サービス、モニタの順に起動。しばらくすると互いを認識しあう
- バケットサイズは48
- ネットワークレンダリングにチェック->レンダリング
- ネットワークジョブの割り当てのダイアログでスキャンラインを分割にチェック。
- 定義からスプリットサイズ400(6分割)、オーバーラップ0
- サーバーとして現在作業しているPCのみを選択。選択したサーバーのみ使用にする。
- プレースフォルダオブジェクトを使用:OFF
- mentalrayマップマネージャを使用:ON;
- メモリ節約:OFF;
- boot.iniに/3gbオプションを追加(あまり意味はない)
- メモリ制限:3000MB(あまり意味はない)
これで約270分でレンダリングが終わりました(Athlon64X2 3800+とPentiumM1.73Ghzでレンダリング)
&attachref