論文読み「Spherical Voronoi Directional Appearance as a Differentiable Partition of the Sphere」
X で流れてきて面白そうだった「Spherical Voronoi Directional Appearance as a Differentiable Partition of the Sphere」という論文を読んだので、雑に覚え書きのメモを書いておきます。
📢📢📢 𝐒𝐩𝐡𝐞𝐫𝐢𝐜𝐚𝐥 𝐕𝐨𝐫𝐨𝐧𝐨𝐢: directional appearance as a differentiable partition of the sphere
— Andrea Tagliasacchi 🇨🇦 (@taiyasaki) December 17, 2025
– Project: https://t.co/mUPYvL887s
– Paper: https://t.co/v1SZrVfVoA
– Colab: https://t.co/WLJDMpv7Yu
Project led by 𝐅𝐫𝐚𝐧𝐜𝐞𝐬𝐜𝐨 𝐝𝐢 𝐒𝐚𝐫𝐢𝐨 (graduating!) pic.twitter.com/iU8AauU8P0

断りが無い限り、図表は paper からの引用です。
論文の内容メモ
近年、novel view synthesis やリアルタイムレンダリングの分野で 3D Gaussian Splatting (3DGS) という手法が注目されています。
この論文では 3D Gaussian Splatting (以下 3DGS)の各ガウシアンの方向依存の色を表現する手法に着目しています。
従来手法
従来、Spherical Harmonics (以下 SH) を使って方向依存の色を表現する手法がよく使われてきました。
SH は次のような式で表されています。

が最適化する係数で、は実 SH 基底関数です。
SH 自体は非常に良い数学的性質を持っていて、直行基底の形をしており、ロス関数は滑らかで大域的なサポートがあることで最適化は簡単ではあるようです。
しかし、この方法ではより高周波なシグナルを表現しようとすると SH の次数を上げる必要があり、大量のパラメータが必要になります。 現実的なパラメータ数を使うと高周波なシグナルを表現するのが難しくぼやけたようなシグナルしか表現できない、という問題があります。
ピークのあるようなシグナルを表現しようとすると次数を上げてもリンギングのアーティファクトが出たりするようです。

このため SH を利用する 3DGS では、特に glossy な表面の鋭いスペキュラ反射の表現が苦手で、これが今の 3DGS の画質のボトルネックになっているようです。
その他の球面上のシグナルの表現方法として mixture of Spherical Gaussians (以下 SG) という手法と Spherical Betas (SB)という手法があります。
SG は以下のような式で表されます。

球面上にガウス関数を巻き付けたようなローブを複数組み合わせたものとして定義されています。 各ローブがという平均方向とという鋭さとという大きさを持っています。
mixture of SG の最適化は初期値にかなりセンシティブで最適化が不安定です。 ローブが本来の信号のピークと逆方向を向いているときに、その勾配が非常に弱くなり、またという鋭さのパラメータが大きい場合も更新を不安定にさせます。
SB は以下のような式で表されます。

SB は SG を拡張したもので非対称で bounded なサポートをローブに持たせています。 とで SG よりよりフレキシブルなローブの形を作れるので、よりシャープで捻れたようなシグナルを少ないローブで表現できます。 一方でこのフレキシブルな性質がさらに最適化を不安定にさせる原因にもなっています。
Spherical Voronoi (SV)
そしてこの論文で定義するのは Spherical Voronoi (以下 SV) という手法です。 これは球面上の soft な Voronoi を利用した表現方法になっています。
ここで、SV はという k 個のサイトベクトルとという k 個の大きさのパラメータを持っています。
これらのパラメータから与えられた引数に対して関数を評価する式の形は次のようになっています。

ここで、重みは次のように定義されます。

これは softmax 関数で、は温度パラメータです。
与えられた引数に対して、各サイトベクトルとの内積を計算しを掛けて、その最大値を取る max 関数の代わりに、softmax 関数を使っています。
このによって、各パーティションがどのくらい尖っているかを示します。

max 関数ではなく softmax 関数を使うことで、ハードな Voronoi からより滑らかなシグナルまでを扱えます。 softmax 関数は微分可能で最適化によく使われる良い性質を持った関数です。
このと、そしてのパラメータを最適化することで、球面上のシグナルを最適化していきます。
実験内容
この論文では 2 つの GS でのレンダリングタスクで SV を使った場合を評価しています。
1 つ目は直接 GS の outgoing な色を SV で表現するタスクです。 これは非常にシンプルな定式化ですが、一方で glossy な表面のスペキュラ反射は非常に複雑な関数であり、スパースな写真のみからフィッティングするというのは難しいタスクになります。
そこで、表面の法線ベクトル n を同時に学習してその法線ベクトルと反射のシグナルという形に分解して学習するタスクを 2 つ目のタスクとして行っています。
法線 n 自体は視点非依存なので安定して学習できることが期待でき、各位置での反射はいわゆる reflection probe のようになっており、位置近傍で滑らかに似たようなシグナルになることが予想され扱いやすいと思われます。
この論文では学習可能なライトプローブという形で後者の reflection probe 成分を表現しており、SV で表現される light probe の配置とシグナルを最適化することを提案しています。 微分可能レンダリングに学習可能なライトプローブを持ち込んだ最初の例だと言っていました。
この light probe を組み込んだ 2DGS として次のようなものを提案しています。
各 splat にはラフネス r という 0 から 1 までの実数値と、diffuse 色 d という 3 次元のシグナルデータを持たせます。 2DGS の結果として G-Buffer に位置と法線とラフネスと diffuse 色を出力します。
最終的なシェーディング結果は diffuse 色にスペキュラの色を足したものとして表現します。
![]()
ここで、は位置によって変化する近傍の SV と、位置によらない遠景の cubemap の値を保管したものとして次のように表現されます。
![]()
が遠くの学習可能な cubemap で表現される値です。
は空間に配置された light probe の SV から計算される値です。 各 probe は位置とブレンドウェイト、そして SV のパラメータを最適化するパラメータとして持ちます。
各 surface の位置で、k-nearest な probe をクエリした後に、それらの距離逆の重みを使って weight を与えてその weight と probe 自体の重みを掛けたものを掛けて足し合わせたものとしてを計算します。



