LichtFeld Studioの使い方 – 3DGS生成方法と設定例

LichtFeld Studioの使い方をまとめてみました。

公式サイト:https://lichtfeld.io/
GitHub:https://github.com/MrNeRF/LichtFeld-Studio

「postshotが有償化!」「けど今後も無料で3DGSしたい!」
という方は gsplat と併せてこちらのLichtFeld Studioも検討してみると良さそうです。

オープンソースソフトウェアで、しかもGUIで操作可能な3DGS (3D Gaussian Splatting ガウシアンスプラッティング) 生成ツールです。

まだ軽く触ってみただけではありますが、「Bilateral Grid」機能が強力な印象。
露出がバラバラな写真セットからでもその変化を吸収して最適化される機能!
実際露出変化のあるシーンで試した所改善できました。

前半で 簡単な使い方・トレーニングパラメーターの意味・エラーと対策 について
後半で 環境構築 をまとめました。

追記 2025/12/25
Windows向けビルド済みデータ(Nightly Build)が公開されました!
https://github.com/MrNeRF/LichtFeld-Studio/releases/tag/nightly
下記にまとめた複雑な環境構築をせずそのまま実行できるプログラムです。zipを展開したらbin内にexeがあるのでこれを実行するのみです。

使い方

COLMAPデータの読み込み方

RealityScan等で作成した、imagesフォルダを含むCOLMAPデータの入ったフォルダをドラッグアンドドロップでOK。

詳しくはそれぞれ解説動画があります。

RealityScanでアライメント(写真位置推定)する場合

COLMAPでアライメント(写真位置推定)する場合

ply書き出し

左上のメニューから書き出せます。

処理の中断と再開

中断はTrainingタブの「Save Checkpoint」を押す。

すると指定したOutputフォルダに「checkpoint_****.resume」ファイルが作成される。

処理を再開する際はこの「checkpoint_****.resume」ファイルをエディタ画面上へドラッグアンドドロップする。

モデルの回転

読み込んだデータの座標系が異なりひっくり返っていたりする場合は下記手順で回転が可能。

Bilateral Grid機能の有効化

露出がバラバラな写真セットからでもその変化を吸収して最適化されるという素敵すぎる機能。

都市スケールな広範囲の処理

大規模広域な空間の場合デフォルト設定だともやに覆われてしまいます。

この場合はTile Modeをデフォルトの1から4へ変更することで、空間を分割して処理されることになるようで改善できました。
(ただしシーンによっては分割部分の境界が目立ってしまうデメリットもあるらしい)

もしくは、StrategyをMCMCではなくDefaultを試す。

ただしどちらも手法でもpostshot処理(splat3)のものと比べると全体的にぼやけていたので、他のパラメーターも調整の余地がありそうです。
Inrita 3DGSの場合は 以下のようなFAQ があるので、これと同等の設定を行うことで改善できるかもしれません。

  • How can I use this for a much larger dataset, like a city district? The current method was not designed for these, but given enough memory, it should work out. However, the approach can struggle in multi-scale detail scenes (extreme close-ups, mixed with far-away shots). This is usually the case in, e.g., driving data sets (cars close up, buildings far away). For such scenes, you can lower the --position_lr_init--position_lr_final and --scaling_lr (x0.3, x0.1, …). The more extensive the scene, the lower these values should be. Below, we use default learning rates (left) and --position_lr_init 0.000016 --scaling_lr 0.001" (right).

Default learning rate result Reduced learning rate result

これに対応するLichtFeld Studioのパラメーターはおそらくこちら。

トレーニングパラメーター詳細

以下Gemini調べ。
鵜呑みにせずあくまで参考程度に。

