パストレの基礎概念のthree-point formについて

パストレの基礎概念のthree-point formについて勉強します。ここで書いていることは、私的メモ要素が強いです。

これらについてはすでによくまとめられた論文やBlogがあるのでそちらを参考にしていただければと思います。
http://graphics.stanford.edu/papers/veach_thesis/
http://rayspace.xyz/

参考
ROBUST MONTE CARLO METHODS FOR LIGHT TRANSPORT SIMULATION
http://graphics.stanford.edu/papers/veach_thesis/

3.7.1 The measurement equation

光輸送の最終目標は、実数値の測度の集合、I_1,I_2,…,I_mをを計算することです。たとえば、イメージを直接計算する光輸送ならば、各I_jはイメージの各ピクセルに相当し、mは画像全体のピクセル数に相当します。各測度は、Radianceに反応する仮想的なセンサーの出力に対応します。センサーの反応は位置やどの方向からRadianceが入射するかによって異なります。ここで、センサーの感度を
We(x,ω)で表すとすると、センサーの出力Iは、WeとLiの積の積分で以下のように求めることが出来ます。
\\  \begin{aligned}  I=\int_{{S^2} \times \cal{{M}} }W_e(x,\omega)L_i(x,\omega)dA(x)d\sigma^{\perp}_x(\omega)  \end{aligned}
eq 3.18
これをmeasurement equationと呼びます。
これが個々のIjに対して存在し、それぞれ異なるWe()を有します。また、個々の仮想センサーは、シーンの一部としてモデル化されています。これにより、センサー表面で積分することが可能となります。

メモ

We()はIncidentの位置と入射するRadianceの向きによる感度の関数です。Liはセンサーの位置へのRadianceです。dA(x)はセンサー面の微小面積を表し、dσはセンサー面における、向きω周りのProjected Solid Angleになります。
Projected Solid Angleは、あるSolid Angleを平面上に投影した際の領域を表します。この場合の平面とはセンサー面です。立体角ωが微小ならば、ωと平面の法線の成す角のコサインを乗じたものと解釈できます。RadianceとProjected Solid Angleの積はIrradianceとして解釈でき、これにセンサー感度のWeを乗じたものを、センサーの面積のdAで積分すれば、Radianceに反応するセンサーの出力値となるわけです。
積分の対象は、MとS^2です。MはManifoldで、勘案するすべての面の集合を指します。つまりシーン全体の平面のことです。積分の対象となっている仮想センサーの平面はシーンの一部とみなしています。S^2はセンサー上の単位球で、RadianceのSolid Angleの積分範囲ことです。

3.7.2 The light transport equation

ここでは、与えられたシーンが時間的遷移のない、平衡した状態にある場合のRadianceの計測を考えます。incident radiance: Li は、すでに存在するradiance: Loより計算することができます。
\\  \begin{aligned}  L_i(x,\omega) = L_o(X_{\cal{M}}(x,\omega), -\omega)  \end{aligned}

関数Xm(x,ω)は、ray casting functionです。xよりω方向に見えるM内の最初の点を返します。
Loはemitted radiance:Leとscattered radiance:Lo,sの和で表すことができます。
\\  \begin{aligned}  L_o = L_e + L_{o,s}  \end{aligned}

Le(x,ω)はシーンの説明としてあらかじめ設定されているもので、シーン内の光源を表します。一方でLo,sは以下のscattering equation(3.12)を解くことで求まります。
\\  \begin{aligned}  L_{o,s}(x,\omega_o) = \int_{S^2}L_i(x,\omega_i)f_s(x,\omega_i \to \omega_o) d\sigma^{\perp}_x(\omega_i)  \end{aligned}

この二つの式を合わせて、光輸送問題の完全な形を得ることができます。面白いことに、LoとLiは
互いに定義しあうことができるので、以下の式を得ることができます。

\\  \begin{aligned}  L_o(x,\omega_o) = L_e(x,\omega_o) + \int_{S^2}L_o(x_{\cal{M}}(x,\omega_i), -\omega_i)f_s(x,\omega_i \to \omega_o) d\sigma^{\perp}_x(\omega_i)  \end{aligned}
eq3.19

