postshotの使い方

3D Gaussian SplattingをGUIで処理できるソフトです。

公式サイトはこちら

コマンドラインで実行する公式の3D Gaussian Splattingの環境構築方法もこちらで解説していますが、CUIは慣れていないとなかなか使いこなすのも大変。この点postshotはマウス操作で直感的に利用できます。

直感的に使えるので使用方法は詳しい説明がいらないレベルではありますが、応用的な使い方を含めて以下にまとめてみました。

後半ではRealityCaptureの併用方法(アライメント結果を読み込む)についても紹介しています。

現在はベータ版で頻繁にアップデートも行われており、UIや仕様変更が度々発生しているのでここに記載している内容も変わる可能性は大いになります。
poostshotのDiscordがあるので、最新情報はそちらで追えます。
バグレポートや機能要望もDiscordから行えます。

インストールと簡単な使い方

公式サイトからDLしてインストールする。

起動すると以下のような画面になるので、表示されている通り画像をドロップ&ドロップする。

読み込むとダイアログが表示されます。

デフォルトだと「Image Selection」が「Best Images」になっていますが、使用する写真が限定されるので、すべての写真を利用したい場合は「Use All Images」を選んでおきます。

「Start Trainning」は「Import」ボタンを押すとすぐ処理が開始される設定です。写真を読み込んでから設定をつめて、それからトレーニングを実行したい場合はこのチェックは外しておきます。

右下の「Import」を押すと写真が読み込まれます。

読み込まれたら、左上の「Start Trainning」を押すと処理が開始されます。

しばらく待つとリアルタイムに処理中の様子がビューポート上に表示されます。

以上、最低限の使い方でした。
(その他便利な使い方等は今後追記予定)

各種パラメーターの詳細ついては公式マニュアルに記載があります。

Unreal Engineで利用する

2024/10/12のアップデートでUnreal Engineに対応したようです!
3D Gaussian SplattingをUnreal Engineで利用する手段がまた1つ増えた。

使い方は簡単だった。

  1. UE 5.4を入れる
  2. postshot 0.4.71以降のインストーラーでUnreal Engine用プラグインにチェックを入れてインストールする
  3. .pshtファイルをUEのコンテンツブラウザに読み込む
  4. データをビューポートへ放り込む

以上。

RealityCaptureのアライメント結果を利用する場合

大規模なシーンや複雑なシーンを処理する場合、postshotではうまくアライメント(写真位置推定)ができない場合があります。
(現在postshotにはコントロールポイントを使用したり、レーザースキャンデータを併用する機能はありません)
しかしこうした複雑なシーンを事前にRealityCaptureでアライメントを行っておくことでこのデータをpostshotに読み込ませて利用することができます。

この方法がまだ公式マニュアルには記載がないので手順をまとめました。
※追記 本日(2024/8/22)公式マニュアルにも記載されました。該当ページはこちら

1. RealityCaptureでアライメントまで完了させる

RealityCaptureの使い方については「フォトグラメトリ手順書」にまとめているので参考にしてみてください。

2. RealityCaptureからcsvを書き出す

Alignment > Export > Registration > Internal/Extenal camera paramerters から書き出す。

設定はデフォルトのままでOK。

3. RealityCaptureからplyを書き出す

Alignment > Export > Point Cloud > Sparse point cloud as Polygon File Format から書き出す。

Export asciiをFalseにする。

4. plyとcsvと写真をすべて選択してpostshotの画面へドラッグ&ドロップする

写真は歪み補正前のオリジナルの写真で良い。

5. 表示されるダイアログでCamera posesがimportになっているのを確認する

この設定によりカメラポーズ(写真位置)については読み込んだcsvのデータを用いる事になるので、postshot上での写真位置推定はスキップされます。

5. トレーニングを開始する

読み込むと既にカメラと点群がビューポート上にある状態になる。
RealityCapture上と同じ状態で読み込めた。

あとは通常通り、お好みで設定を調整してトレーニングを開始する。

以下がこのワークフローでRealityCaptureを併用した大規模、広域の3D Gaussian Splattingの作例です。
(postshotのみでなく公式3DGSも併用してる例ではありますが)
600mの道程約2万枚の画像から生成しました。

エラーと対策

UNREAL ENGINE用のプラグインを更新し、pshtファイルをシーンへ配置しようとすると以下のエラーとなる場合がある。

Postshot plugin failed to initialize
Postshot Core does not match plugin version.
Remove all Postshot UE plugins and re-install Postshot.

Postshot プラグインの初期化に失敗しました
Postshot Core がプラグインのバージョンと一致しません。
すべての Postshot UE プラグインを削除し、Postshot を再インストールしてください。

プラグインも.pshtファイルも最新のものとなっており同じバージョンであってもこのエラーが出てしまう。
この場合はエラーメッセージにあるようにプラグインをインストールし直す必要がある。

なお「インストールし直す」必要があるので、以下のプラグイン画面から一旦無効にしてから有効に切り替えるだけではダメだった。

また「インストール済みプラグイン」を確認しても、postshotのプラグインはFabから入れているものではないのでここには表示されておらず、ここからインストールし直す事もできない。

なのでエクスプローラーのPluginフォルダを直接開き、Jawset Postshotのフォルダを削除する。
(この作業をする時はプロジェクトは終了しておくと良さそう)

この状態でpostshotのインストーラーを起動して再度プラグインをインストールを実行、したいところだが、実行するとpostshotの最新版はすでにインストールされているのでエラーになってしまう。

A newer version of Postshot is already installed.
To install an older version, please uninstall the newer version first.

新しいバージョンのPostshotが既にインストールされています。
古いバージョンをインストールするには、まず新しいバージョンをアンインストールしてしてください。

なので一旦postshotをアンインストールしてから、再度インストールする。

インストールが完了したら、UEのプロジェクトを開きpostshotのプラグインを有効にする。

以上。
無事に読み込めた。