CGレンダリング

キーワード:コンピュータグラフィックス、レンダリングレイトレーシングモンテカルロ法ラジオシティ


コンピュータグラフィックスにおいて、計算によって画像を生成することをレンダリングと呼ぶ。
一般には、物体に当たった光がカメラのレンズに入ってくる様子をシミュレートすることで、写実的な画像(映像)を生成する。


実世界において、光源から出た光は物体の表面に当たって反射する。
その反射光が、観察者の目に入ることでその物体が見える。
強い反射光を発する場所は明るく見える。
反射光が観察者の目に届かない場所は、真っ暗で何も見えないことになる。

物体に当たった光は通常は様々な方向に反射(拡散反射)するので、光源から出た光が直接当たらない場所でも、反射光が届くことで薄暗く見える。

CGにおける画像の生成(レンダリング)では、このような光の反射のシミュレーション(または簡易な計算)をすることに他ならない。

このシミュレーションの基本的な考え方は次の通り。
・光源から、あるエネルギーを持った光が発せられる。
・光が当たった物体表面では、その物質の特性に応じて光が反射(または透過)する。
・光はさまざまに反射を繰り返し、最終的に、その一部が観察者の目(またはカメラのレンズ)に到着する。
・観察者の目に到着する光によって、最終的に得られる像が決定する。


レイトレーシングの考え方
レンダリングの方法の1つにレイトレーシングというものがある。

最終的に観察者の目に到着する光は、光源から発する光のほんの一部に過ぎないため、光源から発する光の挙動をすべてシミュレートするのは効率が悪い。
そこで発想を逆にして、観察者の視点に届く光は、どこから、どのように来ているのかさかのぼって追跡していく。これがレイトレーシングと呼ばれる方法。

この方法では、入射光と反射光の進路が対称な関係であることを前提としている。
つまり、入射光と反射光の関係が求まるのであれば、その関係を逆にして、反射光から入射光を求めることができるということ。

簡単にまとめると次のように行う。

まず視点からまっすぐなレイ(光線)を飛ばす。
レイが光源にぶつかったら、その光源から直接光が届くことがわかる。
レイが物体にぶつかったら、レイを物体表面で反射させる。そして、反射させた先に何があるかを追跡する。
その先に光源があれば、物体表面で反射した光が視点に届くということがわかる。もしも光源がなくて、別の物体があるのであれば、再度レイを反射させて、先を探索する。
このように、目に光が届いたと仮定した場合に、その光がどのような経路をたどって来るのか、逆に辿っていく。
(レイが物体にぶつかった時点で物体表面の色を算出したり、ある一定回数以上の反射を繰り返しても光源に到達しない場合は、光は届かないものと判断したりすることもある)

以上が、レイトレーシングの基本的な考え方。

本来、光は物体表面で多方向に分散するけど、この単純な方法だと一方向にしか辿っていけない。そのため、明るいところと暗いところが極端に分かれた結果となる。

つまり、あちこちから拡散反射した光の効果(間接光の効果)を組み入れることができない。
これを解決するために、物体表面の相互の影響を考慮したものをグローバルイルミネーションと呼び、いくつかの方法がある。


モンテカルロサンプリング
上記で説明したレイトレーシングでは、レイを辿っていって物体表面にぶつかったときに、光の反射方向にレイを進めた。
ここで、一方向ではなく、さまざまな方向にランダムに進むようにしたものがモンテカルロサンプリング。複数方向から届く光を考慮することができる。


ラジオシティ
他に、ラジオシティ法と呼ばれるものもある。

仮に、空間中の物体表面が領域A1, A2, A3 から構成されるものとする。
領域A1から放出される光は、A1が自分自身で発光するものと、A2, A3 から届く光を反射したものの和で表される。
同じように、領域A2から放出される光は、A2が自分自身で発光するものと、A1, A3 から届く光を反射したものの和で表される。
領域A3から放出される光も同様。

つまり、ある領域から放出される光は、残りの領域から届く光の量に相互に依存する。
3つの領域の場合、その関係が3つの式で表される。
つまり、連立方程式で、各領域から放出される光が求まることになる。
(3つの未知数が3つの式で求まる。)

このようにして、各領域が他の領域に及ぼす影響(間接光の効果)を考慮した、レンダリングを行うことができる。
これがラジオシティの考え。

物体表面の領域を細かく分割し、より大きな連立方程式を解くことで、より正確なレンダリング結果を得ることができる。


CG Magic:レンダリング

CG Magic:レンダリング