3DGS Surface Reconstruction
3D Gaussian Splatting は novel view synthesis に強い表現ですが、そのままでは explicit surface mesh を持ちません。Simulation、collision、editing、asset 化のためには、Gaussian primitive から surface を抽出する必要があります。
なぜ surface extraction が難しいのか
3DGS の Gaussian は、surface に沿った薄い primitive として振る舞うこともあれば、透明な volume のように重なって見えることもあります。Rendering loss だけでは、見た目が合っていても geometry が厚くなったり、floaters が残ったりします。
Rendering loss は次のように書けます。
しかし、この loss は image space の整合性だけを見るため、surface として薄いか、normal が一貫しているかを直接保証しません。
Density field と level set
Gaussian 集合から連続的な density field を作ると、次のように書けます。
Surface は density の level set として抽出できます。
この式の気持ちは、「Gaussian が多く重なっている場所を物体 surface と見なし、一定の density の等値面を mesh として取り出す」というものです。ただし、threshold の選び方で surface の厚みや穴が大きく変わります。
Normal consistency
Surface reconstruction を安定化するには、rendering から得られる depth normal と Gaussian の normal を一致させる regularization が有効です。Gaussian の最も薄い方向を normal とし、depth map から計算した normal を とすると、次のような loss が考えられます。
この式の気持ちは、「Gaussian の楕円体が向いている surface normal と、rendered depth から見た surface normal を揃える」というものです。Normal が揃うと、Gaussian が surface に沿って薄く並びやすくなります。
SDF / TSDF との接続
Surface をより明示的に扱う場合、Signed Distance Function を導入し、surface を zero level set として定義します。
Gaussian の中心が surface 近傍にあることを促すには、次の loss が使えます。
さらに Eikonal regularization により、SDF として自然な勾配 norm を保てます。
この式の気持ちは、「Gaussian rendering の速さを使いつつ、surface は SDF の zero crossing として幾何的にきれいに保つ」というものです。
Mesh extraction の流れ
典型的な流れは次の通りです。
3DGS から mesh を作るときは、rendering 品質だけでなく、normal consistency、opacity pruning、floaters removal、hole filling が重要です。
関連ページ
- 3D Gaussian Splatting
- 2D Gaussian Splatting
- Point Clouds, Meshes, and TSDF
- Surface Normals and Normal Maps
主なソース
- SuGaR: https://arxiv.org/abs/2311.12775
- 2D Gaussian Splatting: https://arxiv.org/abs/2403.17888
- 3DGS survey: https://arxiv.org/abs/2401.03890