À propos du projet
Ce dépôt est un visualiseur Unity pour le 3D Gaussian Splatting, implémentant la partie visualisation en temps réel de l'article SIGGRAPH 2023 « 3D Gaussian Splatting for Real-Time Radiance Field Rendering » de Kerbl, Kopanas, Leimkühler et Drettakis. Il consomme des fichiers de modèles gaussian splat déjà entraînés plutôt que d'effectuer l'entraînement lui-même, et il est explicitement basé sur l'article original plutôt que sur les nombreuses variantes ultérieures de la recherche sur le gaussian splatting.
Statut et support des plateformes
L'auteur déclare qu'en décembre 2023, aucun développement significatif supplémentaire n'est prévu. Les plateformes connues pour fonctionner sont celles utilisant les API graphiques D3D12, Metal ou Vulkan : Windows (D3D12 ou Vulkan), Mac (Metal) et Linux (Vulkan). DX11 ne fonctionne pas. OpenGL et OpenGL ES ne sont pas pris en charge, WebGPU n'est pas encore viable, et le support mobile est incohérent, certains appareils iOS et Android étant signalés comme non fonctionnels. Certains appareils VR fonctionnent apparemment (HTC Vive, Varjo Aero, Quest 3, Quest Pro), tandis que d'autres comme l'Apple Vision Pro peuvent ne pas fonctionner.
Flux de travail d'utilisation
Ouvrez le dossier projects/GaussianExample comme projet Unity (développé avec Unity 2022.3) et chargez la scène GSTestScene. Les assets GaussianSplat sont créés via le menu Tools -> Gaussian Splats -> Create GaussianSplatAsset. L'entrée peut être un fichier PLY de l'article 3DGS original (généralement point_cloud/iteration_*/point_cloud.ply) ou le format SPZ de Scaniverse. Un fichier cameras.json optionnel peut être placé à côté ou dans les dossiers parents. La boîte de dialogue offre des options de compression et un dossier de sortie ; même le préréglage de qualité « very low » est décrit comme raisonnablement utilisable, avec une capture de moins de 8 Mo au total. L'asset résultant se compose de plusieurs fichiers de données. Aucun modèle splat n'est inclus dans le dépôt en raison de leur taille ; le dépôt de l'article original renvoie à un zip de 14 Go de modèles pré-entraînés.
Rendu et contrôles
Un script GaussianSplatRenderer sur un objet de jeu prend l'asset créé dans son champ Asset. Le script expose des contrôles pour déboguer et visualiser les données, ainsi qu'un curseur pour déplacer la caméra du jeu vers l'un des emplacements de caméra de l'asset. Le rendu tient compte de la matrice de transformation de l'objet de jeu ; les modèles officiels apparaissent pivotés d'environ -160 degrés autour de X et mis en miroir autour de Z, donc la scène d'exemple applique une telle transformation. Une documentation supplémentaire couvre l'intégration du pipeline de rendu et l'édition des splats.
Notes de performance
Pour la scène « bicycle » de l'article avec 6,1 M de splats à 1200x797 et une qualité d'asset Medium (asset de 282 Mo), l'auteur rapporte sur Windows avec une NVIDIA RTX 3080 Ti : le visualiseur SBIR officiel à 7,4 ms (135 FPS) utilisant 4,8 Go de VRAM, et Unity sur DX12 ou Vulkan à 6,8 ms (147 FPS), répartis en 4,5 ms de rendu, 1,1 ms de tri et 0,8 ms de calcul de vue des splats, utilisant 1,3 Go de VRAM. Sur Mac avec un Apple M1 Max, Unity sur Metal est rapporté à 21,5 ms (46 FPS). Au-delà de l'asset chargé, environ 48 octets de mémoire GPU par splat sont actuellement nécessaires pour le tri et la mise en cache des données dépendantes de la vue.
Licence
Le code de l'auteur est sous licence MIT. Les composants tiers incluent zanders3/json (MIT), le code de tri GPU « DeviceRadixSort » contribué par Thomas Smith, et des correctifs VR contribués par @ninjamode basés sur Unity-VR-Gaussian-Splatting. Le README avertit que la licence de l'implémentation de l'article original restreint son logiciel d'entraînement à un usage éducatif, académique et non commercial, l'utilisation commerciale nécessitant une licence d'INRIA ; les utilisateurs doivent examiner séparément comment leurs fichiers PLY ont été produits.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.