2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動画から3DGS生成まで一気通貫!Spirula Studio(スピルラスタジオ)を使ってみた!

2
Last updated at Posted at 2026-09-25

動画や写真をインプットとして、アライメント~3DGS(3D Gaussian Splatting)の作成まで一気通貫でやってくれるローカルで動くOSSのソフトが登場したので、早速試してみました!

多機能でUIもカッコよくとてもよかったです。

またWindowsだけでなくMacやubuntuにも対応しているそうです!

image.png

アップデートが頻繁なので記事を書いている途中に新しいバージョンが来ました。そのため一部記事内のUIが古いです。

※2026/10/8 LiDAR情報追加

環境

  • Spirula Studio: v2026.9.20(一部v2026.9.24、v2026.10.6))
  • OS: Windows 11
  • CPU: Intel(R) Core(TM) Ultra 9 185H
  • GPU: NVIDIA RTX 4070, 8GB VRAM

Spirula Studioの機能一覧

ビルド済みのexeファイルをダウンロードして起動するだけで使えます。
起動したら自動で日本語になっていました。ありがたい。

Spirula Studioでは処理の様々な段階からスタートできます。

スクリーンショット 2026-09-25 093942.png

データセットを開く

COLMAPなどで既にデータセットを生成している場合はこちらから開けます。

image.png

写真や動画からデータセットを作成

今回の記事のメイン

image.png

モデルまたは再構成を開く(旧名:学習済みモデル)

ビューワー・編集ツールです。ただの点群も開けるのが便利ですね。記事の後半で試します。

image.png

スプラットからメッシュを抽出

スプラットからメッシュ作成までできるのは嬉しいですね!これも記事の後半で試します。

image.png

バッチ処理

データセット作成から3DGS生成までを一気にできます。この画面では細かいパラメーター指定はできないので、一度「写真や動画からデータセットを作成」機能で細かい設定を見て、変えたい場所があれば変えてプリセットを作ってからこの画面で一気に処理するとよさそうです。

スクリーンショット 2026-09-25 130308.png

複数インプット→複数3DGS生成もできます。

スクリーンショット 2026-09-25 130426.png

実行中の様子。一つずつ処理していきます。

スクリーンショット 2026-09-25 130513.png

写真や動画からデータセットを作成

さっそく動画からcolmapデータ作成をしていきます。

入力データの選択

写真や動画を選択します。

image.png

複数の動画を選択すると、1つのシーンとして生成してくれます。360Gaussianにはこの機能がなかったと思うので、これはありがたいですね。

image.png

また、分かりずらいですが、どれくらい切り取るかを数値で決めれます。多いほうがいっぱい画像が切り出されると思います。

スクリーンショット 2026-09-28 094939.png

LiDARスキャン追加(v2026.10.6~)

LiDARスキャンデータを追加して、大きさなどを実スケールに合わせれるようになりました!

image.png

e57,las,ply
スクリーンショット 2026-10-08 095723.png

ただし、Scaniverseのモバイルで撮影した同じ場所のplyデータを追加して生成しても、失敗しました。

image.png

「エラー: このモデルも位置合わせできませんでした。スキャン内での姿勢がわかっている画像を含むモデルがありません。スキャン自身の画像を再構成に加えるか、すでにスキャンの座標系にあるモデルなら --mode keep を使ってください。」

「データセットはすでにスキャンの座標系にある」というのをチェック入れて、再構成すると
image.png

今度は一応成功しましたが、ほぼ画像が使われなくなってしまいました。

image.png

Scaniverseのデータじゃダメ見たいですね・・・

カメラの選択

360度カメラの動画を変換したものを使用する場合は「正距円筒パノラマ」を選択します。

image.png

insvファイルなどmp4変換前の360度映像を取り込むと自動で、魚眼になります。

スクリーンショット 2026-09-25 094018.png

画像のマッチング

これがcolmapソフトでいうSequentialやExhausiveかと思います。

スクリーンショット 2026-09-28 095709.png

デフォルトの自動の場合このような設定ですが、2重で同じものが出たりとうまくいかないときは「すべての組み合わせ」にすると改善することもありました。

image.png

設定

「動きに合わせてレートを変える」をオンにしてみました。一定速度で撮影できてないときによさそう。

image.png

「画面の決まった位置を取り除く」は必要あればオンにして

image.png

「マスクを試す」から設定。手動で取り除きたいものを指定することもできます。

スクリーンショット 2026-09-24 141753.png

insvファイルの場合は自動でオンになっていて、黒いフレーム部分がマスクされます。

スクリーンショット 2026-09-25 094052.png

マスクの設定

マスクを設定することもできます。

image.png

