外观
踩坑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 及后续版本。
解决办法
- 升级 MuJoCo 至包含 commit
2e15574b的版本,可通过pip install mujoco --pre -f https://py.mujoco.org/安装预发布版或等待正式发版。 - 在新版本中使用官方支持的 API 添加自定义 geom,避免直接修改被托管的
viewer.scn结构体。 - 若使用 C++ 原生渲染循环而非 Python passive viewer,务必在
mjv_updateScene之后、mjr_render之前插入自定义 geom 绘制代码,防止被场景更新清除。 - 不要尝试手动 memcpy 合并
scn_geo等非官方 hack 方案,该问题已在上游修复。
讨论原作者:@nopaddleboat 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。