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):控制表面的光泽度分布
- 资源管理策略
纹理资源通过统一的路径管理系统加载,支持相对路径和绝对路径。系统会自动处理资源的缓存和内存管理。
场景构建流程#
- 标准构建流程
初始化Genesis引擎和场景对象
添加基础环境元素(地面、墙体)
添加机器人和相机等动态元素
添加装饰性元素(家具、道具)
执行场景构建(build)操作
配置视角跟随和渲染参数