これが、light transport equationです。Liが式中に出てこないので、通常Loのoは書きません。この式の形から、Loは再帰的に計算して求めることができるのがわかると思います。これが伝統的なMonteCarlo法の本質を成しています。

メモ

積分S2の中のLo()の式は、サーフェースに入射するRadianceを表します。dσが表すのは、ωまわりのProjected Solid Angleになります。
つまりLo()とProjected Solid Angleの積が入射光のIrradianceを表します。fs()はBSDFで、IrradianceとRadianceの比です。これをサーフェース上の単位球で積分した結果がschatteringによるradiance:Lo,sというわけです。

8.1 The three-point form of the transport equations

(ここで章が大きく飛びます。)
まず、ベクトルの方向を表すω_i,ω_oを式から消していくために、光輸送式を書き換える方法を示します。その最初のステップは、放射輝度をL(x \to x')で記述することです。x,x' \in \cal{M}はシーン内のサーフェース上の点です。今まではL(x,\omega) と記述してきたものを今後は、以下のように記述します。
\\  \begin{aligned}  L(x \to x') = L(x,\omega) \\  \end{aligned}
このとき\omega=\widehat{x'-x} で、これはxからx’に向かう単位ベクトルです。

同様にBSDFも以下のように記述します。
\\  \begin{aligned}  f_s(x \to x' \to x'') = f_s(x', \omega_i \to \omega_o)  \end{aligned}
ここで、\omega_i = \widehat{x - x'} , \omega_o = \widehat{x'' - x'} です。矢印の方向がそのまま光の進行方向を示します。

Fig8.1:(論文を参照のこと。光の伝搬の図です。x \to x' \to x''と光がサーフェース上で伝搬する図です。)
threep
three-point form の光輸送式は以下のように記述することが出来ます。
\\  \begin{aligned}  L(x' \to x'') = L_e(x' \to x'') + \int_{\cal{M}} L(x \to x') f_s(x \to x' \to x'') G(x \leftrightarrow x') dA(x)  \end{aligned}
eq8.1

この式は、単に既出のeq3.19を書き換えたものです。これまでと同じく、Mはシーンに存在する全てのサーフェースの集合で、AはM上の面積で、Leはemitted radianceを表します。Gはもとの式の積分変数dσから、新しい積分変数のdAへの変更の部分を担っています。これらは以下の関係にあります。
\\  \begin{aligned}  d\sigma^{\perp}_{x'}(\omega_i) = d\sigma^{\perp}_{x'}(\widehat{x-x'}) = G(x \leftrightarrow x')dA(x)  \end{aligned}
eq8.2
\\  \begin{aligned}  G(x \leftrightarrow x') = V(x \leftrightarrow x') \frac{|\cos(\theta_o)\cos(\theta^{'}_{i})|}{||x-x'||^{2}}  \end{aligned}
eq8.3
ここでθiとθoはそれぞれ、線分x-x’と、x,x’におけるサーフェースの法線とのなす角に対応しています。V()はxとx’が相互に可視であれば1、そうでなければ0となる関数です。

また、eq8.2で行った変数の変更を用いて、もとのmesurement equation(3.18)を書き換えます。
\\  \begin{aligned}  I_j = \int_{\cal{M}\times\cal{M}} W^{(j)}_{e}(x \to x')L(x \to x')G(x \leftrightarrow x') dA(x)dA(x')  \end{aligned}
eq8.4

今まで通りx->x’は光の伝搬方向を示します。注意すべきは、We()はx’からxへのインポータンスを示しますが、これは矢印の方向とは逆となります。つまりWe()を以下のように定義します。
W_e(x \to x') = W_e(x', \omega), \omega = \widehat{x-x'}

メモ

ここでは、ほとんどの部分が記述方法の書き換えです。唯一、eq8.1のG()の項が新しく導入された部分です。G()は、x’からxを観測した場合(或いは、xからx’を観測した場合)の、x上の面積に対するx’における見かけの面積(つまり立体角)をx’上の面に投影した際の比になります。これとdA(x)を乗ずると、Projected Solid Angleに相当します。