这个项目能做什么
本仓库是一个基于Unity的3D高斯泼溅查看器,实现了SIGGRAPH 2023论文《3D Gaussian Splatting for Real-Time Radiance Field Rendering》(作者:Kerbl、Kopanas、Leimkühler和Drettakis)中的实时可视化部分。它消费已训练好的高斯泼溅模型文件,而非自行执行训练,并且明确基于原始论文,而非后续众多高斯泼溅研究变体。
状态与平台支持
作者表示,截至2023年12月,暂无重大进一步开发计划。已知可用的平台是使用D3D12、Metal或Vulkan图形API的平台:Windows(D3D12或Vulkan)、Mac(Metal)和Linux(Vulkan)。DX11无法工作。不支持OpenGL和OpenGL ES,WebGPU尚不可行,移动端支持不一致,部分iOS和Android设备被报告为无法运行。部分VR设备据报可工作(HTC Vive、Varjo Aero、Quest 3、Quest Pro),而其他设备如Apple Vision Pro可能无法工作。
使用流程
将projects/GaussianExample文件夹作为Unity项目打开(使用Unity 2022.3开发),并加载GSTestScene场景。GaussianSplat资产通过Tools -> Gaussian Splats -> Create GaussianSplatAsset菜单创建。输入可以是来自原始3DGS论文的PLY文件(通常为point_cloud/iteration_*/point_cloud.ply)或Scaniverse SPZ格式。可选的cameras.json可以放在旁边或父文件夹中。该对话框提供压缩选项和输出文件夹;即使是“very low”质量预设也被描述为相当可用,有一次捕获总大小低于8MB。生成的资产由若干数据文件组成。由于体积原因,仓库中不捆绑任何泼溅模型;原始论文仓库链接到一个14GB的预训练模型压缩包。
渲染与控制
游戏对象上的GaussianSplatRenderer脚本在其Asset字段中接收所创建的资产。该脚本公开了用于调试和可视化数据的控件,以及一个滑块,用于将游戏相机移动到资产的某个相机位置。渲染会考虑游戏对象的变换矩阵;官方模型看起来绕X轴旋转约-160度并绕Z轴镜像,因此示例场景应用了这样的变换。附加文档涵盖了渲染管线集成和泼溅编辑。
性能说明
对于论文中的“bicycle”场景,包含610万个泼溅,分辨率为1200x797,资产质量为Medium(282MB资产),作者报告在Windows上使用NVIDIA RTX 3080 Ti时:官方SBIR查看器为7.4ms(135FPS),使用4.8GB显存;Unity在DX12或Vulkan上为6.8ms(147FPS),其中渲染4.5ms、排序1.1ms、泼溅视图计算0.8ms,使用1.3GB显存。在Mac上使用Apple M1 Max时,Unity在Metal上据报告为21.5ms(46FPS)。除已加载资产外,当前每个泼溅大约需要48字节GPU内存用于排序和缓存视图相关数据。
许可
作者的代码采用MIT许可。第三方组件包括zanders3/json(MIT)、由Thomas Smith贡献的GPU排序代码“DeviceRadixSort”,以及由@ninjamode基于Unity-VR-Gaussian-Splatting贡献的VR修复。README提醒,原始论文实现的许可将其训练软件限制为教育、学术和非商业用途,商业使用需获得INRIA的许可;用户必须另行考虑其PLY文件的生成方式。
评论
0 评分人数达到10人后显示
登录后参与讨论。