ニュース
[CEDEC 2011]物理ベースレンダリングのための幾何光学「基礎理論編」。ただし基礎といっても簡単とは限らない……
今回のCEDECでは数学関連のセッションもあったが,おそらくそれに負けないほど多くの数式が示されたのではと感じられたのが,トライエース 五反田義治氏によるセッション「レンダリストのための物理ベースレンダリング」だ。昨年は,光の性質に基づいた「物理ベースのレンダリング」についての講演を行っている同氏だが,今回は,基礎編と応用編の二つのセッションを持っている。そして,物理ベースレンダリングの前提となる部分について細かく解説したのが,「基礎理論編」のセッションである。
トライエース公式サイト
今回のセッションは,幾何光学の基礎部分について,どの項目がどのような意味を持っているのかなどを一つずつ確認する形で行われた。
こういった開発者イベントでのシェーダ関連の講演の多くが,このレンダリング方程式を基にしているのだが,多くは,その一部をどのように簡略化していくかという話題が中心となっている。基礎的な部分についての解説がなされることは少ないので,このようなセッションは貴重である。
ショートセッションということもあり,かなり駆け足の説明だったので講演内容を逐一を追うことはしないが,基本的なパラメータとなる放射輝度,放射照度,放射束などがそれぞれどんな意味を持っているのかなどを確認しつつ,レンダリングというのはいったいどういうことを行うものなのかといった,根本的な部分からの解説がメインとなっていた。以下の内容が基本事項だ。
放射輝度 単位面積を通過する,一定の角度範囲の光の量
放射照度 単位面積を通過する光の量
放射束 単位時間に放出される光のエネルギーの量
レンダリング 1ピクセルに到達する光エネルギーを求めること
実際に記述してみると,角度と面積と時間の積分となるわけだが,これはいろんな角度からきた光エネルギーの総量を意味している。
なんやかんやと付随する解説はあったのだが,そうこうするうちに本題ともいうべきレンダリングをどう解くかという部分で,もっとも基礎的な拡散反射モデルであるランバートシェーディングで解いていく過程が紹介された。
式の展開が終わると,カメラのシャッター速度は単位時間のエネルギーの積分,絞り値は面積あたりのエネルギー量の積分として示されることや,光学のコサイン4乗則がどこからきているのかなどが,実に綺麗に導出されてくる。ちょっと長いのだが,過程をすべて掲載しておこう。
一般的なGPUは,単純な光源からの陰影処理は得意なのだが,漠然とあちこちからやってきた光の量などを求めるのは苦手。最近はグローバルイルミネーションという扱いで,いろいろなアプローチで解決方法が模索されているが,先の式でいうと,入射放射照度の項を求めるのが難しいわけだ。
この部分に関しては,無限遠にある半球上に放射光の強さを表す値をテーブル化して入れておいて,環境マッピングを施すというアプローチがとられることが多い。グローバルイルミネーション関係の記事を読んできた人にはお馴染みの考え方であろう。
しかし,これでもなお重い処理である。積分を現実的に解くために,フーリエ変換を行いFFTアルゴリズムで高速化を図るというアプローチから,さらに極座標でのフーリエ変換といえる球面調和関数が持ち出される流れが見えてくる。さまざまに変換して,重要度の低そうなところは大胆に省略したり近似したりというのが,あらゆる手法で実験されているのが,現状のリアルタイムCG業界といえるだろう。
正確なライティングを目指して物理ベースのモデルを使っても,実用上は正確でないことが分かっている実装しかできないのがつらいところだろう。今回のセッションでは,3Dグラフィックス分野での根本的な部分を追っており,かなり有意義だったといえるのではないだろうか。数式の嵐についていけていない人も多かったようには思うが……。
トライエース公式サイト
- この記事のURL: