news 2026/5/12 4:22:30

自动驾驶—CARLA仿真(10)tutorial_gbuffer demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(10)tutorial_gbuffer demo

测试用例

PythonAPI/examples/tutorial_gbuffer.py
这是一个高级传感器数据采集示例,用于:

  1. 生成一辆自动驾驶车辆
  2. 挂载高分辨率 RGB 摄像头
  3. 同时保存最终渲染图像(Final Color)和所有 GBuffer 纹理

适用于计算机视觉研究、神经渲染、图像合成、感知算法训练等需要底层图形数据的场景。
如下,展示下FinalColor和GBuffer-B:


🔑 主要模块解析

1.GBuffer 是什么?
  • GBuffer(Geometry Buffer)延迟渲染(Deferred Rendering)中的核心概念
  • 它将场景的几何与材质信息分通道存储,而非直接输出最终颜色
  • CARLA 基于 Unreal Engine,天然支持 GBuffer 输出

✅ 通过 GBuffer,你可以获取:

  • 场景深度(SceneDepth)
  • 表面法线(GBufferB/C)
  • 材质属性(金属度、粗糙度等)
  • 运动矢量(Velocity)
  • 屏幕空间环境光遮蔽(SSAO)

2.主车与摄像头初始化
# 固定使用第一个出生点(非随机)transform=world.get_map().get_spawn_points()[0]vehicle=world.spawn_actor(bp,transform)vehicle.set_autopilot(True)# 创建 1920x1080 高分辨率 RGB 摄像头camera_bp=blueprint_library.find('sensor.camera.rgb')camera_bp.set_attribute('image_size_x','1920')camera_bp.set_attribute('image_size_y','1080')camera=world.spawn_actor(camera_bp,carla.Transform(carla.Location(x=1.5,z=2.4)),attach_to=vehicle)
  • 使用固定出生点确保实验可复现
  • 高分辨率设置(1080p)满足研究需求
  • 摄像头安装在车头前方(x=1.5m, z=2.4m)

3.GBuffer 启用与监听(核心)
# 必须先启用 GBuffercamera.enable_gbuffers(True)# 注册 Final Color 回调(常规图像)camera.listen(lambdaimage:image.save_to_disk('_out/FinalColor-%06d.png'%image.frame))# 注册所有 GBuffer 通道回调camera.listen_to_gbuffer(carla.GBufferTextureID.SceneColor,...)camera.listen_to_gbuffer(carla.GBufferTextureID.SceneDepth,...)...camera.listen_to_gbuffer(carla.GBufferTextureID.SSAO,...)
支持的 GBuffer 通道包括:
通道用途
SceneColor最终未应用后处理的颜色
SceneDepth场景深度(可用于 3D 重建)
SceneStencil模板缓冲(物体 ID 掩码)
GBufferA/B/C/D核心几何/材质数据(法线、粗糙度、金属度等)
Velocity屏幕空间运动矢量(用于动态模糊)
SSAO屏幕空间环境光遮蔽
CustomDepth/Stencil自定义深度/模板(可用于特定物体分割)

GBufferE/F 在简单场景中可能为空,因它们通常用于高级材质(如透明、次表面散射)。


4.数据输出结构

所有图像按帧号保存至_out/目录:

_out/ ├── FinalColor-000001.png # 最终渲染图 ├── GBuffer-SceneColor-000001.png ├── GBuffer-SceneDepth-000001.png ├── GBuffer-GBufferA-000001.png ... └── GBuffer-SSAO-000001.png

✅ 每帧包含14+ 个图像文件,形成完整的渲染数据集。


5.资源管理
  • 使用actor_list跟踪所有生成的 Actor
  • finally块确保退出时销毁摄像头和车辆
  • 运行时间延长至10 秒(比基础示例更长,采集更多数据)

🎯 核心应用场景

应用领域如何利用 GBuffer
NeRF / 3D 重建SceneDepth+SceneColor提供深度-颜色对
语义分割SceneStencilCustomStencil提供实例 ID
去模糊/视频插帧Velocity提供运动信息
材质编辑GBufferB/C/D包含 PBR 材质参数
合成数据增强修改 GBuffer 后重新着色,生成新视角

⚠️ 注意事项

  1. 性能开销大

    • 同时输出 14+ 通道会显著降低仿真 FPS
    • 建议在离线数据采集时使用
  2. 磁盘空间消耗快

    • 1080p × 14 通道 × 30 FPS ≈每秒 600MB+
    • 确保_out/目录有足够空间
  3. 部分通道可能为空

    • 如注释所述,GBufferE/F在可能无数据

✅ 总结

该脚本是 CARLA高级图形数据采集的标杆示例,展示了:

  1. 如何启用并监听GBuffer 多通道输出
  2. 如何同步保存最终图像 + 底层渲染数据
  3. 计算机视觉前沿研究提供高质量合成数据源
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 1:37:00

24小时从0到1:React+Web3.js极速开发DApp MVP的完整避坑指南

引言:当区块链开发进入"快餐时代"在2025年的区块链开发生态中,一个显著趋势正在显现:DApp开发周期从数月压缩至数天。随着Solana生态单日新增500智能合约、以太坊Layer2的Gas费降至0.01美元以下,开发者面临的新挑战已不…

作者头像 李华
网站建设 2026/5/8 17:05:26

Part 09|我为什么选择从「业务边界」开始拆系统

当我真正进入系统设计阶段时,有一个问题很快摆在了我面前:这套系统,第一刀该从哪里下?是先定技术架构, 还是先画模块图, 又或者直接从某个功能最复杂的地方开始拆? 我最后选择的,并不…

作者头像 李华
网站建设 2026/5/9 2:22:41

PyTorch模型转换指南:将Seed-Coder-8B-Base用于自定义训练

PyTorch模型转换指南:将Seed-Coder-8B-Base用于自定义训练 在现代软件工程中,开发者面对的不仅是功能实现的压力,还有日益复杂的编码规范、团队协作和系统维护成本。智能编程助手不再只是“锦上添花”的工具,而是逐渐成为提升生产…

作者头像 李华
网站建设 2026/5/10 13:37:26

10、应用程序国际化与本地化全攻略

应用程序国际化与本地化全攻略 在全球化的今天,将应用程序部署到国际市场时,提供本地化版本是必不可少的。这不仅涉及到不同语言的翻译,还包括时间、日期、货币值的表示差异,以及文字读写方向等复杂的书写语言问题。 1. 国际化与本地化的概念 国际化(i18n)和本地化(l…

作者头像 李华
网站建设 2026/5/8 18:31:53

11、Qt 插件开发全解析

Qt 插件开发全解析 1. Qt 插件基础 Qt 提供了丰富的编程接口,能与多种技术交互。借助插件,我们不仅可以为 Qt 增添新特性,还能让自己的应用程序更具扩展性。 在深入开发之前,我们得先了解插件的工作原理。对 Qt 应用而言,插件就是一个类的实例,其可用方法由接口类决定…

作者头像 李华
网站建设 2026/5/11 0:11:43

java计算机毕业设计生物样本采集系统 基于SpringBoot的临床生物标本信息管理系统的设计与实现 面向医院检验科的生物样本库在线管理平台的设计与实现

计算机毕业设计生物样本采集系统g774o9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。近年来,精准医疗与多中心科研合作快速升温,医院、实验室每天产生的…

作者头像 李华