167 lines
4.7 KiB
Markdown
167 lines
4.7 KiB
Markdown
# MuJoCo Web Platform V0.1 能力总结
|
||
|
||
## 1. 浏览器内模型导入
|
||
|
||
支持以下模型和资源格式:
|
||
|
||
- MJCF/XML
|
||
- URDF
|
||
- ZIP 工程包
|
||
- 文件夹工程
|
||
- OBJ、STL、DAE Mesh
|
||
- PNG、JPG 等纹理资源
|
||
- MJCF `include` 多文件工程
|
||
- URDF `package://` 资源路径
|
||
|
||
导入工程仅保存在当前浏览器会话和 WASM 文件系统中,不会修改或删除本地文件。
|
||
|
||
## 2. 工程资源管理
|
||
|
||
- 按真实目录层级展示工程文件。
|
||
- 目录优先并按文件名排序。
|
||
- 标记和高亮当前模型入口。
|
||
- 导入 URDF 时,只自动展开选中 URDF 所在的目录路径。
|
||
- 其他目录默认折叠,仍可手动展开。
|
||
- 支持从当前会话中移除整个工程。
|
||
|
||
## 3. URDF 兼容处理
|
||
|
||
提供两种加载方式:
|
||
|
||
- **转换为 MJCF(推荐)**
|
||
- **MuJoCo 原生 URDF**
|
||
|
||
自动兼容处理包括:
|
||
|
||
- 将 `package://` 地址改写为工程相对路径。
|
||
- 在浏览器内将 DAE 转换为 OBJ。
|
||
- 保留 DAE 单位、坐标轴和节点变换。
|
||
- 保留 URDF visual mesh 和 Body 层级。
|
||
- 处理 MuJoCo 不支持的重复 material。
|
||
- DAE 转换失败时提供降级几何。
|
||
- 自动添加 `z=0` 物理地面。
|
||
- 计算模型最低几何点并对齐到地面。
|
||
|
||
## 4. 固定与浮动基座
|
||
|
||
URDF 转 MJCF 时可以选择:
|
||
|
||
- **浮动基座**
|
||
- 自动添加根 `freejoint`。
|
||
- 支持重力、碰撞和外力运动。
|
||
- **固定基座**
|
||
- 根 Body 与世界固连。
|
||
|
||
切换基座类型后会自动重新转换并加载模型。
|
||
|
||
## 5. Three.js 模型可视化
|
||
|
||
- 渲染 MuJoCo Body、Geom 和 Mesh。
|
||
- 支持 Box、Sphere、Capsule、Cylinder、Ellipsoid、Plane 和 Mesh。
|
||
- 正确解析 MuJoCo `mjvGeom.dataid` 的 Mesh/凸包编码。
|
||
- 支持材质颜色、透明度和基础纹理。
|
||
- 默认显示 visual 并隐藏 collision。
|
||
- 可切换显示碰撞几何。
|
||
- 自动计算相机中心和观察范围。
|
||
- 无限地面不会影响相机包围范围。
|
||
- 支持相机旋转、缩放、平移和复位。
|
||
|
||
## 6. XYZ 方向指示器
|
||
|
||
- 右下角提供固定的 XYZ 方向指示器。
|
||
- X、Y、Z 分别使用红、绿、蓝色。
|
||
- 指示器随相机方向实时旋转。
|
||
- 不参与模型拾取和交互。
|
||
|
||
## 7. 模型结构树
|
||
|
||
左侧工程文件树下方显示 MuJoCo 模型结构:
|
||
|
||
- 按 Body 父子关系组织。
|
||
- 显示每个 Body 所属的 Joint。
|
||
- 支持层级展开和折叠。
|
||
- 鼠标悬停或键盘聚焦关节时:
|
||
- 高亮关节所属 Body。
|
||
- 在关节锚点显示黄色标记。
|
||
- 标记随仿真运动实时更新。
|
||
|
||
## 8. 仿真控制
|
||
|
||
支持:
|
||
|
||
- 播放和暂停。
|
||
- 单步运行。
|
||
- 完整重置。
|
||
- `0.25×`~`4×` 仿真速度。
|
||
- 实时仿真时间和物理耗时。
|
||
- 主线程步进预算及追帧限制。
|
||
- 播放中重置后仍可正常再次播放和暂停。
|
||
|
||
快捷键:
|
||
|
||
- `Space`:播放/暂停。
|
||
- `R`:重置。
|
||
- `1/2/3`:切换交互模式。
|
||
|
||
## 9. 关节控制
|
||
|
||
- 使用滑块调整旋转和滑动关节。
|
||
- 只读显示 Free、Ball 等不适合单滑块编辑的关节。
|
||
- 调整关节时自动暂停仿真。
|
||
- 支持重置所有可编辑关节。
|
||
- 重置时恢复初始位置并清零对应速度。
|
||
- 支持忽略 MuJoCo 关节限位。
|
||
- 恢复限位时自动将超限值钳制回合法范围。
|
||
- 高级模式显示原始上下限和“已忽略”状态。
|
||
- 旋转关节支持弧度制和角度制切换。
|
||
- 滑动关节保持使用米制单位。
|
||
|
||
## 10. Actuator 与交互工具
|
||
|
||
- 显示模型 Actuator。
|
||
- 根据 `ctrlrange` 提供控制滑块。
|
||
- 提供三种视口交互模式:
|
||
- 物体选择。
|
||
- 关节拖动。
|
||
- 外力施加。
|
||
- 外力强度可调。
|
||
- 松开鼠标后自动清除外力。
|
||
- 显示当前选中的 Body、Geom、类型和世界位置。
|
||
|
||
## 11. 界面与主题
|
||
|
||
- 中文用户界面。
|
||
- 左右面板支持显示、隐藏和宽度调整。
|
||
- 支持白天与黑夜主题切换。
|
||
- 主题选择保存到浏览器本地。
|
||
- UI、视口、网格和 XYZ 指示器同步换色。
|
||
- 使用约 `420 ms` 的平滑主题切换动画。
|
||
- 支持系统“减少动态效果”设置。
|
||
|
||
## 12. 状态与诊断
|
||
|
||
实时显示:
|
||
|
||
- 仿真时间。
|
||
- FPS。
|
||
- 物理步进耗时。
|
||
- 浏览器内存使用情况。
|
||
- WASM 加载状态。
|
||
- Body、Joint、Geom、Actuator、qpos 和 qvel 数量。
|
||
|
||
错误分类包括:
|
||
|
||
- 导入失败。
|
||
- ZIP 解析失败。
|
||
- 模型编译失败。
|
||
- 渲染失败。
|
||
|
||
URDF 自动兼容处理会以中文列出具体修改内容。
|
||
|
||
## 13. 当前限制
|
||
|
||
- DAE 转 OBJ 主要保留几何、单位和节点变换,内嵌材质及复杂贴图不能完全保留。
|
||
- 仿真和渲染目前运行在浏览器主线程。
|
||
- 关节滑块主要面向 Hinge 和 Slide,Free、Ball Joint 暂不提供完整的多自由度编辑器。
|
||
- 导入工程不会持久化,刷新页面后需要重新导入。
|