ラジオシティのソースを表示
←
ラジオシティ
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Otheruses|画像処理の方法}} [[ファイル:Cornell Box With and Without Radiosity Enabled.gif|thumb|350px|right|ラジオシティ法を用いた大域照明の結果とラジオシティ法を用いない大域照明の結果。ラジオシティ法を用いない場合には光源により直接照らされる平面を除いては全体的に暗く細部を見ることはできない。またラジオシティ法による結果では色のついた左右の壁により反射された光が後ろの白色の壁にあたって色づいている。]] [[ファイル:Radiosity - RRV, step 79.png|thumb|300px|right|RRVによるレンダリングの例(RRVとはOpenGLによるラジオシティ法の単純な実装である)。79回の繰り返し計算を行っている。]] '''ラジオシティ''' (Radiosity) とは、[[3次元コンピュータグラフィックス]]のレンダリングにおける、[[グローバル・イルミネーション]]の計算法のひとつである。物体に反射した間接光の影響を計算し表現する方法のことである<ref>{{Cite book|和書 |title=超図解インテリア用語辞典 |year=2024 |publisher=株式会社エクスナレッジ |page=343}}</ref>。 == 概説 == 一般に多用されている[[レイトレーシング]]のように、仮想のカメラから、そこに届く光線を求めていくという方向ではなく、光源の側から、光として発せられたエネルギーの行方を[[熱力学]]的に処理することで([[エネルギー保存の法則|エネルギー保存則]])、複数の物体が光を乱反射させて、お互いを照らす効果などが計算できる。たとえば壁紙が赤いために部屋にあるものが赤く見えるといった効果がより現実的に再現できる。 この方法を用いると柔らかな陰影が表現でき、特に室内などの風景で画像の写実性が高くなる。現在では、リアルタイム描画以外の3次元グラフィックスではラジオシティを何らかの形で援用することが多い。ラジオシティ法はレイトレーシング法などの[[モンテカルロ法]]に基づいた手法と異なり、あらゆる種類の照明現象を再現することはできない。典型的なラジオシティ法は場面が拡散面によってのみ構成されていることを前提としているため、光源から放射された光が何度か拡散面によって反射されたあとで視点にいたるという現象しか再現できない。この現象を一般的な光経路の表記法であるHeckbertの表記法により表すと「LD*E」となる。ラジオシティ法の利点として、一度計算を行っておけば、オブジェクトや照明を変更しない限り、カメラ設定を変更しても再レンダリングを容易に行えるということが挙げられ、近年はリアルタイムレンダラーでも使用例がある。 ラジオシティの基本的な手法は[[伝熱|熱移動]]<!--「熱伝導」と訳すのは誤訳です。「伝熱」の記事を読んでください-->の研究分野で1950年に初めて提案されたものである。後の1984年にコーネル大学の研究チームがコンピュータグラフィックスによるレンダリングにこれを応用した。そのためラジオシティ法のような大域照明の効果を見せるための有名なサンプルに[[コーネルボックス]]がある。また日本のコンピュータグラフィックス研究の第一人者としても知られる[[西田友是]]も、独立に全く同時期に先駆的な研究をしていたことでも有名である<ref>M. Cohen, J. Wallaceの "Radiosity and Realistic Image Synthesis" §1.2.3に、In 1984, researchers at Fukuyama and Hiroshima Universities in Japan and at the Program of Computer Graphics at Cornell University in the United States began to apply radiosity methods from the field of radiative heat transfer to image synthesis. とある。「福山大の研究者」とは[[西田友是]]らを指している。</ref>。 == 視覚的特徴 == [[ファイル:Radiosity Comparison.jpg|thumb|484px|right|直接照明法とラジオシティ法との結果の比較]] ラジオシティ法では、実世界の現象に近い光の挙動を模しているため最終的なレンダリング結果がより現実に近いものとなる。単純な部屋のシーンを想定してみる。 左の画像は直接照明レンダリングによって得られたものである。この場面では3種類の照明現象を分けて扱うことで、より現実に近い結果を得ている。これらの照明現象はデザイナーなどにより調整されなくてはならない。3種類の照明現象とはスポット照明(窓から差し込み柱の影を作る)、環境照明(光が直接当たっていないような暗い場所を再現)、無指向性照明(環境光の一様さを低減するような成分)である。 右の画像はラジオシティ法によりレンダリングされた場面である。この場面で用いた光源は窓の外から差し込む光のみであるが、左の画像との違いが見て取れる。部屋全体が柔らかく光っており、床の影もより現実的で、間接照明による効果がよく再現されている。さらに左奥の壁は床に反射した光によってやや赤色になっており、より穏やかな印象を与えている。これらの現象は全てラジオシティ法の計算結果によるものでありデザイナーなどによる照明効果の調整などは一切行う必要がない。 == アルゴリズムの概要 == 場面を構成する物体の表面は多くの小さな平面に分割されている。角関係 ([[:en:View factor|view factor]]) は各々の小平面に対して計算されなくてはならない。角関係とは面と面とが互いに見えているかどうかを表す係数である。角関係は互いの面が離れている場合やお互いに傾いて存在している場合には小さな値の係数によってあらわされる。また2つの小平面の間に他の平面が存在する場合には、その平面によって2平面間が完全に遮られているか部分的に遮られているかで、係数を0にしたり小さくしたりする。 これらの角関係は線形の{{仮リンク|レンダリング方程式|en|Rendering equation}}における係数として扱われる。この方程式を解くことがラジオシティ法の主な処理であり、これにより小平面間の拡散や相互反射、柔らかな陰影などを扱うことができる。 漸進的なラジオシティ法ではこの方程式を繰り返し計算によって解き、その計算の過程でそれぞれの小平面における放射発散度(ラジオシティ)の中間値を得る。これらの中間値は光子の反射回数と関係がある。つまり1回の繰り返し計算で得られる中間値は光子が光源を出発してから1度だけ反射をした場合の放射発散度を表しており、繰り返しが2回、3回と増えるごとに得られる中間値が表すものが2回、3回反射した光子による効果へと変わっていく。さらにある繰り返し回数で十分なレンダリング結果が得られると判断される場合には計算の収束を待つことなく計算を終了することもできる。 [[ファイル:Radiosity Progress.png|thumb|680px|right|繰り返し計算ごとに拡散面により反射される回数が多い光の効果が反映されていく。複数回反射した光の効果を再現するとより写実的なレンダリング結果を得ることができている。]] ラジオシティ法におけるレンダリング方程式を解く手法として、この他にシューティングラジオシティという手法がある。この手法は繰り返し計算を行うごとにエラーが最も多い小平面から光子を放つことによりレンダリング方程式を解く方法である。1回の繰り返し計算では光が直接あたるような小平面しか照らされないが2回目以降の繰り返し計算では場面のあらゆる場所から光が反射してくるため、より多くの小平面が照らされることとなる。この繰り返し計算を行うことで、照明状態が一定の安定状態に至る。 == 数学的な説明 == [[File:Nusselt analog.svg|thumb|right|幾何学的角関係''F''<sub>ij</sub>(投影立体角とも)。''F''<sub>ij</sub>は投影面''A''<sub>j</sub>を単位半球上に投影した面によって与えられ、面''A''<sub>i</sub>上にある注目点を中心とした単位円によって表される。]] ラジオシティ法の考え方の根底には熱輻射の考え方があり、場面を構成する小平面間での光エネルギーの遷移を計算している。計算を単純にするため、ラジオシティ法では全ての光の拡散がランバート反射に基づくと考える。すなわちある光が拡散面に入射した場合、拡散後の光は全ての方向に均等な明るさで反射されると考える。また小平面は四角形あるいは三角形のポリゴンであるとし、その平面群に対して多項式が定義される。 このようにして場面を小平面群に分解すると、光エネルギーの遷移は反射面の反射性質および2つの小平面間の角関係によって計算することができる。この無次元量は2つの面の向きから計算され、ある平面から放出された光が他の平面にどの程度到達するかを表すことができる。より詳しく言えば、放射発散度''B''は小平面上の単位平面から単位時間に放出される光エネルギーを表しており、これは光の放射エネルギーと反射エネルギーによって次のように表現される。 <!-- 英語版のWikipediaからそのままコピーしてきた数式のようですが、微分記号dはイタリック体でなく、立体に統一するよう修正しています。 --> :<math>B(x)\,\mathrm dA = E(x) \,\mathrm dA +\rho(x) \,\mathrm dA \int_{S}B(x') \frac{1}{\pi r^2} \cos\theta_x\cos\theta_{x'} \cdot \mathrm{Vis}(x,x') \,\mathrm dA'</math> * ''B''(''x'')d''A''<sub>''i''</sub> - ''x''の近傍である小領域d''A''<sub>''i''</sub>から放出される光エネルギー * ''E''(''x'')d''A'' - 放射エネルギー。 * ''ρ''(''x'') - 点''x''における反射度であり、単位平面あたりの反射光のエネルギーと入射光のエネルギーの積であらわされる。 * ''S'' - ''x''を平面全体について積分したもの。 * ''r'' - 点''x''と点''<nowiki>x'</nowiki>''との距離。 * θ<sub>x</sub>, θ<sub>x'</sub> - 点''x''と点''<nowiki>x'</nowiki>''とを結んだ直線と各々の点が存在する平面とが作る角。 * Vis(''x'', ''<nowiki>x'</nowiki>'') - 点''x''と点''<nowiki>x'</nowiki>''が互いに見えている場合には1を、見えていない場合には0を取る関数(可視関数とも言う)。 平面が有限の小平面による集合として与えられる場合には、連続量としてあらわされていた方程式が差分式の形で書き直せる。すなわち各々の小平面が持つ放射発散度を''B''<sub>''i''</sub>、反射度を''ρ''<sub>''i''</sub>とあらわして次のように書く。 :<math>B_i = E_i + \rho_i \sum_{j=1}^n F_{ij} B_j</math> ''F''<sub>''ij''</sub>は面''i''と面''j''との間の角関係を表す。この方程式は各々の小平面に対し計算可能である。この方程式はモノクロ画像のためのものであるので、カラー画像を扱う場合には色を構成するチャネルそれぞれについてこの方程式を解く必要がある。 == 関連項目 == * [[3次元コンピュータグラフィックス]] * [[グローバルイルミネーション]] * [[レイトレーシング]] * [[フォトンマッピング]] == 参照 == {{脚注ヘルプ}} {{Reflist}} {{3Dレンダリング}} {{DEFAULTSORT:らしおしてい}} [[category:画像処理]] [[Category:3DCG]]
このページで使用されているテンプレート:
テンプレート:3Dレンダリング
(
ソースを閲覧
)
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Otheruses
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
ラジオシティ
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報