1:maxwell rendererって何?どんな事が出来るの?
まずmaxwell renderとはどんなものでしょうか?maxwell renderはRealFlowの作者が作ったスペクトラムベースのレンダラーです。ではどのような特性があるのでしょうか。公式ページの表現を元に数個見ていきましょう。
やはりこれがなんといっても一番の魅力じゃないでしょうか、maxwell renderではRGBスペースではなくて光をだいたいの可視光の波長にして物理式を計算します。スペクトラムベースの手法だと通常のRGBベースのレンダリングでは表現出来ないような分光、干渉、偏光効果などは表現出来ます。(ただmaxwell renderでは分光は出来るのは確認してますが他の効果が表現出来るかどうかはわかりません)、ここはブラックボックスな所もあるので後で検証してみましょう。
:むらのないレンダリング
公式ページの表現はこうなってますがグローバルイルミネーションで言うところのno biasというやつです。biasのないアルゴリズムは時間をかければかけるほど正しい解に近づきます。一方でbiasなアルゴリズムはパラメーターの調整次第で画像の結果が毎回変わります。ただbiasの手法の方が画像を高速に計算する事が出来たり視覚的に有効ななめらかな画像を作りやすかったりします。ということでまあ、、、、むらのないという表現は微妙ですかね、、、、画像としてはやはりラジオシティやフォトンマップ等のbiasアルゴリズムに比べてやはりむらがあるような気がします、biasの方はいざとなれば強烈なフィルターをかけ放題になりますので。もちろんうんと計算時間を増やせば問題はなくなります。
:レンダリングをコントロールする少数パラメーター
no biasの手法の強みといいますか、レンダリングをコントールする為のパラメーターは非常に少なくなります。mental rayのファイナルギャザリング等の細かいパラメーター調整で苦しんでいた人からすればだいぶ設定が楽になることでしょう。
あとここでは書いてないですけども少しずつ画面が更新されるプログレッシブなレンダリングシステムになっています、これは凄い大きな魅力だと思います。
2:明日の為にその1、最初の設定
さて、では実際にテストしてみましょう。
まずは標準レンダラーをmaxwell renderに切り替えましょう。
トップタブのレンダリングの所でレンダラーの切り替えを行います。

切り替えた事によりmaxwell renderのタブが登場しました。

うーん、やっぱりパラメーターは少ないですね。レンダラーとしては素晴らしいと思います。
3:簡単なシーンを実際に描画させてみよう
では実際に簡単なシーンを作ってみましょう。
最初にカメラを設定します、maxwell renderのカメラは専用の物となっておりそれ以外からは呼び出せません。
公式ページには正確なカメラモデルを使用したと記載しているのでそれに関連しているのでしょうか?
被写界深度の設定をした時等に結果が少し違ったりするのかもしれません。
(もしくはカメラ内での色分散やレンズフレア等といった現象も扱えるのでしょうか?これらは簡単な内容ではなさそうなのでこのチュートリアルではスキップします。)
カメラは通常のカメラタブから呼び出せます。

さて、次に簡単なモデルを作ってみました。

これらに割り当てるマテリアルもこれまたmaxwell render専用の物で設定しなくてはいけません。
これはマテリアル設定画面の標準タブから呼び出せます。

ある程度、材質をデフォルトで用意してくれてます。

しっかし凄いバリエーション(ダイヤって。。。。)
意外なのが光源の設定です。
光源はmaxwell render独特の方法なのですが上記と同様にマテリアルから作成します。

さすがmaxwell renderだけあって光源の種類等は富んでます。

もうここまでくると、照明シュミレーターですね。。。
ただ実際のこういったスペクトラムデータは意外にも波長データとして色んなデータベースからダウンロードしたり出来るので応用は意外に簡単なのかもしれません。これらのマテリアルを光源にしたいオブジェクトに割り当てればレンダリングの際にその物体は光源として扱われます。
ちなみに光源の設定の下にmental rayコネクションというところがあります。
mental rayエンジンの基本部分とある程度互換性があるようです、これは興味深いですね。

