✨ 3D Gaussian Splatting
2023年に登場した革新的な3Dシーン表現技術。
ガウシアン楕円体による高品質・リアルタイムレンダリングをブラウザで検証。
Splat ビューア
GaussianSplats3D によるブラウザレンダリング
技術解説
Gaussian Splatting の仕組み
3DGS とは?
3D Gaussian Splatting は、シーンを半透明のガウシアン楕円体の集合として表現する手法。 各ガウシアンは位置・共分散行列(形状)・色・不透明度をパラメータに持ち、 ラスタライゼーションベースのレンダリングによりリアルタイム表示が可能。
NeRF との比較
NeRF(Neural Radiance Fields)はレイマーチングベースで計算コストが高く、リアルタイム表示が困難。 3DGS はラスタライゼーションベースのため100倍以上高速で、 同等以上の画質をリアルタイムで実現。学習時間も大幅に短縮。
学習パイプライン
入力: COLMAP のスパース点群 + カメラパラメータ
初期化: 各点をガウシアンとして初期配置
最適化: 微分可能レンダリングで位置・形状・色を反復最適化
出力: .ply / .splat ファイル(数万〜数百万ガウシアン)
ブラウザ表示技術
GaussianSplats3D: Three.js ベースのWebGLレンダラー
ソート: CPU/WASM でスプラットを深度ソート
最適化: Octree カリング、LOD 対応
ファイル: .ply / .splat / .ksplat(独自圧縮形式)
技術比較
| 特性 | 3D Gaussian Splatting | NeRF | 点群 (Point Cloud) | メッシュ (Mesh) |
|---|---|---|---|---|
| レンダリング速度 | ⚡ 30-200 FPS | 🐢 0.1-5 FPS | ⚡ 60+ FPS | ⚡ 60+ FPS |
| 画質 | ★★★★★ | ★★★★★ | ★★★☆☆ | ★★★★☆ |
| 学習時間 | ⏱️ 5-30 分 | ⏱️ 数時間〜 | 不要 | ⏱️ 1-2 時間 |
| ファイルサイズ | 50-200 MB | 5-50 MB | 10-500 MB | 5-100 MB |
| ブラウザ対応 | ✅ WebGL | ⚠️ 重い | ✅ Three.js | ✅ Three.js |
| 編集性 | ⚠️ 限定的 | ❌ 困難 | ✅ 容易 | ✅ 容易 |
ワークフロー
写真から Gaussian Splatting まで
Step 1: 写真撮影
対象シーンの多視点写真を撮影(20〜200枚)。オーバーラップ60%以上推奨。
Step 3: Gaussian Splatting 学習
COLMAP出力を入力として、3DGS を学習。GPU 環境で 5〜30分。
python train.py -s /path/to/colmap_output -m /path/to/output --iterations 30000
Step 4: ブラウザ表示
学習結果の .ply を .splat に変換し、GaussianSplats3D でブラウザ表示。