RIBarchive可能な群集のレンダリングを爆速にするためのチェックポイント

The Making of World of Warcraft(http://www.cgchannel.com/news/viewfeature.jsp?newsid=8144&pageid=0#)の群集のデモが出たので思いついたようにtips。

「RIBarchive可能な群集のレンダリングを爆速にするためのチェックポイント」

・RIBarchiveを作るときはテクスチャーの形式はレンダーマン用マップ形式にすべて変換(例えば3delightの場合はTDL形式に変換)

・RIBarchiveを作るときのRIBのリンク先はレンダリングするマシンのローカルドライブにする。つまりローカルドライブのプロジェクトで作る。(後でスクリプトでテクスチャのリンクを一気に変えやすいようにRIBはバイナリ形式にしないのも手かも)

・最終的に集めたシーンにはRIBarchive以外のモデルは入れない。骨やコントローラーはOK。

・シーン内にマテリアルもテクスチャーも一切無いようにする。(これが一番重要。もしなんらかの理由でモデルが削除出来ず少しテクスチャがある場合もちゃんとローカルになっているかFileTextureManager.melなどで要チェックhttp://www.highend3d.com/maya/downloads/mel_scripts/rendering/misc/1012.html

・念のためレンダリング先はローカルドライブ。画像が壊れなければネットワーク上でもOK。

うちはこれで30分以上かかっていたレンダリングが2分とかになりました。

ただRIBarchiveを作るのってアンビエントオクルージョン用のRIBarchiveを作ってあげなければいけないからめんどくさいよね。

MAYAレンダーマン系のRenderPassについてまじめに考える

3delightというかレンダーマンは毎フレームRIBを吐き出さなければいけないという条件がある。

これがRenderPassが1つだけならいいんだが複数あるとそのぶんRIBを吐かなければいけない。今回出しているpassは

1、rgbaやreflectionなどデフォルトのパス群

2、オークルージョン、ノーマルなどののシェーダー用パス群

3、マスク用カラーパス

4、T光用パス

5、地面だけの落ち影用パス

と5つも出している。

もしこのカットが100fあれば1fにつきribを吐き出すのに5分かかるとするとそれだけで

5(min)*5(pass)*100(f)=2500(min)

            =約41.6(h)

とRIB吐き出しだけで42時間ほどかかってしまう。これにレンダリングの時間が加算される。当然ribアーカイブを使えば良いという意見もあるがスキニングやデフォメーションされたオブジェクトには使用出来ないので辛い。

ただし例えばvrayだと全くこんな事が無いかと言われればそんな事は無くてレンダーエレメントでオークルージョンを扱うことが出来ないし落ち影を出す場合もレンダーエレメントだけでは対応できない。

やはり3回ほどレンダリングしなければいけないので煩雑になるのは避けられない。

(たぶん続く)

シーンセーブすると必ずMAYAが落ちるシーン

MAYAでシーンセーブすると必ずMAYAが落ちるというシーンが出来ることがある。サーフェスマテリアルがオブジェクトにかかっていてレンダーレイヤーがあるシーンに多い。一定の条件で出る。

そういうシーンは大丈夫なバージョンにさかのぼってもう一度同じ操作をして再度シーンを作っても落ちてしまうシーンになる。

謎だ。