さて、簡単なシーンを作ったので実際にシーンを描画してみましょう、再びレンダリングのタブを開いてみてください。
設定は少ないですしクオリティに影響するパラメーターは少ない(ほぼない)ので簡単な使い方だけ覚えればいいでしょう。
まず画像は通常のMAXのウィンドウを使用せず独自のウィンドウを通して行われるので画像をファイルとして出力、保存する際は出力先とファイル名を設定します。

あとその上の項目で最大のレンダリング打ち切り時間を設定出来ます。
トーンマッピングの設定などもあります。、シーンの明るさからコントラスト等を自動調整します。いつも思うのですけども画像が出来てからトーンマッピングのパラメーター調整とか出来たら凄くいいと思うんですけどもね。
さて、では実際に画像を作ってみましょう、デフォルトの設定ではコーステックスはオフになってるので扱いたい時は必ずすべてオンにしておきましょう。コーステックスは上記画面のCaustics Layerで設定が行えます。

上が2分後(2レベル)程度、下が16分後(10レベル)の画像です。
画質はサンプリングレベルという項目があってそれが1つ終わるごとに画像が更新されていきます。だいたいサンプリングレベルが2ランクあがると計算時間が2倍づつに増えているのでこれは純粋にサンプリングレベルが2倍になったとき2倍のマルチサンプルをとってるのでしょうか?
これで簡単な画像は作れました。
あとアウトドアをレンダリングしたい人の為にスカイモデル等もあります。
スカイモデルはマテリアルで設定するのではなくレンダリング設定の所に用意されています。

4:おまけ
さて、最後にもう少し解析的にレンダラーを見ていきましょう。
まず、シーンのデータストラクチャーをどうしているかです。
レンダリング開始と同時に出る
>> Start Voxelization...
Start Voxelization progress: 100%
>> End Voxelization...
うーんと、これは一様グリッドを使用しているのですかね?
ちなみにmental ray等はBSP(binary space partitioning)等を使用しています。
一様グリッドはBSPよりもかなり遅いことで有名のですが何故今更一様グリッド。。。。?
あ、そういえばmaxwell renderはネットワークレンダリングによる並列処理もウリだったんでした、BSP等は並列化が難しいのでそういった類の理由から一様グリッドを使用しているのでしょうか?スクウェアのKilaueaのように空間データを分割してるのかもしれませんね。まあ実際に試してないしそこらへんは空想の域を出ないのでやめておきます。
あと、もう一つ凄く気になったものにレンダリング設定の「low qualityレンダリング」というものがあります。「プレビューとして使う高速用のレンダリング」と説明書に書いているのでただのスキャンラインするだけの物を予想したのですけども通常のレンダリングと似たようなちゃんとした画像を作ってくれてます、RGBをベースにした双方向レイトレーシングを妄想していたのですけども。。。


確かにmaxwell renderのそれに比べてもだいぶ高速です。

しかも、色分光もちゃんと起きてます、普通のパストレーシングや双方向のものだとただの白のコーステックスになるところですが色分散が起きてカラーのある綺麗なコーステックスになっています。いったいどうやってるのでしょうか。
ただ、色の散らばりが非常に大きく、この後もレンダリングさせてみたんですけども10分程度では画像が収束する雰囲気はありませんでした。RGBそれぞれのカラーに対して分散レイトレーシングを行ってたりするとかするんでしょうか?それとも純粋にスペクトラムの切る幅を雑にしているのでしょうか?人間の可視光線はだいたい300-700nmですけどもmaxwell render等のスペクトラムベースのレンダラーでも勿論ある周期でスペクトラムを区分しなくてはいけません、GPU等でリアルタイム処理を考えると10nmぐらいの大雑把な区分が必要ですけどもこういった精度重視のオフラインレンダラーではどうしてるのでしょうか、ここもやはり妄想の域を出ないのであまり深追いするのはやめておきましょうとしておけばいいんですけどもそればっかりだとあまりにも面白くないので悪あがきで実験をしてみました。
:スペクトラム分析器
まあこういったところを見ていただけばわかりますがニュートンが行った分光機を実際に3D Studio
Max上で復元すればいいのです、そうすればプリズムに分解されその色のスムーズな変化の移行を見ることでだいたいレンダラーがどれくらいの区分でスペクトラムを解析しているか判別することが出来ます。
というわけでこういった装置を作ってみました。

