こんにちは、コンテンツデザイン開発グループリアルタイムチームの戸本です。
今回は、3DGS(3D Gaussian Splatting)の生成と編集手順についてご紹介します。
「手軽に生成する」ことをコンセプトに、シーンの撮影はスマートフォンで行います。
スマートフォンさえあれば、思いついたときに動画を撮影し、いつでも好きな3DGSを生成できるというわけです。

簡単に手順を説明します。
まず、スマートフォンで必要なシーンを動画撮影します。
次に、撮影した動画をXVERSEに読み込み、トレーニングを行って3DGSデータを生成します。
生成したデータをSuperSplatに取り込み、必要な編集を行います。
編集が完了したデータをUnreal Engineに読み込み、コンテンツ制作に活用します。
動画の撮影

3DGSの生成に使用する動画の撮影を行います。まずは対象物を決めますが、
なるべく高すぎず、大きすぎないものを選びましょう。
高すぎると上部の撮影が難しくなり、生成された3DGSも綺麗な状態にはなりません。
また、大きすぎると撮影に時間がかかり、動画データの容量も増えるため、
計算時間も増え、試作が難しくなります。まずは身近な椅子などの家具が良いかもしれません。
撮影はXperia 5 IIIで行い、解像度は4Kです。
ハイグレードな撮影機器を使用しても問題はありませんが、
動画内で自動露出による明暗の変化が発生すると、良好な結果が得られないことが多くあります。
そのため、撮影時の天候や時間帯には注意が必要です。
今回の撮影は夕方近くに行い、対象は影の中にあるため、全体的にフラットな明るさになっています。
もし露出を固定して撮影できる場合は、その設定を試すのも良いでしょう。
生成に適した動画を撮影するには、ある程度の経験や知識が求められるかもしれません。
実際に撮影を何度も試すなど試行錯誤を重ねることで、理想に近い3DGSデータを得ることができるようになると思います。
XVERSE 3D-GS UE Pluginの導入
動画の準備ができたら、次は生成の準備を整えます。
生成と読み込みには、XVERSE 3D-GS UE Pluginを使用します。
このプラグインはUnreal Engine用で、3DGSをインポートして表示させることができます。
また、動画からトレーニング(3DGS生成)を行うことも可能です。
XVERSE 3D-GS UE Pluginは無料で公開されています。
https://github.com/xverse-engine/XV3DGS-UEPlugin
上記のサイトのreleasesからUEのバージョンに適したプラグインをダウンロードします。
今回はUE5.3を使用しています。ダウンロードを行い、解凍したフォルダ(XV3dGS)を
プロジェクトフォルダのPluginsに保存します。
Pluginsフォルダが無い場合は、新規でフォルダを作成します。
生成を行う場合は https://developer.nvidia.com/cuda-downloads からCUDA Toolkitのダウンロードも忘れずに行います。
※本ソフトウェアのダウンロードおよびインストールに関する一切の行為は、利用者自身の責任において実施されるものとし、これに起因するいかなる損害についても、当方は一切の責任を負いかねます。
XVERSE 3D-GS UE Pluginの設定

プラグインを使って生成を行います。生成方法についてはGitHubに掲載されている情報と同様です。
まず、XV3DToolsの場所を設定し、生成に使用する動画データ(mp4形式)と出力先のパスを設定します。
ファイルパスには日本語などの特殊文字を含めないようにしましょう。
その他の設定はデフォルトでも問題ありません。

詳細な設定を行うことで結果が変わる可能性もありますが、今回はパラメータの検証は行っていません。
適切なパラメータを設定したら、Start Trainingボタンを押して生成を開始します。
コマンドが動いている画面から進行状況を確認できます。
生成にかかる時間は使用する動画によって異なりますが、
処理に一時間以上かかる場合、生成に失敗している可能性が高いと判断しています。
失敗の原因は様々ですが、撮影動画に急な動きが含まれる、
手前に不自然に固定された物(指、レンズキャップ、ストラップ)が映り込んでいるなど、
映像や動画の不備が考えられます。
同じ条件下で複数の動画データを用意しておくと、別のデータを使って生成を試みることができます。
トラブルを避けるために、撮影は何パターンか行うと良いでしょう。

正常に生成が完了すると、指定したフォルダに拡張子が「.ply」のデータが保存されます。
そのデータを「import PLY File」ボタンを押して指定するか、コンテンツブラウザにドラッグすることで、
コンテンツブラウザにアクターとして保存されます。ビューにドラッグアンドドロップすると、
3DGS化された撮影対象が表示されます。
シーンにライトが無い場合は何も表示されないので「ライティングなし」に設定しておきます。
場合によっては、ビューの位置と撮影対象が遠く離れていて、見つけるのが難しいことがあります。
その際は、撮影対象から遠く離れて、alt+右クリックでビューを回転させることで対象物を見つけることができます。
ガウスが上手く重なり、はっきりと見える位置を見つけてください。
慣れないうちは見つけにくいかもしれません。
読み込んだ直後は、水平垂直が傾いている、余分なモヤが多い、オブジェクトの一部が抜けているなど、
イメージとは違う3DGSデータになっていることがあります。
ある程度は編集で綺麗に整えることができますが、抜けていたり形状が上手く表現されていない場合は、
別の動画データで試すか、再撮影が必要かもしれません。
3DGSデータを生成するための動画撮影は、慣れるまでは難しいかもしれません。
以下に、個人的に気を付けているポイントをまとめましたので、参考にしてください。
・画面のセンターに対象物を捉えつつ、ゆっくりと周りを動いて撮影する。
・急な動きや上下の動きを避ける。
・オートフォーカスや自動露出に注意する。
これらのポイントを意識することで、より良い3DGSデータを生成できるようになるかもしれません。
3DGSの編集

イメージ近い3DSGが生成されたら、SuperSplatにアクセスして編集を行います。
https://superspl.at/editor
今回は遊具のみを抽出する為に編集を行いますが、必要が無い場合は無理に編集を行う必要はありません。
編集手順は次回のcclabで紹介いたします。