Global Illumination

Global Illuminationの計算手法についての解説です。作例はVrayですがMentalrayも含んだ内容です。
※現在、Vray勉強中なので間違い等ありましたら指摘をお願いします。

◯Global Illuminationとは?

現実世界では発光体から放出された光線が
物体に衝突→反射(バウンス)を繰り返しながら物体を照らします。(間接照明)
わかり易い例が白い壁の近くに赤いものを持って行くと白壁に赤い光が照り返す現象で、
この現象をCGで再現したのがGlobal Illuminationです
あとで記述しますがMentalrayのFGもこの手法の一種になります。
GIやグローバルイルミネーションなどで検索すれば詳細がたくさん出てくるのでここでは省略します。

◯GIの計算方法

GIの計算方法にはいくつかあるのですが今回はVrayを例に解説します。
いくつかはMentalrayでも使用されている手法になります。
またVrayではプライマリ(一次)、セカンダリ(二次)でGIの計算方式を変更できる特徴があります。
※細かい部分、厳密にいうと違う部分もありますが各手法の仕組みの参考として見てみてください。
 詳細は公式サイトやマニュアルを参照してください。

・Brute force

 利点:正確なディティール。アニメーションによるチラツキが起こりにくい。
 短所:時間がかかる。大規模なシーンではノイズを発生する可能性がある。

計算はピクセル単位で総当りアルゴリズムの為、正確でちらつきも起こりにくいが時間がかかる手法。
マニュアルによるとBrute forceをプライマリ、セカンダリにPhoton mapやLight cacheをつかうと
Brute forceを高速化することが可能なようです。
またBrute forceがセカンダリで使用される場合のみ黄色ラインのRayがトレースされます。

・Irradiance map

 利点:マップとして保存出来る(再利用で高速化)。平坦地の計算が高速。
 短所:アバウトな計算。チラツキが起こりやすい。

Brute force同様に視点依存の計算方式でMentalrayのFGもIrradiance mapを使用した物になります。
またIrradiance mapはプライマリにしか使用できません。
 1.カメラからRayを放出(黒ライン)
 2.物体にあたった位置にサンプルポイントを作成します。(赤丸)
 3.サンプルポイントから複数のレイを放出しその結果で照明値を算出します。(赤ライン)
  この時放出されるレイの数はSubdivsの値の2剰値になります。
 4.カメラから見たピクセルの中で一番近いサンプルポイントを参考に補完されます。(緑ライン)
  この時に使う補完レイの数はInterp.sampleの値が使用されます。
 ※セカンダリは別のエンジンに回されます(黄色ライン)

・Photon map

 利点:マップの保存が可能(再利用で高速化)。アバウトな近似による高速なライティング。
 短所:速度の割には結果が綺麗になりにくい。ライトごとに設定が必要。使用不可のライトがある。

Mentalrayのグローバルイルミネーションと同等のもの。
前2つとは違い光源からのレイを基準に処理を行う。
 1.ライトからRay(フォトン)を放出しオブジェクトに衝突した位置にサンプル点を作成(黄色ライン)
 2.カメラからRayを放出し、衝突点から指定範囲を捜索し検出されたフォトンの平均値を使用(赤ライン)

・Light cache

 利点:ライトごとの設定が不要。高速でプレビズに最適。
 短所:バンプマップとの相性が悪い。移動物体を含む照明があまり正しくない。

Vray独自のアルゴリズム。フォトンマップに似た手法だがライトでは無く視点依存。
 1.カメラから複数のRayを放出し反射地点に明るさを記録したサンプリング点を作成(赤丸)
  反射回数はBouncesで指定する。
 2.他のレイと衝突したら片方を止め、以後は2つのレイとして記録※このため高速に動作する

各種法ごとに特色があり、それを組合せて利用できるのがVrayの特徴となっています。
各種法の細かいパラメータはマニュアル等を参照してください。


この記事が気に入ったらサポートをしてみませんか?