A Spherical Cap Preserving Parameterization for Spherical Distributions [Dupuy 2017]
A Spherical Cap Preserving Parameterization for Spherical Distributions – Unity Blog
早速ブログ放置しかけてたけどしれっと再開。
SIGGRAPH 2017 の論文。
球面上に定義された分布の表現方法として、 Spherical Pivot Transformed Distribution (SPTD) というものを提案している。 これは任意の spherical cap 上、またはそれを組み合わせた領域上での積分が便利に扱えちゃうよということらしい。
ところで spherical cap というのは平面で切り取った球の一部で、例えば半球は spherical cap の一種である。 流石に日本語で対応する言葉がありそうだがぶっちゃけわからないので以下とりあえず球形キャップと呼ぶ。
SPTD は定数分布やコサイン分布など簡単な球面分布を、特殊な四元メビウス変換で写した像として定義されている。 なんだかヤバそうな名前のこの四元メビウス変換というのはクォータニオンの移動、拡縮、回転、鏡映、球面反転を一般化したものらしい。 多分アフィン変換のすごい版だと思う(雑)。
しかしこの論文ではあまりややこしい使い方はしておらず、
変数を減らし特殊化した四元メビウス変換として、
『球面上の点 を球面内の点
を軸として反対側の球面上に転写する変換
』が使われている。
大体以下の図の感じである。
上記の動画でも 4 分すぎあたりから説明されているので見るとイメージが掴みやすい。

この の重要な性質は、入力の分布を
、 出力の分布を
とすると、
の積分が解析的に解ければ
の積分も解析的に解け、
が重点サンプリング可能なら
も重点サンプリング可能であるということである。
また、
を球形キャップ上の領域
で積分した値は、
を
で積分した値と等しく、
これは積分領域が複数の球形キャップの和・差・積・排他和であるときも同様である。

この論文中での SPTD の使い道ひとつ目は、BRDF の近似である。
軸 を動かすと単純な
から出力した
も
色々と動かせてちょっと複雑な模様も作れる気がする。
そこで、じゃあ解析的に解ける
から BRDF を近似するような
を作る
をあらかじめ求めておいてやれば、
であることから、
解析的に解ける
の積分で BRDF についての積分値が求まるじゃんということになる。
ただし、じゃあ一般のレンダリング方程式がこれで解析的に解けるかというともちろんそんなことはなく、
これを輝度の計算に使用可能なのは、入射する輝度が積分領域に渡って一定で、積分領域が球形キャップ(またはその組み合わせ)である場合に限られる。
つまり球形光源からの直接光からの影響を計算する場合にこの方法を使用することができる、ということである。
球形キャップの組み合わせも領域として使えるので、
遮蔽条件も球形キャップの組み合わせとして積分領域に組み込むことで変な光の漏れ防止ができたりする。
弱点としては、
でそんなに複雑な分布は近似できないということで、
例えばこの論文中だと GGX microfacet モデルの反射を斜めから見たときの長いテールが再現できなくなっている。
使い方のふたつ目は、
BRDF に従った重点サンプリングへの適応である。
これは、分布に従ったサンプリングが可能な を入力とした
で BRDF を近似し、
上でのサンプリングの写像を求めることで、
直接の重点サンプリングができない BRDF に近い確率分布でサンプリングを行ってやろうというものである。
こちらも球形キャップ(またはそれを組み合わせたもの)の積分領域について考えることができるので、
この論文では球形光源の覆う立体角と BRDF の分布を組み合わせた重点サンプリングを行っている。
ひとつ目と異なって間接光の計算にも使えそうな気がするが論文中では
上述のような直接光についての計算しか書いていない気がする。