📷

Gaussian-Splatting をUnityで動かしてみた

2023/09/15に公開

こんにちは!!Asterです!!!
本日はGaussian-SplattingでUnityを動かす流れを記事にしました.
お手軽にできますので,ぜひご覧ください.

Gaussian-Splatting とは

radiance Field では,高品質なビジュアルを達成するには,訓練とレンダリングに時間がかかるニューラルネットワークが必要.
そこで,Gaussian-Splattingでは,3つの要素を導入

  • 3D gaussianでSceneを表現
    • カメラキャリブレーション時に生成される疎な点から出発し,シーンの最適化のために連続的なvolumetric radiance fieldsの望ましい特性を保持しつつ,空の空間での不要な計算を回避する3D gaussian でsceneを表現する.
  • 異方性共分散の最適化
    • 3D gaussian のインターリーブ最適化/密度制御を行い,特にSceneの正確な表現を達成するために異方性共分散を最適化する.
  • 異方性スプラッティングをサポートし,トレーシングの高速化とリアルタイムレンダリングの両方を可能にする.

1080p解像度で高品質なリアルタイム(≧30fps)のノベルビュー合成を可能になった.

本家の論文はこちらになります.
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

本家のgithubはこちらになります.
https://github.com/graphdeco-inria/gaussian-splatting

今回使用するコード

今回は,こちらのgithubを用いてUnityで表示します.
https://github.com/aras-p/UnityGaussianSplatting

動作可能環境

論文に記載されている"bicycleデータ"での動作可能環境

  • Windows (NVIDIA RTX 3080 Ti):
    • Official SBIR viewer: 7.4ms (135FPS). 4.8GB VRAM usage.
      • Unity, DX12 or Vulkan: 13.4ms (75FPS) - 10.1ms rendering, 3.3ms sorting. 2.1GB VRAM usage.
      • Unity, DX11: 21.8ms (46FPS) - 9.9ms rendering, 11.9ms sorting.
  • Mac (Apple M1 Max):
    - Unity, Metal: 80.6ms (12FPS) - with FidelityFX GPU sort.
    - Unity, Metal: 108ms (9FPS) - with bitonic GPU sort.

Unityでの可視化までの流れ

まず,コードをgithubからClone してきましょう.

https://github.com/aras-p/UnityGaussianSplatting.git

学習済みモデルはこちらをDawnLoadしましょう.(1.4GB)

このコード自体は,UnityのVersionが2022.3.7f1を使用しているので,このVersionを持っていない場合はダウンロードしましょう.

Versionをダウンロードしたら,以下のSceneを立ち上げましょう.

するとHierarchyにGaussianSplatsというObjectがあると思います.こちらが今回使うものになります.

GaussianSplatsのInspectorを見るとData Asset という項目があると思います.

こちらにGaussian Splat Assetを入れます.

Gaussian Splat Assetの作り方

学習済みモデルをUnityのほうに入れていきましょう.
まず,以下のToolの中にCreate Gaussian Splat Assetがあると思います.

Create Gaussian Assetを開きましょう.
するとこのような設定画面が開きます.

この中のInput Folder に学習済みモデル済みモデルを設定します.

<0dc30c24-4が学習済みモデルのフォルダ>

D:\NeRF\gaussian-splatting\output\0dc30c24-4

このようにフォルダ名が入ると思います.

次に以下のCreate Assetを押して,Unityに入れていきましょう.

処理が終わると以下のようにGaussianAssetsができると思います.

以下のようにassetをData Asset の中に入れましょう.

入れるとこのように表示されると思います.

以上がGaussian-SplattingをUnityで見る方法になります.

https://x.com/Aster_NeRF/status/1701073602538610740?s=20

一つ前のバージョンの場合

GaussianSplatsのInspectorを見るとPoint Cloud Folder という項目があると思います.

こちらに学習済みモデルが入っているフォルダを選択します.<0dc30c24-4が学習済みモデルのフォルダ>

D:\NeRF\gaussian-splatting\output\0dc30c24-4

こちらを設定して,UnityのPlayButtonを押すと

このようにSceneが見れるようになると思います.

以上がGaussian-SplattingをUnityで見る方法になります.

https://x.com/Aster_NeRF/status/1701073602538610740?s=20

Discussion