3D Gaussian Splatting (3DGS)†
3D Gaussian Splatting(3DGS)は、空間を無数の3次元ガウシアンの集まりとして表現し、それを画面へ投影(スプラット)して描画する手法です。複数枚の写真から3次元空間を復元する技術で、2023年にKerblらがSIGGRAPHで発表しました。
同じく写真から空間を復元するNeRFがニューラルネットワークの推論によって色と密度を求めるのに対し、3DGSは明示的な粒子をラスタライズして描きます。このためリアルタイムに近い速度で表示でき、学習も比較的短時間で終わります。品質の安定性と計算量という、それまでの手法が抱えていた課題を大きく改善しました。
ハンディ型3Dスキャナで空間を歩くだけで写実的な3次元データが得られるようになった背景には、この技術があります。
従来の点群との違い†
従来の3Dスキャンは、空間を点の集まりとして記録します。これが点群です。座標は正確に測れますが、点と点のあいだには隙間があります。
遠くから眺めているうちは面のように見えても、近づくと隙間から向こう側が透けてしまい、壁が壁として見えません。可視化の観点では、ここが点群の弱点でした。
点をガウシアンに置き換える†
そこで、ひとつの点を、ふわりと広がった楕円状の濃度分布に置き換えます。中心がいちばん濃く、外側にいくほど薄くなる分布、すなわちガウス分布(ガウシアン)です。
隣り合うガウシアンが重なり合うことで隙間が埋まり、点群では透けていた壁が面として見えるようになります。点群が位置と色だけを持つのに対し、3DGSの各要素は、位置と色に加えて、広がり方を表す共分散と、濃さを表す不透明度を持ちます。
異方性ガウシアン†
すべてを同じ大きさの球にすると、細い柱や平らな壁、細長い手すりといった形にうまく沿いません。そこで、ガウシアンひとつひとつに大きさと向きを持たせます。
平らな面には平たくつぶれたガウシアンを、細長い部分には細長いガウシアンを割り当てることで、少ない数で複雑な形状を表現できます。これを異方性ガウシアンと呼びます。
数学的には、各ガウシアンは3次元の共分散行列を持ちます。実装上は共分散行列を直接最適化するのではなく、スケール3成分と回転(クォータニオン)4成分に分解して保持します。こうすると最適化の途中で行列が半正定値でなくなることを避けられます。
写真と見比べて形が決まる†
ガウシアンの大きさや向きを人が指定するわけではありません。撮影した写真と見比べることで自動的に決まります。
まずガウシアンを置いて画像を描き、実際の写真と比較します。ずれている箇所を見つけて、位置・形・色・不透明度を少しずつ修正します。この描画処理が微分可能に作られているため、写真との差を減らす方向へ勾配法で更新できます。
初期値には、SfM(Structure from Motion)で得られる疎な点群を使うのが一般的です。典型的には3万回程度の反復を行います。
複製と分割†
最適化の途中では、ガウシアンの数そのものも増減します。
| 操作 | 状況 | 処理 |
| 複製 (clone) | 表現が足りず、形状を覆いきれていない | 小さなガウシアンを複製して数を増やす |
| 分割 (split) | ひとつのガウシアンが大きすぎて細部を潰している | 分割して小さくする |
| 削除 | 不透明度がほとんど0になった | 取り除く |
足りないところには増やし、粗いところは細かくし、要らなくなったものは消す。この調整によって、必要な箇所にだけガウシアンが集まり、データ量を抑えたまま細部が表現されます。
視点によって色が変わる†
現実の物体は見る方向によって色が変わります。ガラスや金属の反射、つやのある床などがその例です。そこで各ガウシアンは単一の色ではなく、方向ごとの色を持ちます。これは球面調和関数の係数として保持されます。
この色の情報がデータの大部分を占めます。ガウシアン1個あたりの内訳は次のとおりです。
| 項目 | 成分数 |
| 位置 | 3 |
| スケール | 3 |
| 回転(クォータニオン) | 4 |
| 不透明度 | 1 |
| 色(球面調和関数の直流成分) | 3 |
| 色(球面調和関数の高次成分) | 45 |
| 合計 | 59 |
形に関する情報は11成分、色に関する情報は48成分で、およそ2割対8割です。数値シミュレーションの入力として使うときに必要なのは形だけなので、色を持たない点群のほうが軽く扱いやすくなります。
他の手法との比較†
フォトグラメトリとの違い†
フォトグラメトリは、写真から求めた点をつないで三角形メッシュを作り、そこに写真を貼り付けて(テクスチャマッピング)空間を再現します。出力は面を持つモデルなので、そのまま形状として扱えます。
3DGSは面を作りません。点を楕円体に広げ、半透明の粒子として重ね合わせることで空間を表現します。細い枝や葉のように、メッシュ化が難しい対象でも破綻しにくいのが特長です。反面、閉じた曲面がないため、数値解析の形状としてそのまま使うことはできません。
NeRFとの違い†
NeRFは、空間の各点の色と密度をニューラルネットワークで表現します。表現力は高いものの、描画のたびに推論が必要で時間がかかります。
3DGSは明示的な粒子をラスタライズするだけなので描画が速く、リアルタイムに近い表示ができます。学習に要する時間も短くなりました。
実寸を持つことの意味†
写真だけから3DGSを作ることもできます。スマートフォンで撮影した動画からでも生成は可能で、手軽に試す用途には向いています。ただし、物体ひとつを撮るのは得意でも、広い空間を破綻なく作るのは苦手です。
さらに、写真だけでは絶対的な寸法が決まりません。見た目が同じでも、その壁が2メートルなのか3メートルなのかが分からないということです。
LiDARを内蔵したスキャナは、レーザーで距離を測るため、取得したデータに実際の寸法が入っています。寸法があれば、長さが測れ、面積が出せ、図面が描け、そして数値シミュレーションの入力としてそのまま使えます。
SLAM ― 歩きながら位置を見失わない仕組み†
歩いてスキャンするには、スキャナ自身が「いま自分がどこにいるか」を知っている必要があります。これを担うのがSLAM(Simultaneous Localization and Mapping)です。自己位置推定と地図作成を同時に行うアルゴリズムで、周囲の特徴を手がかりに自分の位置を推定しながら、同時に地図を描いていきます。
自己位置推定の方式†
| 方式 | 測る手段 | おおよその測定距離 | 苦手な場所 |
| LiDAR SLAM | レーザーで距離と形状を測る | 300m程度まで | 障害物が少なく特徴の乏しい場所 |
| Visual SLAM | 画像から距離と角度を求める | 100m程度まで | 暗所や模様のない面 |
| Depth SLAM | 深度画像を使う | 20m程度まで | 屋外 |
実機では、これらに加えてIMU(慣性計測ユニット)を併用します。ジャイロセンサーが3方向の回転を、加速度センサーが3方向の加速度を検出し、急な動きや傾きの変化を補います。屋外で絶対座標が必要な場合は、GNSSの測位誤差を基準局からの相対測位で数cm級に補正するRTKを併用します。
環境地図の種類†
| 地図 | 内容 | 主な用途 |
| Feature Map | 特徴点の地図 | 自己位置の推定、ループ検出 |
| Point Cloud Map | 点群の地図 | 距離や体積の計測、測量・点検 |
| Grid Map | マス目に占有の有無を入れた地図 | ロボットの自律移動 |
数値解析の入力として使うのは Point Cloud Map です。
シミュレーションへの流れ†
LiDARとカメラを内蔵したハンディスキャナで現場を歩くと、レーザーで測った点群と、カメラで撮った写真の両方が記録されます。ここから2種類のデータが得られます。
- 写実的な3DGS。見せるためのデータ
- 寸法の正確な点群。解析に使うためのデータ
一度のスキャンで両方が手に入るため、現場の様子を伝える資料と、解析の入力形状を同時に用意できます。弊社では、この点群から流体解析や粒子法シミュレーションの計算領域を作り、実在する空間をそのまま解析する取り組みを進めています。
解説動画†
仕組みをManimで作成したアニメーションで解説した動画です。本ページの図はこの動画から取り出したものです。
応用事例の動画†
3DGSで取得した実空間を数値解析に用いた事例です。
- 実在ヤードの浸水シミュレーション(SPH)
- 都市部の土石流シミュレーション
- 実在の街角に風を流す(格子ボルツマン法)
- 路面電車まわりの空力可視化(格子ボルツマン法)
説明を簡略化している点†
上の説明は直感的な理解を優先しているため、厳密には次の点を省略しています。
- 「点を膨らませる」という説明をしていますが、実際には点群を初期値として最適化するため、最終的なガウシアンの数と位置は初期の点とは一致しません
- 「方向ごとの色」は球面調和関数の低次項による近似です。鏡面反射のような高周波の成分までは表現しきれません
- ガウシアンは半透明の粒子として奥行き順に合成されます。厳密な意味での面ではないため、そのままではメッシュとして扱えません
メッシュ化について†
3DGSは半透明の粒子の集まりであり、閉じた曲面を持ちません。数値解析の形状として使うには、点群やメッシュへ変換する必要があります。実務上は、3DGSを見せるための資料とし、解析には同時に取得した点群を用いるほうが確実です。
参考文献†
- B. Kerbl, G. Kopanas, T. Leimkuhler, G. Drettakis, "3D Gaussian Splatting for Real-Time Radiance Field Rendering", ACM Transactions on Graphics, Vol. 42, No. 4, 2023.
- プロジェクトページ(INRIA)




