Relightable3DGaussian GUI交互式可视化指南:如何实时查看高斯点云、PBR材质与重光照效果
【免费下载链接】Relightable3DGaussian[ECCV2024] Relightable 3D Gaussian: Real-time Point Cloud Relighting with BRDF Decomposition and Ray Tracing项目地址: https://gitcode.com/gh_mirrors/re/Relightable3DGaussian
Relightable3DGaussian(ECCV 2024)是一个支持实时重光照的 3D 高斯点云渲染项目,通过 BRDF 分解 + 光线追踪实现逐点 PBR 材质建模。它的GUI 交互式可视化界面(基于 DearPyGui)能让你用鼠标实时旋转、缩放高斯点云,并在 PBR 着色、法线、深度、粗糙度等多种模式间一键切换,直观检查重光照效果。下面带你从零上手这个交互式查看器。
GUI 是什么?解决什么问题?
训练高斯点云时,我们常常想知道:几何长得对不对?法线有没有飞?粗糙度/金属度合不合理?
传统做法是每隔 N 步存一张渲染图,再手动打开查看,非常低效。Relightable3DGaussian 的做法是:在训练循环里同步跑一个实时渲染窗口,模型每变化一点,窗口里的画面就更新一次(每帧还有 GPU 计时器,直接显示推理耗时和 FPS)。它由项目根目录的 gui.py 实现,并在训练入口 train.py 中通过--gui参数被调用。
两种启动方式:训练时监看 vs 训练后回看
方式一:训练时加--gui实时监看
在你原有的训练命令末尾加上--gui,训练窗口会随训练进程一起启动:
# 3D Gaussian 模式 python train.py -s <数据路径> -m <输出路径>/3dgs --gui # Relightable 3D Gaussian(neilf)模式 python train.py -s <数据路径> -m <输出路径>/neilf -t neilf --gui训练循环里每执行一次windows.render(),GUI 就刷新一次画面,你可以亲眼看着点云从一团散点逐渐"长"出清晰的 PBR 材质。
方式二:训练完成后用gui.py独立查看
训练结束后,直接加载模型权重(自动寻找最新的chkpnt*.pth检查点,并同时加载环境光和 gamma 变换检查点):
# 普通 3D Gaussian python gui.py -m output/NeRF_Syn/lego/3dgs -t render # Relightable 3D Gaussian(重光照模式) python gui.py -m output/NeRF_Syn/lego/neilf -t neilf常用参数速查:
| 参数 | 说明 |
|---|---|
-m | 模型输出目录(含 point_cloud / 检查点) |
-t | 渲染类型:render或neilf |
--checkpoint | 指定某个chkpnt*.pth,默认自动取最新 |
--scale | 分辨率缩放倍率,显存不足时可调大降采样 |
--hdr2ldr | 把 HDR 渲染结果映射到 [0,1] 再显示 |
鼠标 + 控制面板:交互式操作速成 🖱️
GUI 采用经典的OrbitCamera(轨道相机)交互方案,鼠标操作非常直觉:
| 操作 | 效果 |
|---|---|
| 鼠标左键拖拽 | 绕场景中心旋转视角 |
| 鼠标右键拖拽 | 在相机平面内平移 |
| 鼠标滚轮 | 缩放(拉近/推远) |
窗口右侧是Control 控制面板,主要有三个控件:
- mode(显示模式):下拉切换要可视化的中间量(下一节详述);
- Downsample(降采样倍数,1~8):渲染分辨率实时缩放,显存/显卡吃紧时立刻能提升帧率;
- FoV(垂直视场角):实时调节相机视野。
面板顶部还常驻一行Infer time,显示当前帧 GPU 渲染耗时与 FPS,方便你判断实时性是否达标;Debug 折叠区则实时打印当前相机位姿矩阵。
多模式可视化:PBR 材质与重光照中间量一览
-t neilf(重光照模式)下,渲染函数 gaussian_renderer/neilf.py 会输出一整套中间量,GUI 的 mode 下拉框里每一个选项对应其中一项,这也是"看懂重光照效果"的关键:
| 模式 | 看什么 |
|---|---|
pbr | 最终 PBR 重光照结果(默认) |
render | 渲染图像 |
normal/pseudo_normal | 高斯表面法线(叠加透明度) |
depth | 深度图 |
opacity | 不透明度 |
base_color | BRDF 分解出的反照率(底色) |
metallic/roughness | 金属度 / 粗糙度 |
lights/local_lights/global_lights | 总光强及局部、全局光分解 |
visibility | 光线追踪得到的可见性(环境遮蔽) |
diffuse_light | 漫反射光照 |
num_contrib | 每像素参与积分的高斯数量 |
💡实用技巧:排查重光照异常时,先切到roughness和metallic看材质是否合理,再看visibility检查遮挡区域,最后回到pbr对比最终效果——这套流程能帮你快速定位是材质问题还是光照问题。
-t render(普通 3D Gaussian)模式则提供render / normal / depth / opacity / num_contrib等基础模式。
重光照效果是怎么算出来的?
GUI 里看到的pbr结果并不是简单的贴图颜色,而是完整的 PBR 渲染方程求值:
PBR 结果 = BRDF(由 base_color / metallic / roughness 分解)× 光照(环境光场 + 点式光线追踪的可见性)
具体来看,训练时会同时保存两类检查点,GUI 启动时会自动加载:
env_light_chkpnt*.pth:环境光照(球谐表示的环境光场),对应 scene/derect_light_sh.py 中的 DirectLightEnv;gamma_chkpnt*.pth:可学习的 HDR→LDR gamma 变换(scene/gamma_trans.py),保证高动态范围结果显示出来不炸白。
因此当你切换环境贴图(如项目自带的env_map/下的 hdr/jpg 全景图)重跑 relighting.py 后,再用 GUI 打开新结果,就能直观看到"同一场景、不同光照"的差异——这正是实时重光照的核心卖点。
性能与常见问题 ⚡
- 帧率太低?先把 Downsample 拉到 4~8,或用
--scale 2降低渲染分辨率; - 找不到环境光/gamma 检查点?GUI 会打印警告并跳过对应模块,只影响
pbr结果精度,不影响几何类模式查看; - 窗口不出现?GUI 依赖
dearpygui==1.10.1(见 environment.yml),请确认 conda 环境r3dg中已正确安装; - 显存不足?官方在 RTX 3090(24G)上运行,显存较小的卡建议配合降采样参数使用。
小结
| 需求 | 操作 |
|---|---|
| 训练时实时监看 | 训练命令加--gui |
| 训练后查看模型 | python gui.py -m <模型目录> -t neilf |
| 切换 PBR/法线/深度等 | Control 面板的 mode 下拉框 |
| 掉帧急救 | 调大 Downsample /--scale |
| HDR 过曝 | 加--hdr2ldr |
核心代码都集中在 gui.py(OrbitCamera 交互 + DearPyGui 面板)、gaussian_renderer/(各渲染模式实现),配合上文的模式速查表,你可以快速把 Relightable3DGaussian 变成一个"所见即所得"的重光照调试工具。
【免费下载链接】Relightable3DGaussian[ECCV2024] Relightable 3D Gaussian: Real-time Point Cloud Relighting with BRDF Decomposition and Ray Tracing项目地址: https://gitcode.com/gh_mirrors/re/Relightable3DGaussian
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考