水鳥コンビナート

CGとかUnityとか

Area-Preserving Parameterizations for Spherical Ellipses

Solid Angle | Research

EGSR 2017 の論文。

モンテカルロ積分中で 面積を持った光源に対しある点 P からランダムにレイをサンプリングする際、 P から見たレイの立体角あたりの確率密度p(ω)が一様になるようにパラメータ化を行う必要がある。 これを例えば単純に光源表面上の点をランダムに選び そこに向かうレイをサンプリングするようにすると、 p(ω)が一様ではなくなり レイのPへの寄与度と選択確率が剥離する為、 結果の分散が大きくなってしまう(寄与度は立体角あたりで大体一定と考えられる 大体)。 つまり重点サンプリング的によろしくない。 この論文ではp(ω)が一定となるようなレイのサンプリングを 特に円盤状の光源に対して行う場合について論じている。

まず、絵のパースとかの話で知られていることだが、 円盤は空間上のどの点から見ても楕円に見える(真円も楕円の一種である)。 故に 円盤はPを中心とした単位球面上に投影した場合には球面上の楕円となり この球面楕円上で一様なサンプリングを行うことが目標となる。

ここで、 そもそも球面上で一様にサンプリングを行うとはどういうことなのかをはっきりさせたい。 球面上のある領域に点を配置するには u,v(∈[0,1]) を球面上の点 f(u,v) に対応させる関数fを構成することになるが、 uv平面上のあるふたつの領域 R1,R2(⊆[0,1]^2) の面積比が f を適用した後の球面上領域の面積比でも保存される性質を この論文は Area-Preserving であると呼んでいる。 そしてここでは特に Area-Preserving なマッピングを行って 球面上の点を生成することを一様なサンプリングの条件としている。 stratified(層化?) な入力を入れたら stratified な出力が得られるのが利点らしい。 多分ブルーノイズを入れたらブルーノイズが出てきてほしいんだと思う。

f:id:mizuooon:20170608195048p:plain:w200 f:id:mizuooon:20170608195128p:plain:w280 [図は論文中から引用]

それで結局そのような点の取り方を球面上の楕円で行う方法についてだが、 この論文ではさらに球面上の楕円を円柱に投射して、そこの面積を基準に考える方法を採っている。 根拠となっているのが Archimedes Hat-Box theorem なる理論で、 これによると球面上の領域の面積はそれを球と同じ半径の円柱に投射した領域の面積と等しいということらしい。 これは上図中の青い線で囲まれた楕円と、それを投影した赤い線の領域に対応する。 軸の取り方は上図のように二種類考えられるがどちらも話は同じである。 円柱上の点と球面上の点は一対一に対応しているので、 面積ベースの話がしやすい円柱上で一回 Area-Preserving な点を求めてやり、 それを球面上に戻してやる、というのがこの論文のやっていることになる。

実際、 円柱上なら Area-Preserving なマッピングは簡単にできる(理屈としては)。 左図について考える場合は、 パラメータを u,v(∈[0,1]) とすると、 円柱上の面積を u:1-u に分割する線(図中では緑色で示される)を取り、 更にその線を v:1-v に内分する点を取れば、Area-Preserving の要件が満たされる。 右図の軸の取り方をするときも、 u について角度 0~2πu, 2πu~2π の領域の面積が等しくなるように線を引けば同じである。

しかし、 理屈としては とさっき書いたように 実際やろうとすると問題があって、 面積を u:1-u に分ける図中の緑の直線を 解析的に求める方法が知られていないのである。 そこで実装するときには数値計算を行う必要がある。

ちなみに 左図よりも右図の軸設定の方が式の形から精度が出しやすいらしい。 また、右図の軸の方がマッピング時の歪みが小さいことも利点として挙げられており、 論文中では歪みを更に小さくするために入力に逆補正を掛ける方法も紹介されている。 歪みってなんだよ Area-Preserving なんだから良いだろと思ったが stratified な性質を保つには歪みが小さい方が良いらしい。 多分ホワイトノイズを入力にしたら歪んでても関係ない気がする。 正直あまり良くわかってない。

ちなみに元論文を読む際は、 楕円の中心は円盤の中心と必ずしも一致せず、 また楕円の長辺は円盤の直径と必ずしも一致しないことを 知らないと若干引っかかりそうなので注意。 詳しくはパースの話で調べて。