splatviz: 开启3D高斯散射的实时交互新篇章
在3D视觉和计算机图形学领域,3D高斯散射(3D Gaussian Splatting, 3DGS)技术正在引起广泛关注。随着这一技术的快速发展,开发者和研究人员迫切需要一款强大而灵活的工具来可视化、编辑和分析3DGS场景。近日,由Florian Barthel开发的splatviz应运而生,为3DGS领域带来了一股新的活力。
🌟 splatviz简介
splatviz是一款基于Python的交互式3D高斯散射场景查看器,其核心特点是支持实时编辑和分析。通过利用Python GUI库pyimgui,splatviz能够在渲染前直接操作高斯对象,从而实现无限的编辑和可视化可能性。
🛠️ 主要功能
-
实时编辑: 用户可以在运行时实时编辑高斯Python对象,编辑的代码会在将对象传递给CUDA渲染器之前执行。
-
多场景对比: 支持同时查看多个3D场景,可以并排或分屏模式进行比较。
-
动态评估: 可以在渲染后执行Python表达式,访问和调试3D场景中的任何变量。
-
保存功能: 支持保存当前场景的渲染图像、PLY文件,甚至可以生成360°旋转视频。
-
训练监控: 最新更新支持实时跟踪正在运行的3DGS训练过程。
💡 核心组件
splatviz由多个功能强大的组件(Widget)组成,每个组件都针对特定的任务进行了优化:
加载组件(Load Widget)
加载组件允许用户浏览和加载不同的3D场景。它支持加载.ply文件或使用压缩方法的.yml文件。用户可以通过关键词过滤所需的场景,也可以同时加载多个场景进行对比。
编辑组件(Edit Widget)
编辑组件是splatviz的核心功能,它允许用户在运行时实时编辑高斯Python对象。用户可以在文本区域中输入Python代码,这些代码会在高斯对象传递给CUDA渲染器之前执行。这意味着编辑的可能性是无限的。
例如,用户可以轻松地修改所有高斯的缩放和不透明度:
gaussian._scaling = gaussian._scaling * 0 - 8
gaussian._opacity = gaussian._opacity * 0 + 10
self.bg_color[:] = 1
为了实现平滑的编辑过渡,用户可以创建滑块,并在编辑器中通过slider.name
(如slider.x
)来访问滑块的值。
评估组件(Eval Widget)
评估组件用于调试高斯散射对象。用户可以输入Python代码,这些代码会在渲染后执行,从而访问渲染上下文中的任何变量并将其可视化为直方图。
相机组件(Camera Widget)
相机组件允许用户定义相机的类型和参数。用户可以在"Orbit"和"WASD"两种模式之间切换,前者允许用户围绕场景中的特定点旋转相机,后者则模拟了类似Unity的自由飞行控制。
视频组件(Video Widget)
视频组件可以创建当前对象的360°旋转视频序列。用户只需定义相机高度和渲染分辨率即可。
性能组件(Performance Widget)
性能组件允许用户跟踪查看器和渲染器的FPS,并可以设置FPS限制和启用垂直同步。
渲染组件(Render Widget)
在渲染组件中,用户可以指定渲染分辨率和渲染模式。除了RGB模式外,还可以渲染图像的3D深度和alpha值。
保存组件(Save Widget)
保存组件允许用户保存当前(编辑后)3D场景的.ply文件或渲染图像。这些文件会被保存在_screenshots或_ply_files目录下。
🚀 安装与使用
splatviz的安装过程相对简单,主要包括以下步骤:
- 克隆仓库:
git clone https://github.com/Florian-Barthel/splatviz.git --recursive
- 创建并激活conda环境:
conda env create -f environment.yml
conda activate gs-view
- 运行主程序:
python run_main.py
用户还可以指定数据路径来加载特定的.ply或.yml文件:
python run_main.py --data_path=path/with/ply/files
🔮 未来展望
splatviz的开发团队对这个项目充满热情,他们计划在未来实现以下目标:
- 测试其他3DGS渲染器以支持OSX系统
- 改进视频组件的功能
- 提供编写新组件或渲染器的教程
🤝 贡献与引用
splatviz是一个开源项目,欢迎社区成员贡献新功能或改进设计。项目的主要目标是创建一个易于使用的工具,用于调试和理解3D高斯散射对象。
如果您发现这个查看器对您的工作有帮助,请考虑引用以下论文:
@misc{barthel2024gaussian,
title={Gaussian Splatting Decoder for 3D-aware Generative Adversarial Networks},
author={Florian Barthel and Arian Beckmann and Wieland Morgenstern and Anna Hilsmann and Peter Eisert},
year={2024},
eprint={2404.10625},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
📚 参考资料
splatviz的开发受到了多个项目的启发和支持:
- GUI: pyimgui和imgui_bundle
- 原始代码库: EG3D
- 3DGS: 3D Gaussian Splatting
- 3DGS场景压缩: Compact 3D Scene Representation via Self-Organizing Gaussian Grids
- 带深度和alpha的3DGS光栅化器: Diff rasterizer with depth and alpha
总之,splatviz为3D高斯散射技术的研究和应用提供了一个强大而灵活的工具。无论是对于研究人员还是开发者,它都能大大提高工作效率,加速创新过程。随着3DGS技术的不断发展,相信splatviz也将继续演进,为这个充满活力的领域带来更多可能性。