パストレの基礎概念のpath integral formulationについて(2)

引き続きパストレの基礎概念のpath integral formulationついて勉強します。ここで書いていることは、私的メモ要素が強いです。

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

8.2.2 Applying the path integral formulation

この章では、パス積分フレームワークをMonte Carloアルゴリズムでどのように使用できるかについて説明します。最初に、パス\overline{X} をランダムに生成し、 f_j(\overline{X})/p(\overline{X}) の推定値を計算することにより、どのようにして測定値を評価することができるかを示します。これには、 各経路がサンプリングされた際の確率密度p(\overline{X})の評価が必要です。実際に使用されるすべてのunbiasedなパスサンプリングアルゴリズムを記述するのに十分一般的な、local path samplingのフレームワーク内でこれを行う方法を検討します。

我々のゴールは下記のパスの積分を、個々のI_jにおいて推定することです。
\\  \begin{aligned}  I_j=\int_{\Omega}f_j(\overline{x})d\mu(\overline{x})  \end{aligned}

これを行うために、自然なモンテカルロ戦略は、最初に、選択された密度関数p に従って、ランダムな経路\overline{X} をサンプリングし、下記I_jの推定値を計算することです。
\\  \begin{aligned}  I_j \approx \frac{f_j(\overline{X})}{p(\overline{X})}  \end{aligned}

期待値は以下のようになることから、このI_jはunbiasedな推定値です。
\\  \begin{aligned}  E[\frac{f_j(\overline{X})}{p(\overline{X})}]   &= \int_{\Omega}\frac{f_j(\overline{x})}{p(\overline{x})}p(\overline{x})d\mu(\overline{x}) \\  &= \int_{\Omega}f_j(\overline{x})d\mu(\overline{x}) \\  &= I_j \\  \end{aligned}
eq (8.9)
ここでは、上記の方程式の第1行が成り立つようにするために、pはarea-prduct measure:\muに関して測定されたと仮定します。

この戦略を適用するには、与えられたパス\overline{X}の関数f_jpを評価できる必要があります。
measurement contribute functionf_jの明示的な公式は既に与えられています。したがって、主たる問題は確率密度p(\overline{X})をどのように評価するかです。明らかに、これは特定のパス\overline{X}だけでなく、このパスがどのように生成されたかにも依存します。たとえば、パスを生成する1つの方法は、通常のパストレースで行います。頂点x_kがレンズ上で選択され、続く頂点x_{k-1},...,x_1は、最終的に光源上のランダムな頂点x_0にパスを接続するまで、ランダムなバウンスをたどって生成されます。確率p(\overline{X})は、このプロセス中に行われたすべてのランダムな選択に依存します。これについては、以下でより詳細に説明します。

8.2.2.1 Local path sampling

local path sampling algorithmsと呼ばれる、パスを生成する特定の一群の方法について説明します。これらのメソッドは、既存の頂点のローカル情報(BSDFなど)に基づいて、一度に1つの頂点を生成します。このフレームワークでパスを構築するために使用できる3つの基本的なメカニズムがあります。

  • 頂点は、シーンのサーフェス上の先験的な分布にしたがって選択することができます。例えば、光源上の頂点をサンプリングするために使用することができ、放射束密度(すなわち、光源上に放射される単位面積当たりの出力)に比例する確率密度でサンプリングできます。
    同様に、この手法を使用して、有限開口レンズ上の最初の頂点をサンプリングすることができます。 また、パスに沿って中間の頂点をサンプリングするためにも使用できます。たとえば、隣接する2つの部屋の間にある窓の上にある頂点をサンプリングする時にも使えます。
  • 頂点を生成する第2の方法は、既存の頂点xで局所的に定義された確率分布に従って方向をサンプリングし、次にレイをキャストして最初の面との交点x’(これが新しい頂点になる)を見つけることです。たとえば、これは、既存の頂点のBSDF (またはBSDFの近似) がサンプリングされるときに起こる事そのものです。このメカニズムは、光源上の頂点が選択された時に、放射方向をサンプリングするためにも使用できます。
  • パスサンプリングの第3のメカニズムは、2つの既存の頂点を、それらの間の可視性をチェックすることによって接続することです。 実際には、このステップでは、新しい頂点を生成するのではなく、2つの頂点の間にedgeが存在するかどうかを検証します。

これらの3つの簡単なテクニックを組み合わせることで、さまざまな方法でパスをサンプリングすることができます。 サブパスは、光源、レンズ、または任意のシーンサーフェスから構築することができます。 これらのサブパスを結合して、光源からレンズまでのフルパスを作成することができます。 このローカルサンプリングフレームワークは、実際に使用されるほぼすべてのパスサンプリング手法に対応するのに十分なほど一般的です。

8.2.2.2 Computing the path probabilities

このセクションでは、与えられたパス\overline{x}をサンプリングするための確率密度p(\overline{x})の計算方法について説明します。
eq8.9で先に述べたように、area-product measure\muに対する確率密度を計算したいとします。
\\  \begin{aligned}  p(\overline{x})=\frac{dP}{d\mu}(\overline{x})  \end{aligned}
与えられたパス\overline{x}=x_0,...,x_k,について、上式を以下のように展開します。
\\  \begin{aligned}  p(\overline{x})&=\frac{dP}{d\mu}(x_0,...x_k)\\  &=\prod^{k}_{i=0}\frac{dP}{dA}(x_i)\\  \end{aligned}

