超雑訳 Progressive Photon Mapping: A Probabilisitc Approach (3)

Share

前回に引き続き,”Progressive Photon Mapping: A Probabilisitc Approach”の雑な和訳をしていきます。
今回は,論文のメインとなる4章3節のアルゴリズムからです。

 

4.3 Algorithm

このセクションでは,これまでに提示され理論に基づいた実践的なアルゴリズムの概要を説明します。我々のアルゴリズムは反復方式に修正なしか,あるいは非表示に小さな修正で従来のフォトンマッピングスキームを単純に実行します。アルゴリズムは,任意のローカルな統計量を保持していなくても,オリジナルのプログレッシブフォトンマッピングと同様の収束挙動を示します。さらに,ボリュームメトリックなフォトンマッピングを含んだ,任意のカーネルで動作とするという利点を持ち,漸近解析を用いて\(N\)回のイタレーション後出力するピクセルの分散値の予測を近似することができます。我々のアルゴリズムの大まかな概要を図3で示します。


pppm_fig3
※図は論文より引用

この手法の主な入力パラメータは,所望するレンダリング時間であり,パラメータ\(\alpha\)は分散および期待誤差の消失と指定された参照半径との間のトレードオフを決定するためのパラメータです。参照半径は最初のイタレーションにおいて放射輝度推定に用いるための初期半径を示しています。外側のループの各イタレーションは,本質的には標準のフォトンマッピングの手順を行います。我々のアルゴリズムにおいて重要なステップは11行目で,式15からの適切な因子によって参照半径を減少させることによって現在の半径に対して放射輝度推定を計算することです。参照半径を指定するために下記のいくつかの可能性を議論します。メインループのイタレーションは互いに独立であり,必要に応じて並列実行することが可能であるということに留意してください。従来のプログレッシブフォトンマッピングのアプローチでは,これは不可能です。なぜかというと,各イタレーションから次へ移る際にローカルの統計量を持越しする必要があるためです。

蜂須賀[2008]によって提案されたものと同様に,我々は参照半径を異なる3つの方法で指定することを実験しました。最も単純なオプションはシーン全体に対して,グローバル参照半径\(r_{1}\)を使用することです。この場合では,各イタレーションに対して,グローバル半径が式15によって直接与えられます。このアプローチの利点は,アルゴリズムにおいて11行目を外側のループへと移動することが可能となり,各視経路に対してローカルな参照半径を計算する必要がなくなるということです。我々は今,ブラックボックスのように,標準のフォトンマッピングアルゴリズムで内側のループを実行することができます。ここでは,放射輝度推定に対して適切な半径を指定することができることだけが必要となります。

別の方法として,ピクセルのフットプリントを逆射影することによって視線ごとにローカルの参照半径\(r_{1}(x)\)を計算することができます。ここで,\(x\)は視経路における衝突点を示しています。レイの差分は反射や屈折を含んで使用することができます。このアプローチの利点は,放射輝度推定によって導入されたブラーがピクセルサイズに関して画像全体でほぼ一定に保つことができます。デメリットとして,各視経路に対して逆射影の計算を行う必要があるということです。

3番目のオプションは,放射輝度推定が行われる位置\(x\)からフォトンマップにおける\(k\)-最近傍への距離としてローカルの参照半径\(r_{1}\)を定義することです。我々はいかなるデータも保存したくないので,各放射輝度推定に対して,この参照半径を再計算します。ここでも,式15を用いて現在のイタレーションに対する減少した半径を得ます。この方法の欠点は,実際の放射輝度推定について減少された半径はこれらのフォトンの一部だけを使うかもしれないですが,各イタレーションにおいて\(k\)個のフォトンを収集することを常に必要とするということです。この計算のオーバーヘッドは,レンダリング時間の増加を招く可能性があります。ローカル参照半径を使用した場合に,ある与えられたピクセルに対する参照半径はイタレーションの間でステップからステップへで変わる可能性があります。例えば,視経路に沿ったピクセルのフットプリントの逆射影は変わる可能性があります。なぜかというと,視経路は各イタレーションにおいて正確に同じではない可能性があるからです。ピクセルについて分散および平均誤差の期待値はゼロに収束するままであり(式9),1ピクセルに対する参照半径がある最大値と最小値\(^{1}\)によって拘束されていると想定することができます。各イタレーションにおいて,参照半径の最大値(あるいは常に最小値)を常に使用する場合に収束したままであるということを観測します。それゆえ,各イタレーションにおいて最大値・最小値間で任意の参照半径を使用する場合にも収束を得ます:分散は,最小値を常に使用する場合により小さくなり,期待誤差は参照半径の最大値を常に使用する場合により小さくなります。

 


\(^{1}\)おかしな場合を扱うために,参照半径はユーザによって指定された最小値と最大値にクランプする必要になる場合があります。例えば,光線の差分がゼロ領域のフットプリントをもたらす場合や,\(k\)-最近傍への距離が完全に暗い領域内で非常に大きくなる場合などでは,これは必要になりえます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)