Gaussian Splat とは何か

less than 1 minute read

Published:

前回の記事 では点群までたどり着きました。空間に浮かぶ何千もの点。そのひとつひとつが、 ソフトウェアが確信をもって捉えた植物の一片です。

しかし点群は、まだモデルではありません。あるのは標本点だけで、その間には何も ありません。拡大していけば、植物は隙間へと溶けていきます。

定石としての次の一手

標準的な手順はメッシュを作ることです。点の上に微小な三角形の皮を張り、 隙間を閉じて連続した面にする。

これは見事に機能しますし、コンピュータグラフィックスのほとんどはこの上に 築かれています。マグカップ、車のドア、美術館の彫像 — メッシュはどれもうまく 記述します。それらがまさにメッシュの前提そのものだからです。すなわち、 中身が詰まっていて、不透明で、内と外の境界がはっきりしている物体。

植物は、その前提をひとつ残らず壊す

葉は中身の詰まった物体ではありません。薄い一枚のシートであり、「内側」が ほとんど存在しない。だからメッシュは、それをほぼ密着した二枚の面として 表すか、厚みのない一枚の面として表すしかなく、どちらも収まりが悪い。

葉は不透明でもありません。窓にかざせば光が透けて見えます。三角形は「ある」か 「ない」かのどちらかで、部分的にという語彙を持ちません。

そして群落は自分自身を隠します。葉が葉を遮るため、点群にはどのカメラも 見なかった領域が必ず残ります。メッシュ化の処理はそこで何かをせざるを得ず、 実際にしているのは推測です — 隙間に橋を架け、たまたま近くを通っただけの 二枚の葉を一枚に溶接し、あるいは本当は続いていた葉身の縁をぎざぎざのまま 放置する。

同じ葉を二通りに表した図。左は粗い三角形メッシュで、平坦な面と切り落とされた先端、埋められた穴がある。右は葉身に沿って伸びた柔らかい楕円の集まりで、縁に向かって薄れていく。
破線が実際の葉です。メッシュはどこであれ正確な面を確定させねば なりません — 写真が何も捉えなかった場所でさえも。一方スプラットは、 そもそも面というものを主張しません。

最後の点が、私にとっていちばん重要です。メッシュは確定を強いられる。 どの三角形も「面はまさにここにある」という断定です。そして証拠が乏しい 場所でも、やはり断定してしまう — 黙って、どこが実測でどこが捏造かを示す 印も残さずに。

別の表現へ

そこで面を手放します。一枚の皮の代わりに、多数の柔らかく半透明な粒で植物を 記述するのです。

粒のひとつひとつは3次元ガウシアンです。中心がもっとも濃く、外側へなめらかに 薄れていく、どこにも輪郭を持たないぼんやりした楕円体。持っている数値はごく わずかで、位置、形と向き、色、そして不透明度だけ。ひとつのシーンは、それが 数十万から数百万個、重なり合ってできています。

描画は、すべての粒を画像平面へ投影し、奥行き順に並べ、手前から奥へ合成する だけ。レイトレーシングも面との交差判定もありません。平面図形の合成はGPUが きわめて得意とする処理で、だからスプラットのシーンはリアルタイムで描けます。 名前もこの工程から来ています — 粒を画面へsplat(叩きつける)のです。

粒はどこから来るのか

設計されるのではなく、当てはめられます。

前回の点群から始め、各点にひとつずつ粒を置く。次に、実際の写真がある カメラ位置からその集まりを描画し、二枚の画像を比べます。当然、一致しません。

決定的なのは、この描画がすべての粒のパラメータについて微分可能な関数だと いうことです。つまり粒ごとに、位置をどちらへ動かし、形をどう伸ばし、色を どうずらせば描画が写真へ近づくかを計算できる。それを手持ちのすべての写真に わたって何万回と繰り返せば、粒は撮影したあらゆる視点を再現する配置へ 落ち着いていきます。

最適化は個体数も制御します。誤差が頑固に大きいままの場所では粒を分割・複製 して密度を上げ、不透明度がほぼ零へ落ちた粒は削除する。植物に何個の粒が必要か を、人が指定することはありません。

そして葉が何であるかも、誰も教えません。唯一の指示はこうです — お前の描画が、私の写真のように見えること。

なぜこれが植物に向くのか

楕円体は伸びます。粒は葉身に沿って薄い円盤へ潰れることも、茎や巻きひげに 沿って細長い針へ伸びることもできる。この方向の自由度 — 異方性 — がはじめから 備わっているので、細い構造に多数の粒は要らず、うまい形の粒があればよい。

不透明度は粒ごとに連続値をとるため、透過性や柔らかな縁は近似ではなく素直に 表現できます。そしてメッシュには持ち得ないものをこの表現に与えます。写真が 曖昧だった場所では、粒はただ薄いまま留まる。面を捏造する代わりに、 主張することを控えるのです。

位相を間違える余地もありません。近くを通り過ぎる二枚の葉は、二つの粒の 集まりのままです。溶接は起こりません。

それでも得られないもの

正直に、二つの限界を。

第一に、これは描画のための表現であって、計測のための表現ではありません。 スプラットのモデルに「葉の面は正確にどこか」と尋ねても、答えはひとつに 定まりません — そもそも面を引かなかったことこそが要点だからです。 ぼんやりした粒の雲から葉面積を取り出すのは、参照ではなく相応の仕事です。

第二に、そしてこの連載にとってより重要なのは、スプラッティングが前回の問題を そっくりそのまま引き継ぐことです。粒は、点群が置かれていたのと同じ 任意単位の空間に住んでいます。3D Gaussian Splatting が改善するのは、モデルが どれだけ忠実に植物のように見えるかであって、その植物がどれだけ大きいかに ついては何ひとつしません。

こうして手元には、美しく高忠実度な植物のモデルが残りました — 大きさの わからないモデルが。


連載の次回:スケールを一度も確定させずに、植物の形質を測る方法。