人や車などを除去対象として設定可能です。

image.png

マスクモデルはデフォルトでは含まれていないため、同意の上でダウンロードする必要があります。これを実施しないとデータセット作成ボタンがアクティブになりません。

image.png

深度と法線の推定

「深度と法線を推定する」もオンにすることをおすすめします!これによって水平面が正しく認識されるようになります。ただし1枚あたり1秒程度かかるため、処理時間は長くなります。

image.png

image.png

詳細設定>特徴&マッチャー

これはうまくいかなかったとき向けの話ですが、モデルが複数に分かれてしまった時やカメラが一部しか配置されないときなどは、特徴やマッチャーをLoMaというのにするといいです。

スクリーンショット 2026-09-25 150243.png

実際これで、室内のスマホ撮影動画でデフォルトの設定でうまくいかなかったものが改善されました。

ちなみにモデルが複数分かれているときはログにこのように出ています。ここでの画像の数が少ないものはあまりうまくいってないです。

スクリーンショット 2026-09-25 145906.png

モデルのダウンロード(プロキシ環境での対応)

私の環境ではプロキシの関係でモデルがダウンロードできませんでしたが、以下のissueに何をダウンロードしてどこに配置すればよいかが記載されていたので、その通りに対応しました。

以下の2つのファイルをダウンロードして指定のパスに配置しました。

image.png

「モデルの準備ができました」と表示されていればOKです。

image.png

image.png

データセット作成の実行

データセット作成を開始します。あとは見ているだけです。処理速度はかなり速く、画面のビジュアルもかっこいいです!

動き検出処理(設定している場合のみ)

「動きに合わせてレートを変える」をオンにした場合、最初にこの処理が実行されます。

image.png

フレーム書き出し
設定したfpsなどに従って動画を画像に切り出している様子

image.png

マスク(設定している場合のみ)

スクリーンショット 2026-09-25 094323.png

image.png

特徴点抽出

image.png

照合処理

この左の図は最初はよく分かりませんでしたが、

image.png

設定で「画像のマッチング」を「すべての組み合わせ」にすると以下のようになったので、画像同士のマッチングでどれがマッチングしたか(させたか)を表しているんですね。

スクリーンショット 2026-09-28 100320.png

再構成
カメラの位置を推定
image.png

ちなみに360度映像でカメラ設定を間違えてOpenCVモデルのままデータセット作成した場合、以下のような結果になりました。

image.png

深度(設定している場合のみ)
深度と法線の推定をオンにした場合のみ。ここが一番時間かかるかも

image.png

完了

データセット作成が完了したら「トレーナーで開く」を押します。

image.png

ちなみにうまくいっていない部分は教えてくれます。親切ですね。

スクリーンショット 2026-09-24 111305.png

複数モデルに分かれてしまった場合はsparseにこのような形でcolmapデータが置かれます。3DGSでどれが使われるのかはよくわかりません。一番カメラ数が多いものか?

スクリーンショット 2026-09-25 162409.png

また編集機能で初期点群の調整もできます。

スクリーンショット 2026-09-25 132022.png

大きさについて、スマホ撮影動画やinsta360X4のinsvファイルから生成したとき、「メートル位置を持つカメラ:0、3台必要です」と出ました。

image.png

何かしら位置情報を持つカメラがあればスケールも合わせてくれるようです。おそらく以下のドキュメントがその内容で、例えばinsta360X5だとセンサーデータで大きさも合わせてくれるのかも?

https://github.com/harry7557558/spirula-studio/blob/master/docs/notes/imu-gps-for-sfm.md

分割

データセット作成が終わった後、分割して生成を分けることができます。大きいデータを学習するには心もとないPCスペックの時に使えそうです。

image.png

カメラ数で分けるか、分ける個数を指定するかが選べます

スクリーンショット 2026-10-08 135632.png

バッチ処理になります

image.png

image.png

関心領域(v2026.10.6~)

データセット作成が終わった後、関心領域を選択することができます。

image.png

初期点群の段階で範囲を絞れるんですね~(このUI、3DGS生成後の編集でも追加してほしい・・・)

スクリーンショット 2026-10-08 111922.png

生成するときも引き継がれます

スクリーンショット 2026-10-08 112232.png

設定した領域以外が映っていないカメラは使わないようになります。
スクリーンショット 2026-10-08 112317.png

関心領域以外も3DGSとしては生成されますが、クオリティが変わってきます。

左は関心領域設定していないもので、右が真ん中の像にだけ関心領域設定したもの。関心領域を設定したほうが、その中のものはより詳細に描かれ、領域関心外のものはぼんやりしました。

image.png
image.png

3DGS生成(トレーナー)