たいそう大雑把ながらもちゃんとしたシステムを作ったのですけども、、、、
結果は失敗に終わってしまいた。

(星空みたい)
む、無念です、穴が大きすぎたのかプリズム発生器がイマイチだったのか原因はよくわかりませんがうまく行きませんでした。ちなみに上の画像がjpeg圧縮で色が白につぶれてますが実際はポツポツと規則性のなさそうな色が散らばってます。
5:ギャラリー
綺麗な画像なら公式ページにいっぱいあるのでそちらをごらんください。
とりあえずモデリングの才能のない自分はデフォルトモデルで色んなシーンを試すことにしました。

レンダリング時間は20分です。左の球をダイヤのマテリアル設定で、右の知恵の輪をプラスチックモデルでレンダリングしました。
ダイヤのマテリアルはMaxwell Dielectric、プラスチックモデルはMaxwell Plasticで設定することが出来ます。
球モデルの床のコーステックスをよく見ればわかるのですけが嬉しい事に色分光が起きてくれてます。
そういえばプラスチックといえば昔EG(Eurographics)のオーサーと話をした時に彼が映画ファイナルファンタジーの技術的な面を絶賛してたのですが唯一のクレームとして「顔がちょっとプラスチックっぽかったねー、あれが残念」と言っていたのを思い出しました、今だと表面下散乱モデル(Sub
Surface Scattering)がもっと洗練されているのでいいものが作れるのでしょうねー。いや、全然関係のない話なんですけども。
別のシーンでもテストしてみました。

レンダリング時間は20分です。(というかレンダリング打ち切り条件をそうしてるだけ)
ティーポットにはゴールドのマテリアル設定で、右のはただのディフューズ面でレンダリングしました。
ゴールドのマテリアルはMaxwell Metal、プラスチックモデルはMaxwell Diffuseで設定することが出来ます。
この画像ではフォグのオプションをオンにしてます。
フォグのオプションはレンダリング設定画面で有効にすることが出来ます。

これでオッケイです、サンプルの画像ではちょっとAbsorptionを強くしすぎたかもしれません。
床にはテクスチャを張ってます。テクスチャの設定は標準の3D Studio Maxの方法と非常に似ています。

これだけで十分です。
今度はもうちょっとフォグで遊んでみましょう。
強いフォグがあると光源の周辺でグロー等の効果が出たりします。
(余談ですが今年のsiggraphでこういった現象をグラフィックスハードウェアでリアルタイムに表現する手法が出ています。)

レンダリング時間は20分です。(ちょっとノイズが目立ちますかね。)
今回はこの白い球がライトになっています。
さて、最後にmaxwell rendererであまり強くないと個人的に思う拡散面の間接光の評価をしてみましょう。


上が20秒、真ん中が6分、下が20分経過時間のレンダリング結果です、意外にもって言ったら失礼ですけども綺麗ですね。
拡大すればそれなりにノイズは見えますが耐えれないほどではないです。
6:まとめ(総括)
今回はMaxwell renderをレビューしてみました、遅い遅いと噂されがちですが慣れてくると決して耐えれないようなものではないです、パラメーターが少ないのでマシンと睨めっこする必然性が少ないのでもし何も作業してないようなマシンが余ってたりしたりすると有効利用したりすることも出来ます。あとマテリアルがわかりやすい表現である程度用意してくれてるのは素晴らしいと思います。3D Studio Max等でもBlinn等といった物理モデルの名前で書かれてることが多いですけども正直な所イメージ出来ない所が多いので、、、、。
自分自身も色々と考えることがあって非常によかったです。似たような機能の似たようなレンダラーが多い中で非常に個性が抜きん出た面白いレンダラーでした。



コメントする