ここで各表面のラフネス R を使って各 splat の滑らかさを決めるを次のように決定します。

を直接学習するのではなく、各 splat が持つ学習可能パラメータ R から計算するようにしているようです。 とはハイパーパラメータです。
実験結果
1 つ目の実験では Beta Splatting という手法をベースとして採用しています。
ここで、各 splat の SV には 8 つのサイトベクトルを持っており、1 つのサイトベクトルにつき方向 3float と放射輝度 3float で 6float、合計 48float のパラメータを持っています。 これは L=3 の SH のパラメータ数と合わせた形になります。 これにより 1 つの splat あたり 48 の学習可能なパラメータがあることになります。
結果としては他の SH や SG や SB より高い PSNR を達成し、さらにニューラルベースの radiance field 手法である Zip-NeRG というクオリティが高い手法に比べても上回ることもあるとのことです。

2 つめの実験では 2D Gaussian Splatting (2DGS) というより精度の高い法線推定が可能な手法をベースとした手法を採用しています。
実験設定としてプローブ数は合成シーンでは 128 個、実世界シーンでは 1024 個を使っています。 それぞれ 2048 のサイトベクトルを持つ SV としています。
結果は特定のデータセットでは SOTA の性能が出ており、Ref-Real でも競争力ある数値を記録した。
特に、おなじ 2DGS をバックボーンとする Ref-GS を僅かに上回っており、Ref-GS は MLP デコーダーを利用しているがこの論文の手法は explicit な手法であるという点が特筆すべき。

Probe についての Abration StudytositeSG や SV や Cubemap を利用したものと比べたが、やはり SV を利用した場合が良い結果になったとのこと。

ニューラルネットワークを使わずに高周波な微細な構造を表現できるという点を著者らは強調していました。
訓練時間と推論時間について。
1 つ目の実験で使ったサイトベクトルの数が少ない場合は軽量な計算負荷なので SH や SG と変わらないとのこと。
2 つ目の実験のように反射ベースの GS では deferred shading のための 2 パスのレンダリングが必要だったり、最近傍の SV をクエリし補間するのにコストが発生するためオーバーヘッドがある。 そのためオリジナルの 3DGS よりは 0.45 倍の速度になっているとのこと。 ただし、反射ベースのモデリングの SOTA の Ref-GS よりは高速であるとのこと。
学習時間も同様で、プローブ最適化による負荷がかかるが全体のコストが 2.43 倍というのは十分な競争力だろうとのこと。
感想・コメント
SH より方向と強度を与えることで陽的に尖ったシグナルを表せる方法でありつつ、softmax のおかげで SG よりも学習が安定するというのは面白い手法に見えます。
一方で、この論文ではあくまで Gaussian Splatting 系で使うという観点でしか評価実験をしていませんでした。
SH や SG は Gaussian を Splat しない従来のグラフィクスでもよく使われるものだったので、そのような部分で SV に置き換える形で使うとどうなるかは気になります。
低次の SH を diffuse 用の light probe として使うところはあまり置き換えても仕方ない気がしますが……。
一方で、リアルタイム GI 用の radiance cache とかパスガイディングの mixture of vMF とか、そのあたりの方向依存のシグナルや pdf の表現に同じようなものを使えないのかは気になります。
また、気になったのはあくまで Gaussian Splatting として全体を一括で最適化する方法しか与えられていない点です。 例えばリアルタイムのパストレーシングなどのように 1 フレームにつき 1 サンプルの例を飛ばしてそれを時間軸で蓄積させながら方向を持ったシグナルを最適化していくような場合に、この SV をうまく使う方法を考えてみるのは面白そうです。
reflection probe の cubemap の代わりに SV を使うとかも面白そうではありますが、どのくらい実用的になるかはわかりません。
今回の実験での学習可能 reflection probe として SV を使う際にサイトベクトルが 2048 も利用しているとのことで、めっちゃパラメータ数が多いのが気になりました。 reflection probe として使えるくらいに解像感のあるシグナルを表現するには結局サイトの数を増やしまくる必要はあるようです。
このパラメータ全部を内積を取って足し合わせないといけないので、テクスチャフェッチ 1 回の cube map と比べて SV で reflection probe を扱うのはコスト的にどのくらいなのかとかが気になりました。
3DGS では学習可能なのを良いことにラフネスを使って SV のを制御して反射の滑らか具合を変えていました。 一方で一般的なリアルタイムグラフィクスの IBL とかはもう少しラフネスに合わせてちゃんとした計算をしてラフな画像を作っていたりもするので、そういう意味でも SV で reflection probe を置き換えるのはどうなのかは気になります。