ビデオからガウシアンスプラット — クリップを歩けるシーンに変える
10:00 JSTビデオグラファーや写真家にとって、映像から XR シーンへの最短ルートは ガウシアンスプラッティング です。先に取り上げた 写真からスプラット や スマホスキャン のパイプラインは静止画や専用スキャナから始まりますが、こちらは多くのクリエイターがすでに撮っている ビデオクリップ から始めます。被写体の周りをゆっくり一周する動きは、フレーム単位で見ればフォトグラメトリのリグが生み出すマルチビュー入力と同じです — そして最新のツールは、それをキャンプの他の参加者も使う WebXR ビューア にそのまま読み込めるスプラットに変えてくれます。
▸ Postshot · Nerfstudio + gsplat · Brush(クロスプラットフォーム) · SuperSplat エディタ/ビューア
2 つの領域:静止シーン vs 動く被写体
誰もが最初につまずく分岐:被写体は静止しているか、動いているか?
- 静止シーン(3DGS) — カメラが動き、世界は静止。像、部屋、製品の周回撮影。これは解決済みで週末向きのケースです。写真セットと同じ、通常の 3D ガウシアンスプラッティング。
- 動く被写体(4DGS) — 話す人、水、フレーム間で変化するもの。これには 4D ガウシアンスプラッティング(時間次元を持つスプラット)が必要で、まだ研究段階です:4DGaussians、Deformable-3DGS、Luma 系のボリュメトリックキャプチャ。学習は重く、鑑賞も難しい。ストレッチゴールとして扱いましょう。
2.5 日のビルドなら、静止ケースを狙ってください。動かない被写体を選んで周回します。
スプラット向けの撮影
学習が気にするのは映像美ではなく、視差とカバレッジです:
- ズームせず、動く。 焦点距離は固定で、物理的に被写体を回り込む。
- あらゆる角度をカバー — 高い位置と低い位置のパスも。隙間はスプラットの穴になります。
- 均一で拡散した光。途中で露出を変えない — 不整合が焼き付きます。
- ゆっくり一定速度 が速い動きに勝ります — モーションブラーは大敵。歩く速さで 30〜60 秒あれば十分です。
フレーム抽出
スプラット学習器は画像を取ります。ffmpeg でクリップをサンプリング — 毎秒 3〜6 フレームが良い出発点です:
ffmpeg -i orbit.mov -vf "fps=4,scale=1600:-1" frames/%04d.jpg
ほぼ同一のフレームが多すぎると、ディテールを増やさず学習を遅くします。少なすぎると structure-from-motion が情報不足になります。鮮明でよく分散した 150〜300 枚が健全な目安です。
スプラットを学習する
セットアップの少ない順に、3 つの実用的な選択肢:
- Postshot(Windows、無料)— ビデオまたはフレームフォルダをドラッグするだけで、structure-from-motion と 3DGS 学習を端から端まで実行し、
.plyを書き出します。最も手間が少ない道。 - Nerfstudio +
gsplatバックエンド —ns-process-data video --data orbit.movで COLMAP がカメラ姿勢を求め、ns-train splatfactoが学習します。クロスプラットフォームでスクリプタブル、CUDA 向き。 - Brush — macOS・Windows・Linux、さらにブラウザでも動く wgpu 製の学習器。CUDA 不要で、ラップトップ構成が混在するチームに向きます。
3 つとも標準的なガウシアンスプラットの .ply を書き出します。SuperSplat でコンパクトな .splat/.spz 形式に変換すると読み込みが速くなります。
WebXR で鑑賞する
ここでスプラットがヘッドセットと出会います。キャンプですでに使われている 1 ファイルの WebXR エンジンが、スプラットを直接読み込みます:
- Babylon.js は一次サポートあり —
await SceneLoader.ImportMeshAsync(null, "", "scene.splat", scene)で、Babylon WebXR スターター のシーンにスプラットを落とし込みます。 - Three.js は
GaussianSplats3D(mkkellogg)経由で three.js スターター に読み込みます。 - PlayCanvas / SuperSplat はコードなしでビューアを URL として公開します — Quest、PICO、Vision Pro のブラウザで開くだけ。
静止スプラットはインタラクティブなジオメトリではなく固定シーンですが、自分のキャプチャの中に Quest 3 で立つだけでも強いデモになり、注釈用に ヘッドセット内アートツール とも自然に組み合わさります。
注意点
- 静止被写体のみ — 4DGS の沼に踏み込まない限り。動く人物は素の 3DGS でひどくゴースト化します。
- 学習のボトルネックは VRAM — クラウド GPU や Brush の軽さが控えめなラップトップでの代替策です。
- スプラットは転送が重い — 標準型ヘッドセットに送る前に SuperSplat で間引き、快適な WebXR フレームレートのため 100 万スプラットを十分下回ることを目標に。
- 反射・透明な面は解法を惑わせます — ガラス、クロム、水はフローターを生みます。
関連リンク
- Postshot(Jawset) · Nerfstudio ドキュメント · gsplat · Brush
- SuperSplat エディタ/ビューア · three.js 向け GaussianSplats3D · Babylon Gaussian Splatting
- 4D / 動的: 4DGaussians · Deformable-3DGS
- 関連: スマホ撮影スプラット(Scaniverse) · 写真からスプラット(SHARP) · 360 カメラで 3DGS · LichtFeld + MCP · Three.js WebXR スターター
- ハッカソン詳細 — 参加資格、チーム編成、AI ポリシー
- Luma で参加申し込み
ご質問は お問い合わせ ページからどうぞ。