Basic Training Params (基本設定)

  • Strategy (戦略)

    • 学習アルゴリズムの選択です。

    • Default: 標準的な3DGS。大規模シーンでは最も安定します。

    • MCMC: 点群を確率的に再配置して隙間を埋める手法。ディテールは出ますが、広い空などでノイズ(発散)の原因になりやすいです。

  • Iterations (反復回数)

    • 学習を繰り返す回数。標準は 30000

    • 大規模シーンでは 60000 程度まで増やすと、細部まで解像します。

  • Max Gaussians (最大ガウシアン数)

    • 点の数の上限。

    • 重要: 広域シーンでは 1000000 (100万) は少なすぎます。最低でも 500-800万 は必要です。

  • SH Degree (SH係数の次数)

    • 03。色の「見る角度による変化」の複雑さ。

    • 通常は 3。VRAMが厳しいときだけ 2 に下げます。

  • Tile Mode (タイル分割)

    • VRAM不足を防ぐために画面を分割して計算するかどうか。

    • 1 (Full): 分割なし。

    • 4Split: 画面を分割して学習。大規模シーン推奨。

  • Num Workers

    • データ読み込みに使うCPUのスレッド数。PCのスペックに合わせて 48 程度にします。

  • Steps Scaler

    • 学習スケジュールの倍率。

    • 例えばここを 2.0 にすると、Iterationsが3万でも内部的に6万回分のスケジュール(学習率の変化など)で動きます。基本は 1.00 でOK。

  • Bilateral Grid (バイラテラルグリッド)

    • 解説: 3D空間を格子状(グリッド)に区切り、隣り合うグリッド同士で情報を滑らかにする仕組みです。

    • 効果: 画像処理の「バイラテラルフィルタ」のように、エッジ(輪郭)は残しつつ、平坦な場所のノイズを減らす効果があります。
      露出がバラバラな画像セットからでも、照明変化を吸収して綺麗に学習できます

    • 使い所: ONにするとノイズが減りますが、メモリを食います。大規模シーンでノイズがひどい場合に有効です。

  • Mask Mode

    • 学習に使いたくない領域(動いている人や車など)をマスク画像で隠す設定。

    • None: マスクなし(全画素使う)。

  • Sparsity (スパース性)

    • 学習中に「不要なガウシアンを間引く」力を強める設定。

    • ONにするとデータ容量は軽くなりますが、画質がスカスカになるリスクがあります。

  • GUT (Gaussian Unscented Transform)

    • 解説: 魚眼レンズや強い歪みがある画像のピクセル計算を正確に行うための高度なレンダリング手法。

    • 使い所: 魚眼レンズや360度カメラのデータを使う場合はON。通常のカメラならOFF(Disabled)推奨です。計算が重くなります。

  • BG Modulation (背景変調)

    • 学習時、背景色をランダム(黒・白・紫など)に切り替える機能。

    • 重要: これをONにすると、空の領域に変なガウシアン(浮遊ゴミ)が生成されるのを防ぐ効果が高いです。

    • 期待される効果:
      • 特定の背景色に過度に適合することを防ぐ
      • ガウシアンが背景に依存せずオブジェクト自体を正確に再構築するよう促す
  • Evaluation

    • 学習中にテスト用画像(学習に使っていない画像)で画質評価を行うかどうかの設定。学習結果そのものには影響しません。

Advanced Training Params (詳細設定)

Dataset (データセット読み込み設定)

  • Path / Images: 画像の場所。

  • Resize Factor: 1 なら原寸。248 と増やすと画像を縮小して読み込みます。VRAM不足時に使用。

  • Max Width (px): 画像の最大幅を指定してリサイズ。3840 (4K) など。

  • CPU Cache: 画像をメインメモリ(RAM)に乗せるか。ON推奨。

  • FS Cache: ファイルシステムキャッシュ。ON推奨。

  • Output: 保存先フォルダ名。

Optimization (学習の進行制御)

  • Learning Rates (学習率):

    • Position: 点の移動速度。発散する場合(今回のようなケース)はここを下げます。

    • SH Coeff / Opacity / Scaling / Rotation: 色・透明度・大きさ・回転の学習速度。基本デフォルトでOK。

  • Refinement (点群の密度管理):

    • Refine Every: 何回ごとに点の分裂/削除判定をするか(100回ごと)。

    • Start / Stop Refine: いつからいつまで点の増減を行うか。

    • Gradient Thr (勾配しきい値): 重要。 この値を小さくすると、細かい箇所に点がどんどん追加されます。

    • Reset Every: 透明度をリセットして「ほぼ透明なゴミ」を消すタイミング(3000回ごと)。

    • SH Upgrade Every: 色の表現力(SH次数)を上げるタイミング。

