用途:MuJoCo 的图形渲染分为两类工作流。一是无窗口的离屏渲染(mujoco.Renderer / mjrContext),用于采集图像缓冲区,适合批量数据集收集、强化学习观测与自动化视觉回归测试;二是交互式查看器(mujoco.experimental.studio / mujoco.viewer),用于实时检查与相机操作。
主要能力:Python 侧通过 mujoco.Renderer 管理 GL 上下文、场景几何同步与缓冲区回读。可渲染 RGB(形如 (480,640,3) 的 uint8);调用 enable_depth_rendering() 输出以米为单位的深度;调用 enable_segmentation_rendering() 输出分割结果,第一通道为对象 ID(背景为 -1),第二通道为对象类型(mjtObj 枚举,如 mjOBJ_GEOM)。C++ 侧使用 mjvScene 与 mjrContext 提供离屏渲染能力,包括 mjr_render、mjr_readPixels。
使用方式:在无头 Linux 上需先设置环境变量再导入 mujoco,例如 os.environ['MUJOCO_GL']='egl'(NVIDIA GPU 硬件加速离屏)或 'osmesa'(CPU 软件光栅化),也可写作 MUJOCO_GL=egl python3 my_script.py;import mujoco 必须在设置之后。Renderer 建议用 with 上下文管理器,并尽量在循环外只创建一次;renderer.render() 返回内部缓冲区视图,需保存帧时调用 .copy()。离屏分辨率受模型预分配尺寸限制,可在 spec.visual.global_.offwidth/offheight 调整后重新编译;XML 中只有最后一个 <visual> 块生效,多项设置需合并到同一个块。可通过 MjvOption 控制 geomgroup 可见性与可视化标志,XML 中相机沿自身 -Z 方向观察,+X 向右、+Y 向上。还提供实验性的 Filament PBR 后端绑定 mujoco.rendering.filament。
限制与注意事项:无头环境必须配置 MUJOCO_GL。GL 上下文会泄漏,循环中未释放会耗尽上下文;C++ 中 mjr_freeContext 必须在底层 OpenGL 上下文销毁前调用;传入的相机名必须存在于模型中。具体收费、价格与平台信息暂未提供。