したがって、p(\overline{X})を評価するために、各頂点x_iが生成された際に、単位面積当たりの確率(dP/dA)を計算し、それらを掛け合わせなければならなりません。
 これより、与えられた頂点をサンプリングする確率を計算する方法を検討します。
local path samplingモデルによれば、各頂点x_iは、以下の2つの方法のうちの1つ方法で生成することができます。x_iは、シーンのサーフェース(確率密度dP/dA(x_i)を直接計算することができる)上の分布からサンプリングされるか、そうでない場合は、既存の頂点からのレイをランダムに選択された方向にキャスティングすることによって生成します。
 後者の場合の確率密度を計算するために、xを既存の頂点とし、x'=x_iを新しい頂点とします。x'は、xからの\omega_o方向にレイをキャスティングすることによって生成されたと仮定します。
\\  \begin{aligned}  \omega_o=\widehat{x'-x}  \end{aligned}

(立体角に関して測定され)選択された\omega_oに関する確率密度p(\omega_o)も与えられるとします。表面積に対する密度p(x')を計算するためには、与えられた密度p(\omega_o)の関数として、それを表現しなければなりません。これらの2つの密度は次式の関係性があります。
\\  \begin{aligned}  \frac{dP}{dA}(x') = \frac{dP}{d\sigma}(\omega_o) \frac{d\sigma(\omega_o)}{dA(x')} \\  \rightarrow p(x') = p(\omega_o)\left(\frac{|cos(\theta_i')|}{{||x-x'||}^2}\right)  \end{aligned}

eq 8.10(図8.3参照)
括弧で括られた式は、x'における単位表面積当たりのxにおける立体角です。


メモ

area product mesureによる積分をするためには、確率密度関数も、単位面積当たりの関数である必要がありますが、BSDFなどをヒントにしたRayのCastingでは、確率密度関数は、立体角の関数であるとこがほとんどです。これを書き換えるために上記の計算が必要になります。文中に示される通り、eq8.10のカッコの中の項は、点xからの、RayのCastingによる立体角が、RayがHitした位置x'周りに投影された際の面積の比の逆数になっています。これを乗算することで確率密度を投影先の単位面積当たりに変換しています。


 これらのルールを使用すると、パス全体の確率密度p(\overline{x})を計算するのは簡単です。我々は、頂点が生成された順に、各頂点の密度dP/dAを掛け合わせることと単純に見做します(必要に応じて方向性から面積確率に変換します)。パスの生成方法にはほとんど制限がありません。レンズから(パストレースの場合と同様に)、ライトから(パーティクルトレースの場合と同様に)、または両方の組み合わせ(双方向パストレースの場合のように)。また、シーンのサーフェース上の所定の分布に従って頂点をサンプリングすることによって、パスを中間から開始し、構築することもできます。これは、困難な幾何学的設定、例えば、既知の小さなポータルを通過する輸送経路を生成する場合に有用です。
 パス積分フレームワークでは、上記のすべての可能性が同じ方法で処理されます。
それらは、measurement equation(8.5)の異なるサンプリング戦略と見なされ、パス空間上で異なる確率分布になります。それらは、1つの簡単な方程式、すなわち推定値f_j(\overline{X})/p(\overline{X})のもとで統一されます。

Densities with respect to projected solid angle.
多くの場合、projected solid angle\sigma^{\perp}(通常の立体角\sigmaではなく)に対する密度として指向性分布を表現する方がより自然で便利です。ここでは、これらの方程式を将来の参照のために要約します。

既存の頂点x(Fig8.3)が与えられた場合、与えられた方向\omega_oをサンプリングするために、それぞれ、通常の立体角およびprojected solid angleに対する確率密度をp(\omega_o)およびp^{\perp}(\omega_o)とします。
これらの2つの密度は以下の関係性があります。
\\  \begin{aligned}  \frac{dP}{d\sigma^{\perp}}(\omega_o) &=   \frac{dP}{d\sigma}(\omega_o)  \frac{d\sigma(\omega_o)}{d\sigma^{\perp}(\omega_o)}\\  \rightarrow  p^{\perp}(\omega_o) &= p(\omega_o)\frac{1}{cos(\theta_o)},  \end{aligned}
eq8.11
これは以下の関係性を用いて求められます。
\\  \begin{aligned}  d\sigma^{\perp}(\omega_o) =  |\omega_o \cdot N(x)|d\sigma(\omega_o)  \end{aligned}

これをeq(8.10)と合わせると、Gを幾何項(8.2)とすると、以下の式を用いてprojected solid angleに関する確率密度と表面積に対する確率密度とを変換することができます。
\\  \begin{aligned}  p(x') &=   p^{\perp}(\omega_o)\frac{cos(\theta_o)cos(\theta'_i)}{{||x-x'||}^2} \\  &= p^{\perp}(\widehat{x'-x})G(x \leftrightarrow x')  \end{aligned}

この変換係数は、通常の立体角に対する密度の変換係数eq(8.10)とは異なり、対称であることに注意してください。


メモ

とりあえず、ここまででパストレの基礎が理解できたのではないかと思います。特に難しい部分は無いと思います。


広告