Save Steps

  • どのタイミングで途中経過を保存するか。

Loss Parameters (誤差関数の重み付け)

  • Lambda DSSIM: 構造(形)の類似度をどれくらい重視するか。0.2 が標準。

  • Opacity Reg (透明度の正則化):

    • 超重要。 「できるだけ透明であれ」という圧力。

    • 値を上げると(0.01〜0.05)、空中に浮く薄いノイズが強力に消されます。

  • Scale Reg: 点が巨大化するのを防ぐ圧力。

  • TV Loss Weight (Total Variation Loss):

    • 解説: 隣り合うガウシアン同士の色の変化を滑らかにする力。

    • 使い所: 「もやもや」対策に非常に有効。 値を少し入れる(0.1〜1.0)と、ザラザラした高周波ノイズが消えて滑らかになります。

Initialization (初期化)

  • Init Opacity / Scaling: 最初の点の透明度と大きさ。

  • Random Init: SfMの点群(Colmapの結果)を使わず、ランダムな配置からスタートするか。通常はOFF。

Initialization (初期化)

  • Min Opacity (最小不透明度)

    • 意味: 「これより薄い点は消す」という足切りラインです。

    • 重要性: ここの数値を上げると、空中に浮いている薄いノイズ(もや)が劇的に消えます。

  • Prune Opacity (剪定不透明度)

    • 意味: 定期的なクリーニング処理(Refinement)の際に適用される足切りラインです。基本は Min Opacity と同じ値にします。

  • Grow Scale 3D

    • 意味: 点を「分裂(Split)」させるか「複製(Clone)」させるかを決める、大きさの基準値です。

    • これより大きい点が勾配しきい値(Gradient Thr)に引っかかると「大きすぎるから2つに割ろう(Split)」となり、小さい点なら「コピーして増やそう(Clone)」となります。

  • Grow Scale 2D

    • 意味: 上記の2D画面上での大きさ版です。

  • Prune Scale 3D (サイズによる削除 – 3D)

    • 意味: 「物理的に大きくなりすぎた点は消す」というルールです。

    • 巨大なガウシアンがボヤッとした塊になってディテールを隠してしまうのを防ぎます。

  • Prune Scale 2D (サイズによる削除 – 2D)

    • 意味: 「画面上で見えすぎている(カメラに近すぎる)巨大な点は消す」というルールです。

    • カメラの目の前に「ぬりかべ」のように立ちはだかる大きなノイズを消すのに有効です。

  • Pause After Reset

    • 意味: 透明度リセット(Reset Every 3000)の後、何ステップだけ点の増減(Refinement)を休むか。通常は 0 でOK。

  • Revised Opacity

    • 意味: 透明度リセット時の挙動オプション(特定の不透明度へ強制変更するかなど)。基本はチェックなし(OFF)でOKです。

もう一度書きますが上記はGeminiの回答なので、内容の精査は必要かと思います。
※精査してから記事かしろって話ですが、とりあえず参考にはなるかなと軽率に紹介

エラーと対策

チェックポイントデータをドラッグアンドドロップしても読み込まれない

LitchFeld Studioを再起動する。

COLMAPデータを正しく指定したはずなのに読み込めずエラーになる

LitchFeld Studioを再起動する。

Windows環境構築手順

ビルド済みデータの利用ではなく自分でビルドしたい場合の手順をまとめました。

この公式のドキュメントがとても丁寧に解説されているのでこの手順の通りで環境構築できると思います。

しかし私の環境では一部エラーが発生してしまったところがあったので、その点を踏まえて以下に手順をまとめました。
多くの部分は元の記事と同じ内容になっています。

