📷

3DGSについて

に公開

目的

NeRF 時代で時間が止まっていたので,簡単に 3DGS についてまとめてみる.

3DGS とは

3D Gaussian Splatting の略.高品質なリアルタイムでの新規ビュー合成(Novel View Synthesis)の手法の一つ.
これまでは NeRF(空間の各点に色と密度が連続的に分布する関数として表現)が使われていたが,

  • 計算が重い
  • リアルタイムでは困難という課題があった.

NeRF のように,連続関数を直接評価する代わりに,シーンを多数の 3D ガウス分布の集合で近似する.

各ガウスが持つ情報

従来の Multi-View Stereo 再構成を必要とする点群ベースの手法とは異なり,SfM 点のみ必要とする.

  • 位置(3D 座標)
  • 形状(異方性共分散,スケール+回転,3 次元スケール,クォータニオン回転 ⇨7 次元)
  • SH 係数(色,球面調和関数)
  • 不透明度

ガウス分布の異方性により,薄い構造などの複雑な形状をより表現できる.
これらのガウスと,カメラから見た時の投影面に,ぼかした点(光の粒,スプラット)として高速にレンダリングする.(Splatting)
GPU での並列化が容易で、1080p で 30fps 以上を達成。

[補足] 球面調和関数とは

球面調和関数(Spherical Harmonics, SH)は,球面上で定義される関数を表現するための直交基底関数の集合.
フーリエ級数が 1 次元の周期関数を三角関数の和で表現するのと同様に,球面調和関数は球面上の任意の関数を加重和で近似・表現することができる.これにより、各点から見える方向ごとの色(輝度)を効率的に近似できる.特に低次の球面調和関数を使うことで、少ないパラメータで滑らかな照明や色の変化を表現できるため、リアルタイムレンダリングなどで重宝。

課題点

  • 動的シーンには対応できていない
  • メモリ要件:複雑なシーンでは大量のメモリ消費
  • 極端な境界反射面

3DGS を軽量に試すための準備

以下を準備すればいける.時間が出てきたら試したい.

  • SfM 用:COLMAP
  • 3DGS の動作用:OpenSplat
  • 編集用:supersplat
  • 環境:LibTorch(C++で PyTorch が使えるライブラリ)

3DGS に関するサービス

  • LumaAI

  • Scaniverse

  • Polycam

  • KIRI Engine

  • 3DGS Render Blender Addon by KIRI Engine

    • SDGS ファイルのインポートからペイント、編集、メッシュの 3DGS への変換、複数の 3DGS の統合(マージ)、レンダリング、エクスポートまで
GitHubで編集を提案

Discussion