Carraraでネットワークレンダリング

full_rendering03.jpg
ここのところすっかり3DCGづいて居たのだけれども、目的の動画もできたしイメージしていた絵(上の画像)も作れたしで一段落。
薄暗い駄菓子屋すみのゲームコーナーというイメージだったので、セットの部屋内に光源を置かずほとんど全て外から入ってきているGI(グローバルイルミネーション)フォトンでぼんやりと見えている状態。道向こうの塀や木がくっきり見えるのも面白くないのでDepth of Field(被写界深度)機能も使っている。Cararraは値段の割にこの辺のレンダリングが悪くない画質で、速度も結構速かったりする。いつかこれらを使った絵をレンダリングしてやろうと思っていたものだ。

しかし、これくらいの物体量というか効果を含みつつ分散レイをばしばし飛ばすと結構な計算量になってくる。
この800x600pixelの制止画一枚レンダリングするのに、2.4GHzのクアッドコアで20時間以上とかそんな。
流石に丸一日というときつくなってくるので、部屋の中にあるマシンをかき集めてネットワーク分散レンダリングを行うわけです。
Carraraの場合ネットワークノードといわれるネットワーク分散専用のレンダリングアプリケーションが配布されていて、Carrara Pro を持っていれば適当な数利用することができる。使い方も、サブマシンでネットワークノードを立ち上げておいて、メインマシンでバッチレンダリングを行う際にネットレンダー利用を指示するだけ。
最初にシーンデータが丸々ネットワークノードにコピーされ、それぞれのノードがメインと同じ絵をレンダリングできる環境を構築する。後は、まだレンダリングされていないボクセルを早い者勝ちで取得しその領域をレンダリングし終えたらボクセル画像をメインマシンに渡す。これをコアの数=スレッドの数並列して行う仕組み。基本レイトレーシングなんでピクセルごとにタスクを分けることができるために可能な感じ。フレーム単位で分散とかじゃなくて静止画にも適用できるのが良いよね。

そんなこんなでネットワーク分散レンダリングで長い時間かけて描かせた画像が怪しい。
full_rendering01.jpg
上記画像の丸で囲ったあたりがわかりやすいのだけれども、ノードによって違う色を返して来やがる。他のところもよーく見ると色が違うのが混ざっていたりする。
どうも通常演算は問題ないけれども、GIレンダリングのフォトンマップ計算をおこなうとこのような微妙なズレを生じる様だ。
まあ、環境やCPUアーキテクチャによって浮動小数演算の丸め誤差とか変わってくるのはイメージしているんだけれども、ここまで違う色になると「バグ?」とか思ってしまう。
とりあえず、この大きく色が異なるノードは Macintosh のノードだということがわかった。CarraraはWinとMacの両方でリリースされている、Winの方で契約して使っているのだけれどもネットワークノードは混在でも使えそうだからやってみていた。けどコードが異なるせいか違いが出てしまったというわけ。
じゃあWindowsで統一したら大丈夫かというと、まだ気がつくほど色が違うノードが存在していた。これは意外な事に、Celeron Dual-Core SU2300 のマシンが原因だったのでこいつもノードから除外。
戦力がほとんど居なくなってしまったけれども、それでも単体でレンダリングするよりマシなので残りの問題が無い部隊でよいしょっとレンダリング。それでも14時間くらいかかった。

よーくみるとまだノードによって色が違うところが存在している。このへんはフォトンマップの散らばり具合とかもあるのかなあ。これ以上削るとネットワークノードが無くなってしまう(笑
ネットワーク分散レンダリングは面白いけれども難しい面もあるのだな。計算ズレなんてCararraだけの問題かもしれないけれども。




You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply