SceneManager 场景管理#

SceneManager 类#

SceneManager类是场景管理的核心控制器,采用Builder模式设计,通过链式调用构建复杂的仿真场景:

初始化配置

系统在初始化时配置Genesis引擎的基础参数,包括后端选择(GPU加速)、物理仿真参数和渲染选项。这些配置确保了仿真的性能和质量。

分步构建流程

场景构建采用分步执行的方式:创建场景 → 添加元素 → 构建场景 → 设置视角。这种设计确保了场景元素的正确初始化和依赖关系的处理。

资源路径管理

通过 _get_sim_asset 方法统一管理仿真资源的路径,支持纹理、模型、材质等多种资源类型的加载。

核心功能模块#

场景初始化#

场景初始化是整个仿真环境的基础,包含多个关键配置:

物理引擎配置
  • 时间步长设置(dt=0.01)确保仿真精度

  • 重力参数(0, 0, -9.81)模拟真实物理环境

  • GPU后端选择提供高性能计算支持

视觉渲染配置
  • 分辨率设置(1366×768)提供高清显示

  • 相机参数配置包括位置、朝向和视野角度

  • 帧率限制(60 FPS)保证流畅的视觉体验

可视化选项
  • 坐标系显示控制便于调试和开发

  • 环境光照设置(0.3, 0.3, 0.3)提供合适的光照条件

  • 平面反射效果增强视觉真实感

def create_scene(self):
    gs.init(backend=gs.gpu)

    self.scene = gs.Scene(
        show_viewer=True,
        sim_options=gs.options.SimOptions(
            dt=0.01,
            gravity=(0, 0, -9.81),
        ),
        viewer_options=gs.options.ViewerOptions(
            res=(1366, 768),
            camera_pos=(-4.0, 2.5, 3.0),
            camera_lookat=(0.0, 0.0, 0.5),
            camera_fov=45,
            max_FPS=60,
        ),
        renderer=gs.renderers.Rasterizer(),
    )

环境元素构建#

地面系统

地面采用平面几何体,配置了真实的瓷砖纹理和法线贴图。粗糙度设置为0.9,模拟真实地面的摩擦特性。纹理映射增强了视觉效果的真实感。

墙体结构

房间采用四面墙体的封闭结构,每面墙都是独立的盒子几何体。墙体设置为固定实体(fixed=True),不参与物理碰撞计算,但提供碰撞边界。

机器人载体

机器人使用盒子几何体表示,配置了铁质材料和蓝色外观。机器人是可移动实体(fixed=False),参与完整的物理仿真,包括重力、惯性和碰撞响应。

装饰家具

系统支持加载复杂的3D模型作为场景装饰,如椅子等家具。这些模型使用OBJ格式,配备完整的材质和纹理信息,增强了场景的真实感。

相机系统集成#

相机参数配置

相机系统支持灵活的参数配置,包括分辨率、位置、朝向和视野角度。这些参数可以根据不同的应用需求进行调整。

动态定位机制

相机支持相对于机器人的动态定位,可以实现跟随拍摄、固定视角拍摄等多种模式。位置计算考虑了机器人的当前姿态和运动状态。

多相机支持

系统架构支持多个相机的同时使用,每个相机都有独立的参数配置和数据输出通道。

材质和纹理系统#

纹理映射机制
  • 漫反射纹理(diffuse_texture):定义物体的基础颜色

  • 法线纹理(normal_texture):增加表面细节和凹凸感

  • 粗糙度纹理(roughness_texture):控制表面的光泽度分布

资源管理策略

纹理资源通过统一的路径管理系统加载,支持相对路径和绝对路径。系统会自动处理资源的缓存和内存管理。

场景构建流程#

标准构建流程
  1. 初始化Genesis引擎和场景对象

  2. 添加基础环境元素(地面、墙体)

  3. 添加机器人和相机等动态元素

  4. 添加装饰性元素(家具、道具)

  5. 执行场景构建(build)操作

  6. 配置视角跟随和渲染参数