株式会社コロッサスへようこそ

menu

Colossus Studios

アーノルドレンダー検証 その12

新年明けましておめでとうございます

Arnoldブログ
書き始めたときはさらっと数ヶ月で終えるつもりが、年をまたぐことになってしまいました。
またしばらく間が空いてしまいましたが、再開いたしますので、本年もどうぞよろしくお願いいたします。

最近、新しいカメラを手に入れました。

海外旅行用にiPhoneのカメラよりもましなものを買おうと思っていたら、社内外に巣食うカメラオタクや怪しい沼の主などの策略にはまってしまい、デジタル一眼を買うことになってしまいました。
機能、性能、可搬性などをいろいろ考えましたが、やはりセンサーサイズの大きなカメラはイイですね。
写真が記録や状況を説明するためのものから、自分が感動した瞬間を写しとめるものへと変わっていきます。IMGP0433

渋谷ヒカリエ 1/200 F5.0 ISO100

さて、今回はArnoldのGlobal Illuminationについてです。

ArnoldにはGlobal Illuminationエンジンは1つしかなく、V-rayのように複数のエンジンを組み合わせて使うことはできません。
しかし、その代わりにフォトンマップやイラディアンスキャッシュなどの事前計算は不要で、1パスだけでGlobal Illumination計算を終えることが出来ます。
つまり、Arnoldは物理ベースなモンテカルロパストレーシングエンジンであり、Unbaiasな(計算結果に偏りの無い)レンダラーなのです。

長所は、
・1パスで計算できるのでアニメーションレンダリング時に煩わしくない。
・複雑なアニメーションレンダリングでもアーティファクトが発生しない。
・コントロールするパラメーターがサンプリング数だけなので、設定に迷うことが無い。
短所は、
・計算を速くするための事前キャッシュを取らないため、遅い。(とは言え、それほど遅いとは思いません)

つまり、Global Illumination計算させるために、特に設定することは無いのです。
モデリングし、シェーダーを与え、ライティングし、カメラを向けてレンダリングボタンを押すだけです。
今までのレンダラーでは、これらの後に最大の難関、「レンダー設定」が待っていましたが、Arnoldはホントこれだけで済むのです。

ま、これだけだとわざわざ記事を書くことも無いので、せっかくだからRay Depthというところに焦点をあててみて見ましょう。

Ray Depthはパストレーシングするレイ(光線)のデプス(深さ)を決定するものです。
Arnoldの速さの秘密はここにも現れていて、Ray Depthをある程度で切ることにより本来ならばどこまでも追跡してしまう計算をあえて制限することによって速さを得ています。

RayDepth

Diffuseは拡散反射の回数
Glossyはスペキュラーを得るための反射の回数
Reflectionは鏡面反射の回数
Refractionは屈折の回数
(Diffuse + Reflection + Refraction + Glossy <= Total)となります。

ここではDiffuseに注目して、その回数によってどれほど差が出るのかを検証してみました
LightBounceTest0LightBounceTest1LightBounceTest2LightBounceTest10
コの字型の空間をエリアライトだけで照らしています。
左から順にDiffuseの回数が0回、1回、2回、10回
さすがに1回ではGlobal Illuminationになっていないが、2回以降はそれほど差があるようには感じません。

次はSponza宮殿を使ってフィジカルスカイライティングで検証してみました。
Diffuseの回数が1回と10回の違いを比べています。

左Diffuse 1回 右Diffuse 10回
1回の場合の計算時間はだいたい10分、10回の場合は50分ほどかかっています。

Arnorl_GiTestDiffuse1_001Arnorl_GiTestDiffuse10_001
手前の柱左側の陰に差があります。

Arnorl_GiTestDiffuse1_002Arnorl_GiTestDiffuse10_002
通路の明るさに差があります。

Arnorl_GiTestDiffuse1_003Arnorl_GiTestDiffuse10_003
アーチ手前の明るさに差があります。

Sponza宮殿はほぼ淡色のテクスチャなので明るさの差がわかりやすかったのですが、より複雑なテクスチャを持つCrytekSponza宮殿で比較してみましょう。
左Diffuse 1回 右Diffuse 10回
CrytekSponzaGiTest1_0001CrytekSponzaGiTest10_0001

CrytekSponzaGiTest1_0002CrytekSponzaGiTest10_0002

CrytekSponzaGiTest1_0003CrytekSponzaGiTest10_0003
う~ん、入り隅の陰に反射回数の違いは認められますが、テクスチャが複雑になってくるとSponza宮殿のほどの差は判りづらいですね。

Arnoldの場合は、Diffuseの回数を1ないし2にしておけば、実用上ほぼ問題ない程度のGlobal Illumination効果が得られますし、計算時間もリーズナブルな範囲に収まっていると思います。
さらにはGlobal Illuminationのための複雑な設定をする必要も無いですし、なにしろその試行錯誤にかける時間を考えたら、Arnoldの方が速いと言えるんじゃないでしょうか。


過去の記事:シェーダー
その2 反射について
その3 屈折について
その4 SSSについて
その5 ディスプレイスメントについて
その6 ヘアーシェーダー
その7 その他のシェーダーについて
過去の記事:ライト
その8 ライト1
その9 ライト2
その10 ライト3
過去の記事:カメラ
その11 カメラ