概要
スマートフォンで撮影した2D動画から3D Gaussian Splatting(3DGS)データを生成する際、ScaniverseやLumaAIなどのクラウドサービスを使用せず、PCのローカル環境で、無料で、できるだけGUIで実現してみました。
3DGSについての解説は行っていません。
※2026/4/15追記 LichtfeldStudioのビルド版は有料化した旨追記
※2026/2/3追記 360度動画から生成する場合を記事最後に追記しました。
※2026/2/19追記 3DGS生成ツールBrush、および360度動画専用の一貫処理ツール360° Gaussianについて追記しました。
細かいパラメーターの試行錯誤は以下の記事で行っています。
ワークフロー
ffmpegで動画から画像を書き出し → COLMAPでCOLMAPデータ書き出し → LichtFeld StudioでCOLMAPデータを読み込み3DGS生成
使用したツール
- ffmpeg: スマホ2D動画から静止画の抽出
- 360 Video Still Cropper(1.3.1):360度動画から静止画の抽出
- COLMAP(3.13.0): 写真からカメラの位置・向きを推定する処理(アライメント)
- LichtFeld Studio(2026-01-16): 3DGSの生成・編集・書き出し
- Brush(0.3.0): 3DGSの生成・書き出し(LichtFeld Studioの代替)
- 360° Gaussian: 360度動画をインプットとし3DGS生成まで一貫処理
環境
- OS: Windows 11
- CPU: Intel(R) Core(TM) Ultra 9 185H
- GPU: NVIDIA RTX 4070, 8GB VRAM
1. 動画から静止画の抽出(ffmpeg)
FFmpeg公式サイトからダウンロードして使用
下記のようなコマンドで動画を切り出します
1秒間隔で抽出する場合:
ffmpeg -i "動画ファイル名.mp4" -vf fps=1 -q:v 2 "3DGS\images\frame_%04d.jpg"
0.5秒間隔で抽出する場合:
ffmpeg -i "動画ファイル名.mp4" -vf fps=2 -q:v 2 "3DGS\images\frame_%04d.jpg"
パラメータ説明:
-
-vf fps=1: 1秒間隔でフレーム抽出 -
-vf fps=2: 0.5秒間隔でフレーム抽出(より多くのフレームを取得) -
-q:v 2: 高品質設定(1-31、数値が小さいほど高品質)
以下のように画像に切り出せました。
※最初からGUIではないですが、私はダウンロードしたffmpegと動画データを同じフォルダに入れて、Clineに「ffmpegを使って動画から画像を1秒間隔で切り出して」と指示しているのでコマンドも覚えず使っています。
2. アライメント(COLMAP)
COLMAP GitHubのReleasesページからcolmap-x64-windows-cuda.zipをダウンロードし、batファイルでGUIを起動します。
処理手順
下記の記事を参考にしました。
1. プロジェクト作成
File > New Projectでデータベース新規作成&ffmpegで書きだした画像フォルダを選びます。
2. 特徴点抽出
Processing > Feature extractionで以下の設定を行います:
-
Shared for all imagesにチェック(全画像で同一カメラ設定の場合) -
first_octaveを0に設定(計算量が減る。細かい特徴を抽出したい場合は-1のまま[詳細]) -
Extract実行
3. 特徴点マッチング
Processing > Feature matchingで設定:
- 連続画像なので
Sequentialを選択 -
Run実行
4. 復元オプション
Reconstruction > Reconstruction optionsで設定:
-
multiple_modelsのチェックを外す(撮影場所が1か所の場合)
5. 復元実行
Reconstruction > Start reconstructionで開始します。
処理が完了すると、カメラの撮影位置や姿勢が求まっているのが分かります。
6. データ書き出し
Extras > Undistortionでフォルダを指定して書き出します。
注意: 5の処理完了前はUndistortionが選択できません。終了しているかは、Timeのカウント停止しているかなどで判断可能です。
書き出し完了後、以下のようなデータがOutputされます。imagesは入力に使った画像そのままです。
失敗例
狭い室内をスマートフォンの広角モードで撮影したデータでは、最初COLMAP処理に失敗しました。
動画の前半部分は適切に処理されるものの後半で連続性が失われ、後半部分の2枚のみがCOLMAPデータ化される現象が発生しました。
消えたかと思ったデータですが、上のバーのNewerstというドロップダウンを開くと、Model1などとして残っています!
3. 3D Gaussian Splatting生成
COLMAPで生成したデータから3DGSを生成します。LichtFeld StudioとBrushの二つのツールを使ってみました。
パターンA: LichtFeld Studio(多機能GUI)
LichtFeld Studioから最新版をダウンロードして、binフォルダ内のLichtFeld-Studio.exeをダブルクリックして起動します。日本語にも対応しています。
※追記:2026/4/15現在ビルド版は有料化しました。ソースコードはGithubからダウンロードできるので、無料で使いたい場合は自分でビルドする必要がありそうです。
1. データ読み込み
COLMAPのデータをフォルダごと画面にドロップして読み込みます。imagesとsparseフォルダが認識されていますね
2. 学習実行
右のタブのトレーニングを開始でスタートします。
- 各種設定項目がありますが、私はデフォルト設定で実行しました
- 詳細な設定項目についてはこちらの記事が詳しいです
- Bilateral Grid(露出差吸収)やBG Modulation(背景変調)は使える場面が多そうです。
PPISP
約20分で完了
3. 編集機能
「編集モードに切り替え」ボタンを押します。
画面上部のUIを選択して、大きさや向きを変更可能です。
自動水平調整機能や現実とのサイズ合わせ機能は確認できませんでした。Supersplatにある「Splatsの測定とリスケール」機能が便利なので入ると嬉しいですね
4. データ書き出し
ファイル>エクスポートで各種形式を選択して書きだせます。
SOG形式で書き出したところ16MBになりました。
ちなみに現時点では、明示的な「プロジェクト保存」機能は見当たりませんでした
パターンB: Brush(シンプル)
Brushもオープンソースの3DGS生成ツールです。LichtFeld Studioと同様にCOLMAPデータから3DGSを生成できます。
特徴
- 出力形式: PLYのみ(バージョン0.3.0時点)
- 編集機能なし
- LichtFeld Studioと比較して、よりシャープな仕上がりになる傾向があるそうです
詳しい比較については、以下の記事が参考になります:
colmapデータを読み込むと設定画面が出て、STARTを押すとすぐに始まります
インプットの撮影画像と3DGSが、対応した角度で並んで表示されるのが面白いです
出力はControlsを開いてExportボタンからできます
360度動画を使用する場合
360度動画から3DGS生成を行う場合、いろいろ方法があります。
パターンA: 360 Video Still Cropper + COLMAP + LichtFeld Studio/Brush(手動処理)
360度動画から3DGS生成を行う場合、そのままではCOLMAPでアライメントができないため、歪みの少ない画像に切り出す必要があります。
ffmpegで6方向などに分割して切り出すこともできますが、今回は「360 Video Still Cropper」というGUIツールを使用しました。
このツールはffmpegを内蔵しており、GUIで360度動画から任意の向きの静止画を切り出すことができます。
360度動画では上方向は天井や空で特徴点が少なく、下方向は撮影者が映り込んでいることが多いため、画像を確認しながら切り出し範囲を決められるGUIツールは非常にありがたいです!
1. 動画から静止画の抽出(360 Video Still Cropper)
360 Video Still Cropperをダウンロードし、exeファイルを実行します。
デフォルト設定では、重なりを持った状態で上下を除いた8方向に切り出してくれます。今回はデフォルト設定で書き出してみました。
以下のように切り出されました。
2. アライメント(COLMAP)
360 Video Still Cropperで切り出した画像を使用して、上記の「2. アライメント(COLMAP)」と同様の手順でCOLMAPで処理を行います。
8方向の画像を適切に認識し、カメラ位置の推定ができました。
3. 3D Gaussian Splatting生成
COLMAPのデータを使用して、上記の「3. 3D Gaussian Splatting生成」と同様の手順で3DGSを生成します(パターンA、Bのいずれかを選択)。
トレーニングや点の数が足りないのか、デフォルト設定だとやや輪郭が柔らかい仕上がりとなりましたが、無事に3DGSデータを生成できました。
パターンB: 360° Gaussian(一貫処理)
360° Gaussianは、360度動画をインプットとして3DGS生成まで一貫して処理できるツールです。
特徴
- 動画を投げるだけで3DGS生成まで完了: 手動での画像切り出しやアライメント処理が不要
- 360度画像対応のアライメント: SphereSfM(COLMAPの360度画像対応拡張版)をデフォルトで使用
- 3DGS生成エンジンを選択可能: LichtFeld StudioやBrushのexeファイルを参照して、使いたいエンジンを選択できる
- 注意: オープンソースではありません
まずPathsにBrushやLitchFeldなどのexeを指定します。
そのあとAlignmentタブでトレーニングとアライメントに何を使うかを選択します。アライメントはデフォルトはSphereSFMでしたがRealityCaptureなども設定していれば選べました。
そして必要であれば、step数やsplatsを設定。ちなみにMax Splatsを8000にしたら私のPCのスペック的に限界を迎え失敗しました。
そして動画などを追加しStartを押したら、画像切り出し・アライメント・キューブマップ化・3DGS生成と自動で進んでいきます。ログで今何をやっているかが分かります。
TrainにBrushを選んだ時はBrushが起動し生成の様子も見えました。LichtFeld StudioはGUIの画面は起動しませんでした。
ログを見て、生成が終わったか確かめます。UIは変化がないのでログを確認する必要がありそうです。
出力は、インプット動画があったフォルダ近くにplyのアウトプットフォルダが生成されました。Brushだとステップごとに随時出力されました。
詳しい使い方はYoutubeに動画があります。人物をマスクする機能は有料です。
まとめ
本ワークフローにより、無料のオープンソースツール(※360 Video Still Cropper/360° Gaussianを除く)を使用して、通常のスマートフォン動画および360度動画の両方から高品質な3DGSデータを生成できました。
ただし、クラウドサービスと異なりCOLMAPでのパラメーター調整を自分で行う必要があり、その点に難しさを感じました。
ちなみに動画データをインプットとした、アライメント処理~COLMAP書き出しは、RealityScanというソフトを使えば一括でできるようですが、 100 万米ドル以上の収益の企業では有料のライセンスが必要です。




