データセットをもとに3DGSデータを生成します。

設定

プリセットは変換済みの360度映像の場合は「汎用」なのか「360度カメラ」なのかよく分からず・・・どちらでも生成できました。

image.png

デフォルトでは100万点群に設定されています。これは「精細さ」を高くしたら1000万などにあがります。

image.png

色々と細かい設定もできますが、今回はデフォルトのまま学習を開始しました。

image.png

学習中の様子

生成中の画面です。データセット作成時にはキューブマップ化の処理がなかったと思いますが、学習が始まるとキューブマップ形式で表示されていますね。

image.png

insvファイルからの生成&360度カメラプリセットでも同様

スクリーンショット 2026-09-25 102912.png

生成中のデータフォルダを見てもキューブマップの画像は保存されていませんでした。

image.png

残り時間も表示してくれます。広めのシーンだと2時間程度かかります。

image.png

メモリが足りなくなるリスクがあるかも見れます。

image.png

色々なビューが用意されていて面白いですね。

image.png

出力データの保存場所

出力データはデフォルトでは元動画と同じ階層に「元動画名_dataset」フォルダが作成されます。

image.png

outputフォルダの中に.ply形式で生成されます。

image.png

生成結果

insvファイルからそのまま生成した360度動画は、きれいにできました!360度動画できれいに生成できたのが初めてなのでうれしいです!

スクリーンショット 2026-09-25 102912.png

広域だと何とも言えないクオリティ。撮影方法が悪いのか、点群数やステップ数が足りてないかも

スクリーンショット 2026-09-25 124354.png

スクリーンショット 2026-09-25 124643.png

近い距離のモノがぼやけるのはずっと悩んでいますが、ここでも解決しないです。

image.png

オブジェクトをぐるっと撮影するようなスマホ撮影ももちろんきれいに生成できます。

スクリーンショット 2026-09-24 142057.png

ちなみにパスに日本語が含まれていても問題なく生成できました!優秀

モデルまたは再構成を開く(ビューワー&編集)

plyやcolmapなどを読み込み、編集できます。

ただし、.sogなどのフォーマットは非対応でした。

スクリーンショット 2026-09-25 092748.png

読み込んで編集を押すと編集画面になります。

スクリーンショット 2026-09-25 132047.png

選択タブでは投げ縄ツールなどで範囲選んで消したり、

スクリーンショット 2026-09-25 124936.png

不透明度などで絞ってもやを消したり
スクリーンショット 2026-09-25 124748.png

距離で絞って選択したりできます。
スクリーンショット 2026-09-25 125134.png

ボックスで選ぶというのは今はなさそうでした。

「かたまり」はどういうアルゴリズムで選ばれているのかよく分からないですね。

スクリーンショット 2026-09-25 132117.png

「変形」タブでは移動回転や

スクリーンショット 2026-09-25 125228.png

地面位置指定などができました!すごい!自動整列が便利そう

スクリーンショット 2026-09-25 132055.png

ちゃんと地面にあってる気がします。ただ最近のLFSと同じくこのグリッドが地面に埋もれないので本当に地面に沿っているのか分かりにくいですね・・・

スクリーンショット 2026-09-25 132039.png

また3DGSデータだけでなくcolmapデータを読み込んで初期点群を消したり

スクリーンショット 2026-09-25 125754.png

左上でカメラを選ぶとカメラの消去もできます!

スクリーンショット 2026-09-25 132102.png

スプラットからメッシュ作成

Spirula Studioで作成したdatasetフォルダを指定して、デフォルト設定でメッシュ生成を試してみました。しかし、カメラモデルがサポートされていないというエラーが出て失敗しました。360度動画だとこの機能は使えないのかもしれません。

image.png

「学習に使った写真を使う」をオフにしたら生成できましたが、説明通りかなりぼこぼこした結果になり、実用的ではありませんでした。ただ、生成自体はすぐに終わりました。

image.png

生成されたメッシュは自動的にoutputフォルダに保存されます。

image.png

通常のスマホ動画から生成した場合は「学習に使った写真を使う」オプションをオンにした状態で生成できました。

image.png

3DGSのメッシュ化をするのは初めてなのでこれがどれくらいのクオリティなのか分かりませんが、手軽にできていいですね。

最後に

Spirula Studioは各機能に丁寧な説明が入っていますし、日本語対応もバッチリで、とても使いやすいソフトでした!
動画や写真から3DGS生成まで一気通貫でできる点が素晴らしいですね。

以前360度動画からの3DGS生成について調べたときにワークフローを図に書いたことがありますが、このソフトを使えばほぼすべてできます!

3DGS生成.png

まだまだ更新も入りそうなので期待です!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?