LichtFeld Studioの使い方 – Windows環境構築と3DGS生成方法

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

「postshotが有償化してしまった!」
「無償で3DGSしたい!」
という方は gsplat と併せてこちらのLichtFeld Studioも選択肢に上がるのではないでしょうか。

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

前半で環境構築。
後半で簡単な使い方をまとめました。

GitHub

https://github.com/MrNeRF/LichtFeld-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が立ち上がります。

以上で環境構築完了!

COLMAPデータの読み込み方

COLMAPデータの入ったフォルダをドラッグアンドドロップでOK。

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

RealityScanで写真位置推定する場合。

COLMAPで写真位置推定する場合。

ply書き出し

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

処理の中断と再開

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

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

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

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

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

この場合はTile Modeをデフォルトの1から4へ変更することで、空間を分割して処理されることになるようで改善できました。

ただしそれでも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