Skip to content

踩坑GitHub google-deepmind/mujoco2023-10-10

MuJoCo passive viewer添加自定义geom不显示或被覆盖 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:add custom geoms to mujoco.viewer.launch_passive(GitHub google-deepmind/mujoco #1023)

状态:已解决

问题 ​

在 mujoco.viewer.launch_passive 中通过 viewer.scn 添加自定义 geom(如球体、胶囊体)无法显示或持续闪烁。即使使用 viewer.lock() 保护并调用 mjv_initGeom,几何体仍被 mjv_updateSceneFromState 内部逻辑覆盖。维护者确认旧版本不支持此操作,且调整 viewer.sync() 顺序无效。

环境 ​

MuJoCo Python Viewer (launch_passive),涉及 C++ 底层 simulate.cc 渲染管线;修复包含于 commit 2e15574b58df4bfda59e1642cf67699cb0a58667 及后续版本。

解决办法 ​

  1. 升级 MuJoCo 至包含 commit 2e15574b 的版本,可通过 pip install mujoco --pre -f https://py.mujoco.org/ 安装预发布版或等待正式发版。
  2. 在新版本中使用官方支持的 API 添加自定义 geom,避免直接修改被托管的 viewer.scn 结构体。
  3. 若使用 C++ 原生渲染循环而非 Python passive viewer,务必在 mjv_updateScene 之后、mjr_render 之前插入自定义 geom 绘制代码,防止被场景更新清除。
  4. 不要尝试手动 memcpy 合并 scn_geo 等非官方 hack 方案,该问题已在上游修复。

讨论原作者:@nopaddleboat 等,版权归原作者所有。

来源

本页事实对应的公开页面,以原文为准。

  1. GitHub google-deepmind/mujoco #1023:add custom geoms to mujoco.viewer.launch_passive访问 2026-10-26