ラジオシティ

ラジオシティ法は、3次元コンピュータグラフィックス(3DCG)におけるグローバルイルミネーションの計算法の一つで、特に間接光の表現に優れています。従来のレイトレーシングのように視点から光線を追跡するのではなく、光源から放出された光エネルギーの挙動を熱力学的に計算します。

ラジオシティ法の概要



ラジオシティ法は、光が物体表面で乱反射を繰り返すことで生じる間接光の影響を計算します。これにより、壁の色が周囲の物体に影響を与えたり、柔らかい陰影が生まれたりといった、より現実的な光の表現が可能になります。例えば、赤い壁の部屋では、他の物体が赤みを帯びて見えるといった効果が自然に再現されます。

この手法は、特に室内のような複雑な光環境のレンダリングで高い写実性を発揮します。現在では、リアルタイム描画以外の3DCGにおいて、ラジオシティ法が何らかの形で利用されることが多いです。

しかし、ラジオシティ法は、レイトレーシングのようなモンテカルロ法に基づいた手法とは異なり、全ての照明現象を再現できるわけではありません。典型的なラジオシティ法では、拡散面のみで構成された場面を扱い、光が拡散面で複数回反射した後に視点に到達する現象(Heckbertの表記法で「LDE」と表される)を再現します。

ラジオシティ法の利点として、一度計算を行えば、オブジェクトや光源を変更しない限り、カメラ設定を変更しても再レンダリングを容易に行える点が挙げられます。そのため、近年ではリアルタイムレンダラーでも使用されることがあります。

ラジオシティの基本的な手法は、熱移動の研究分野で1950年代に初めて提案されました。その後、1984年にコーネル大学の研究チームが、コンピュータグラフィックスのレンダリングに応用しました。大域照明の効果を示す有名な例として、コーネルボックスがあります。また、日本のCG研究の第一人者である西田友是氏も、ほぼ同時期に独立して先駆的な研究を行っていたことが知られています。

ラジオシティ法の視覚的な特徴



ラジオシティ法は、実世界の光の挙動を模倣するため、最終的なレンダリング結果はより現実に近いものになります。例えば、シンプルな部屋のシーンを考えてみましょう。

直接照明のみでレンダリングされた画像では、スポットライト、環境光、無指向性光といった複数の照明要素を個別に調整する必要があります。一方、ラジオシティ法でレンダリングされた画像では、窓から差し込む光のみを光源としていますが、部屋全体が柔らかく光り、床の影もより自然に見えます。また、間接光の影響で奥の壁が床からの反射光で赤みを帯びるなど、複雑な光の相互作用が自動的に再現されます。

アルゴリズムの概要



ラジオシティ法では、まず場面を構成する物体の表面を小さな平面(パッチ)に分割します。次に、各パッチ間の光の相互作用を表す係数である「角関係」を計算します。角関係は、二つのパッチが互いにどれだけ見えるか、また、間に他の物体が存在するかによって決まります。

これらの角関係は、線形のレンダリング方程式の係数として使用されます。この方程式を解くことで、パッチ間の光の拡散や相互反射、柔らかな陰影などを計算できます。

漸進的なラジオシティ法では、この方程式を繰り返し計算によって解き、計算過程で各パッチの放射発散度(ラジオシティ)の中間値を得ます。各繰り返しごとに、光が反射する回数が一つずつ増えていきます。これにより、光が複数回反射した結果も考慮に入れられます。また、十分なレンダリング結果が得られたと判断される場合には、計算を途中で打ち切ることもできます。

ラジオシティ法の方程式を解く別の手法として、シューティングラジオシティ法があります。この手法では、繰り返し計算ごとにエラーが最も大きいパッチから光子を放出します。これにより、計算回数が増えるにつれて、場面全体がより均一に照らされます。

数学的な説明



ラジオシティ法の基礎には、熱輻射の概念があります。場面を構成するパッチ間の光エネルギーの遷移を計算します。計算を単純化するために、光の拡散はランバート反射に基づくと仮定します。つまり、拡散面に入射した光は、すべての方向に均等に反射すると考えます。また、パッチは四角形または三角形のポリゴンで構成され、それらに対して多項式が定義されます。

光エネルギーの遷移は、反射面の反射特性と、2つのパッチ間の角関係によって計算されます。放射発散度Bは、単位時間あたりに単位面積から放出される光エネルギーを表し、次の式で表現されます。


B(x)dA = E(x)dA + ρ(x)dA ∫S B(x') (1/πr^2) cosθx cosθx' Vis(x, x') dA'


ここで、

B(x)dAは、小領域dAから放出される光エネルギーです。
E(x)dAは、放射エネルギーです。
ρ(x)は、点xにおける反射率です。
Sは、積分範囲である面全体を表します。
rは、点xと点x'間の距離です。
θxとθx'は、点xとx'を結ぶ直線と各点が存在する平面が作る角度です。
Vis(x, x')は、点xとx'が互いに見える場合は1、見えない場合は0を取る可視関数です。

連続量で表現された方程式は、パッチを有限の集合として扱うことで、差分式として書き直すことができます。


Bi = Ei + ρi Σ(j=1 to n) Fij Bj


ここで、

Biは、パッチiの放射発散度です。
Eiは、パッチiの放射エネルギーです。
ρiは、パッチiの反射率です。
Fijは、パッチiとjの間の角関係を表します。

この方程式は、各パッチについて計算できます。カラー画像を扱う場合には、色の各チャンネルごとにこの方程式を解く必要があります。

関連項目



3次元コンピュータグラフィックス
グローバルイルミネーション
レイトレーシング
フォトンマッピング

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。