ステップ1 依存関係準備

Visual Studio 2022 Community Edition

Visual Studio Community 2022をインストールする。
https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history#release-dates-and-build-numbers

  • Visual Studio Code ではないです
    • LichtFeld Studioをビルドするために必要なファイルを含んでいません
  • Visual Studio 2019 ではないです
    • CMakeバージョンが古いです
  • Visual Studio 2026 ではないです
    • このバージョンはCUDAインストール環境ではまだ検出されていません

ダウンロードしたらインストーラーを起動し「C++によるデスクトップ開発」をチェックを入れてインストールする。

CUDA Toolkit 12.8

  • 注意点
    • Visual Studio のインストールが完了するまでインストールを開始しないでください
    • 別のバージョンの CUDA Toolkit が入っている場合はそれをアンインストールして CUDA Toolkit 12 を再インストールしてください

以下URLからCUDA Toolkit 12.8のインストーラーをダウンロードする。
https://developer.nvidia.com/cuda-12-8-0-download-archive

ダウンロードしたらインストールする。

Git

Gitをインストールしていない場合は入れておく。

下記URLからWindowsインストーラーをダウンロードします。
https://git-scm.com/downloads

インストール時のオプションはデフォルト設定のままでOK。

ステップ2 前提条件の確認

Windowsのスタートメニューをから「x64 native tools command prompt for VS 2022」を起動する。

以下のコマンドを入力し各バージョンを確認する。

cmake --version
nvcc --version
git --version

  • Cmake: 3.30以上である必要があります
  • nvcc: 12.8が使用されていることを確認する
  • git: gitがバージョン情報を表示することを確認する

ステップ3 LichtFeld Studioのダウンロードとビルド

LichtFeld Studioをダウンロードするフォルダを作成しておく。
ここでは D:\Git\3DGS_LichtFeldStudio とした。

「x64 native tools command prompt for VS 2022」を起動する。

用意したフォルダへ移動する。

cd D:\Git\3DGS_LichtFeldStudio

vcpkg をセットアップする。

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && .\bootstrap-vcpkg.bat -disableMetrics && cd ..

リポジトリをクローンする。

git clone https://github.com/MrNeRF/LichtFeld-Studio

安定版をチェックアウトする。

cd LichtFeld-Studio
git checkout v0.3.0

構成ファイルをビルドし、依存関係をダウンロードする

 cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja -DCMAKE_TOOLCHAIN_FILE="../vcpkg/scripts/buildsystems/vcpkg.cmake"
しかしここで私の環境ではエラーが出た。

エラー対策ここから
エラーメッセージ:
CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_CUDA_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

D:\Git\3DGS_LichtFeldStudio\LichtFeld-Studio> cmake --build build -j
no such file or directory
CMake Error: Generator: execution of make failed. Make command was:
ビルドに失敗したので一旦作成されたbuildフォルダを削除しておく。
これが残っていると再ビルド時に悪影響があるため。
削除したら改めて空のbuildフォルダを作成する。
作成したbuildフォルダへ移動する。
cd build
Visual Studioを明示的に指定して設定する。
cmake .. -G "Visual Studio 17 2022" -A x64
この処理は時間がかかるので暫く待つ。
成功すれば最後に以下のメッセージが出る。
-- Build files have been written to: .../LichtFeld-Studio/build
ここまでで完了したら、改めてビルドを実行するので次の手順へ進む。
エラー対策ここまで

buildフォルダが作成されているのでその中へ移動する。
cd build
Windowsでビルドする際はデフォルトではDebugモードでビルドされてしまうのでReleaseモードでビルドする。
cmake --build . --config Release -j

この処理は時間がかかるので暫く待つ。

ビルドが完了すると build > Releaseフォルダ内に「LichtFeld-Studio.exe」が作成されている。
これがLichtFeld-Studioの実行ファイルです。

exeを実行するとLichtFeld Studioが立ち上がります。

以上で環境構築完了!