3DGS是这两年最火的三维重建技术------拍一圈照片,就能重建出可实时渲染、可任意换视角的3D场景,想试试看效果,然后就有了这期 用 Carla 生成的数据,跑通 3DGS(3D Gaussian Splatting)建模。
1 为什么用 Carla 做 3DGS
| 用真实数据 | 用 Carla 仿真数据 |
|---|---|
| 相机标定可能不准 | 相机内外参绝对精确 |
| 场景不可控、不可复现 | 场景、光照、视角全可控 |
| 数据规模受限 | 想采集多少帧都行 |
结论 :Carla 是练 3DGS 的完美数据源------不用出门,就能拿到"完美采集"的图像序列。
2 整体流程
采集360张环视图像 → COLMAP预处理(位姿+稀疏点云) → LiteGS训练 → 可视化ply
第一步:采集车辆图像数据
以自车为采集对象,围绕车的几何中心360度,每隔1度采集一张,共360张720P图像。
bash
cd carla_sim/sim_workspace/slam/3dgs_data/
python surround_collect_gs_py2.py
这样保证每个角度都有观测,重建时不会出现"没见过的角度"。

第二步:COLMAP 预处理
3DGS 需要知道每张照片的相机位姿 和场景的稀疏点云------这就是 COLMAP 干的活(SfM 运动恢复结构)。
bash
cd carla_sim/sim_workspace/slam/3dgs_data/
bash colmap_3dgs.sh
一个真实的工程取舍 :这里用 apt 直接安装的 COLMAP,预处理跑在 CPU 上,速度比较慢。如果要用 GPU 加速,需要自己下载源码编译 GPU 版本的 COLMAP。
demo 够用:CPU 慢一点能接受,先把流程跑通再说。
第三步:LiteGS 训练
用 LiteGS(摩尔线程开源的 3DGS 训练框架)训练。注意:这个环境需要自己搭建,不在 Carla 项目里,照着官方文档配就行。
bash
python example_train.py --sh_degree 3 -s carla_colmap_data -i images -m ./output
参数说明:
| 参数 | 含义 |
|---|---|
--sh_degree 3 |
球谐系数阶数(3阶,颜色随视角变化更丰富) |
-s carla_colmap_data |
COLMAP 预处理后的数据目录(含360张图+相机参数+3D点云bin) |
-i images |
图像文件夹名 |
-m ./output |
训练输出的点云目录(ply格式) |

第四步:效果可视化
把训练好的 ply 文件导入在线查看器(如 https://superspl.at/editor)即可实时浏览。
放大看能清晰看到一个个"尖刺"------那就是高斯球。
3 基本原理
- 用大量可学习的 3D 半透明高斯椭球来显式表达场景;
- 渲染时把 3D 高斯投影到图像平面变成 2D 高斯斑点,按深度排序做 α 混合生成图片;
- 通过可微光栅化反向优化所有高斯参数,实现照片级新视角合成,且可以实时渲染。
每个高斯球保存了什么
| 参数 | 含义 |
|---|---|
| xyz | 3D 空间中心坐标 |
| scale | 3个方向的尺度(log空间,控制椭球大小) |
| rot(四元数) | 椭球的旋转 |
| opacity | 不透明度 |
| f_dc + f_rest(SH球谐系数) | 颜色,SH 可随观察角度改变颜色,实现照片级光影 |
一句话理解 3DGS:用几十万个"会发光的小椭球"拼出整个场景------比传统网格(Mesh)真实,比 NeRF 渲染快。
4 测试效果
下图这个角度是采集图像时相机的视角,这个视角渲染的效果就很好。

下图是放大后看到的高斯小球,类似很多毛刺。

反思:
整体效果还可以,但有几个明显问题,也是下一步改进方向:
- 有些角度效果不好------说明采集视角还不够充分
- 相机高度太低------视角偏平,看到的场景信息有限
- 只在一个平面上运动------纯水平环绕,缺少俯仰视角
改进方向 :让相机在采集时上下俯仰移动(不只是水平绕圈),这样能覆盖更多视角,重建质量会明显提升。
这个反思是 3DGS 的关键:重建质量的上限,在采集数据时就决定了。
本期视频
17_利用Carla场景跑通3DGS建模
5 往期回顾
- Carla仿真系列:16_多激光雷达标定------让三个雷达的"眼睛"对齐
- Carla仿真系列:15_把Carla接入FAST-LIO2 + SC-PGO,SLAM 前后端跑通
- Carla仿真系列:14_点云障碍物检测------不认脸,也能认出"障碍物"
- Carla仿真系列:13_点云地面提取------把点云里的"地皮"剥掉
- Carla仿真系列:12_激光雷达+语义分割,构建仿真环境的点云地图
- Carla仿真系列:11_Carla 上帝视角可视化,俯瞰整个仿真世界
- Carla仿真系列:10_Carla 双目障碍物测距,视差图还原真实距离
- Carla仿真系列:9_Carla 单目障碍物测距,四种方法原理与实测
- Carla仿真系列:8_相机与激光雷达融合,点云投影到图像
- Carla仿真系列:7_BEV + 语义分割融合,一张鸟瞰图看懂整个场景
- Carla仿真系列:6_实时图像语义分割,SegFormer 和 YOLOPv2 实测对比
- Carla仿真系列:5_Carla 四路相机标定与BEV环视拼接
- Carla仿真系列:4_在 Carla 的 Tesla 上装 4 路摄像头,并创建网格为环视拼接做准备
- Carla仿真系列:3_Carla 仿真中跑通 YOLOv8 实时目标检测
- Carla仿真系列:2_Carla 仿真中批量添加 NPC,让场景动起来
- Carla仿真系列:1_Carla + ROS 仿真环境从零搭建,跑通完整数据流
如果本文对你有帮助,欢迎点赞、关注、收藏 。
遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。
开源项目地址放在个人主页简介中,欢迎前往查看。
