Add multiple research papers in PDF format to the repository, including recent works on AI and physics, with file sizes ranging from 1.7 MB to 32.3 MB.
Sync to site1 / sync (push) Has been cancelled
Sync to site1 / sync (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,590 @@
|
||||
---
|
||||
title: "结合 3D 游戏引擎的室内世界模型验证方案"
|
||||
date: 2026-05-31
|
||||
draft: false
|
||||
tags: ["规划", "3D游戏引擎", "仿真", "数字孪生", "物理", "机器人"]
|
||||
categories: ["GameEngine"]
|
||||
---
|
||||
|
||||
# 结合 3D 游戏引擎的室内世界模型验证方案
|
||||
|
||||
## 1. 方案定位
|
||||
|
||||
本方案在现有 **RoomPlan / ZED 2i / PRISM / 世界模型** 技术链路之外,引入 3D 游戏引擎作为一个新的工程层:
|
||||
|
||||
> **3D 游戏引擎不是替代 SLAM、PRISM 或 Isaac Sim,而是作为“可交互数字孪生运行时”:负责实时渲染、交互编辑、轻量物理验证、合成数据生成、多人演示与人工标注。**
|
||||
|
||||
它解决现有方案中的三个缺口:
|
||||
|
||||
1. **可视化缺口**:研究系统输出的 mesh、3DGS、场景图、语义层需要一个直观、可交互、可调试的前台。
|
||||
2. **交互缺口**:机器人任务不仅要离线评测,还要让研究员快速拖拽物体、修改材质、设置碰撞体、回放动作。
|
||||
3. **数据缺口**:真实酒店采集成本高,游戏引擎可生成可控扰动、光照变化、遮挡、人流和任务变体。
|
||||
|
||||
---
|
||||
|
||||
## 2. 总体架构
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
subgraph CAPTURE["真实世界采集"]
|
||||
IPHONE["iPhone RoomPlan<br/>USDZ / JSON / CAD"]
|
||||
ZED["ZED 2i<br/>RGB-D / VIO / 点云"]
|
||||
end
|
||||
|
||||
subgraph MEMORY["空间记忆与世界模型"]
|
||||
PRISM["PRISM<br/>L1-L4 空间记忆"]
|
||||
WM["World Model<br/>M-JEPA / DreamerV3 / Video WM"]
|
||||
end
|
||||
|
||||
subgraph ASSET["资产转换层"]
|
||||
CLEAN["Mesh 清洗<br/>尺度/坐标/法线/拓扑"]
|
||||
SEM["语义绑定<br/>object_id / affordance / material"]
|
||||
USD["USD / glTF / FBX<br/>统一资产包"]
|
||||
end
|
||||
|
||||
subgraph ENGINE["3D 游戏引擎运行时"]
|
||||
VIEW["实时可视化<br/>PBR / 灯光 / UI"]
|
||||
PHYS["轻量物理沙盒<br/>碰撞 / 约束 / 关节"]
|
||||
SYN["合成数据<br/>RGB / Depth / Seg / Flow"]
|
||||
EDIT["交互编辑<br/>拖拽 / 标注 / Remix"]
|
||||
end
|
||||
|
||||
subgraph ROBOT["机器人与评测"]
|
||||
ROS["ROS 2 Bridge"]
|
||||
TASK["任务脚本<br/>导航 / 抓取 / 推拉"]
|
||||
EVAL["评测指标<br/>成功率 / 偏差 / 鲁棒性"]
|
||||
end
|
||||
|
||||
IPHONE --> CLEAN
|
||||
ZED --> CLEAN
|
||||
CLEAN --> SEM --> USD --> ENGINE
|
||||
PRISM --> SEM
|
||||
ENGINE --> ROS --> TASK --> EVAL
|
||||
ENGINE --> SYN --> WM
|
||||
WM --> PRISM
|
||||
PRISM --> ENGINE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 引擎选型建议
|
||||
|
||||
| 引擎 | 适合角色 | 优点 | 局限 | 建议定位 |
|
||||
|------|----------|------|------|----------|
|
||||
| **Unreal Engine** | 高保真酒店数字孪生、演示、复杂交互 | 渲染质量强,Chaos Physics 支持刚体、约束、破坏、流体等实时物理能力 | 机器人生态需要自建桥接,工程复杂度高 | **主推荐:视觉与交互前台** |
|
||||
| **Unity** | 快速原型、Web/移动端、CrowdRoom 编辑器 | C# 开发快,生态适合工具型产品,Unity Robotics 有 ROS TCP Connector | 官方 ROS TCP Connector 最近主版本较旧,长期维护风险需评估 | **推荐:MVP 和产品化编辑器** |
|
||||
| **Godot** | 开源轻量工具、内部标注器 | 开源、轻量、部署灵活 | 高保真渲染、机器人仿真生态弱 | **可选:低成本标注/浏览工具** |
|
||||
| **NVIDIA Isaac Sim** | 机器人精确仿真、传感器、合成数据 | 基于 OpenUSD,面向机器人仿真、测试与合成数据,天然适合 URDF/CAD/USD 资产链路 | 不适合作为普通用户产品前台,学习和硬件成本较高 | **保留:严肃机器人仿真后端** |
|
||||
|
||||
推荐采用“双引擎分工”:
|
||||
|
||||
- **Unreal / Unity**:面向人类研究员和产品用户的交互前台。
|
||||
- **Isaac Sim**:面向机器人控制、传感器仿真、强化学习和 sim-to-real 的高可信仿真后端。
|
||||
|
||||
---
|
||||
|
||||
## 4. 核心管线
|
||||
|
||||
### 4.1 真实扫描到游戏场景
|
||||
|
||||
```text
|
||||
iPhone RoomPlan / ZED 2i
|
||||
→ 坐标系统一:米制、Z-up/Y-up 转换、世界原点锚定
|
||||
→ Mesh 清洗:去噪、补洞、简化、法线修复
|
||||
→ 语义绑定:room_id、object_id、category、bbox、affordance
|
||||
→ 碰撞体生成:墙体 box collider、家具 convex hull、可操作物体 articulated body
|
||||
→ 材质重建:PBR baseColor / roughness / metallic / normal
|
||||
→ 导出:USD 为主,glTF/FBX 为 Web 和通用引擎备选
|
||||
```
|
||||
|
||||
关键原则:
|
||||
|
||||
- **视觉资产和物理资产分离**:高精 mesh 用于渲染,低复杂度 collider 用于物理。
|
||||
- **PRISM ID 贯穿全链路**:游戏引擎中的每个物体都保留 `spatial_node_id`,方便回写空间记忆。
|
||||
- **可编辑但可追溯**:人工在引擎中修正的材质、碰撞体、关节参数,要以 patch 形式回写,而不是覆盖原始扫描。
|
||||
|
||||
### 4.2 游戏引擎到 PRISM
|
||||
|
||||
游戏引擎不是只读 viewer,而是 PRISM 的交互标注和实验入口:
|
||||
|
||||
| 引擎事件 | 回写到 PRISM |
|
||||
|----------|--------------|
|
||||
| 研究员拖动椅子 | `delta/object_pose_changed` |
|
||||
| 修正门的旋转轴 | L4 节点 `joint.axis` / `joint.limit` |
|
||||
| 标注“可抓取”区域 | `affordance.graspable_regions` |
|
||||
| 设置碰撞体 | L2/L4 物理代理属性 |
|
||||
| 回放机器人失败轨迹 | episode memory + anomaly |
|
||||
|
||||
### 4.3 游戏引擎到世界模型
|
||||
|
||||
游戏引擎可生成有控制变量的训练数据:
|
||||
|
||||
| 数据类型 | 用途 |
|
||||
|----------|------|
|
||||
| RGB / Depth / Normal | 训练感知 encoder |
|
||||
| Instance Segmentation | 训练 2D/3D 语义分割 |
|
||||
| Optical Flow | 训练动态预测 |
|
||||
| Action-State Pair | 训练 DreamerV3 / TD-MPC2 |
|
||||
| Counterfactual Rollout | 训练“如果推椅子会怎样”类预测 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 可交互数字孪生运行时详细方案
|
||||
|
||||
本节把“可交互数字孪生运行时”具体化为一个可开发的软件系统。它不是简单的 3D Viewer,而是一个面向研究员、机器人算法工程师和数据标注人员的 **Scene Lab**:能看、能查、能改、能模拟、能回放、能把修改写回 PRISM。
|
||||
|
||||
### 5.1 产品形态
|
||||
|
||||
建议先做桌面端,再做 Web 端:
|
||||
|
||||
| 形态 | 技术路线 | 目标用户 | 适合阶段 |
|
||||
|------|----------|----------|----------|
|
||||
| **桌面 Scene Lab** | Unity Editor Runtime / Unreal Editor Utility | 研究员、算法工程师 | P0 MVP |
|
||||
| **Web Viewer** | Three.js/R3F 或 Unity WebGL | PM、合作酒店、标注人员 | P1 展示与轻编辑 |
|
||||
| **Pixel Streaming 高保真版** | Unreal Pixel Streaming | 远程演示、客户评审 | P1/P2 |
|
||||
|
||||
P0 阶段推荐做 **Unity 桌面 Scene Lab**,原因是迭代快、UI 工具多、和 JSON/glTF/ROS 接口打通成本低。Unreal 分支用于高保真展示,不阻塞 MVP。
|
||||
|
||||
### 5.2 主界面布局
|
||||
|
||||
```text
|
||||
┌──────────────────────────────────────────────────────────────┐
|
||||
│ Top Bar: 场景选择 | 模式切换 | 保存 Patch | 运行任务 | 导出数据 │
|
||||
├───────────────┬──────────────────────────────┬───────────────┤
|
||||
│ Scene Tree │ │ Inspector │
|
||||
│ - room_305 │ 3D Viewport │ object_id │
|
||||
│ - wall_01 │ 轨道相机 / 第一人称 / 机器人视角 │ pose/bbox │
|
||||
│ - bed_01 │ 语义高亮 / 热力图 / 轨迹回放 │ material │
|
||||
│ - chair_01 │ │ physics │
|
||||
├───────────────┴──────────────────────────────┴───────────────┤
|
||||
│ Timeline / Logs: episode 回放 | 事件列表 | PRISM delta diff │
|
||||
└──────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
核心交互模式:
|
||||
|
||||
| 模式 | 快捷操作 | 用途 |
|
||||
|------|----------|------|
|
||||
| `Explore` | orbit / fly / first-person | 浏览房间、走廊、大堂 |
|
||||
| `Inspect` | click object | 查看 PRISM 节点、语义、bbox、来源帧 |
|
||||
| `Edit` | translate / rotate / scale | 修正物体位姿、墙体边界、家具尺寸 |
|
||||
| `Physics` | add collider / set joint / simulate | 设置碰撞体、质量、摩擦、门/抽屉关节 |
|
||||
| `Annotate` | paint / box / polygon | 标注可抓取区域、不可通行区、危险区 |
|
||||
| `Replay` | play / pause / scrub | 回放机器人轨迹和失败 episode |
|
||||
| `Generate` | randomize / capture | 生成合成 RGB-D、分割、扰动样本 |
|
||||
|
||||
### 5.3 模块拆分
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
LOAD["Scene Loader<br/>USD/glTF/JSON"]
|
||||
REG["Registry<br/>object_id ↔ actor"]
|
||||
VIEW["Viewport<br/>render layers"]
|
||||
SEL["Selection<br/>raycast/pick"]
|
||||
EDIT["Edit Tools<br/>transform/material/collider"]
|
||||
PHYS["Physics Sandbox<br/>simulate/reset"]
|
||||
PATCH["Patch Recorder<br/>diff/event log"]
|
||||
BRIDGE["PRISM Bridge<br/>load/save/query"]
|
||||
EXPORT["Export<br/>dataset/episode"]
|
||||
|
||||
LOAD --> REG --> VIEW
|
||||
VIEW --> SEL --> EDIT --> PATCH
|
||||
EDIT --> PHYS --> PATCH
|
||||
PATCH --> BRIDGE
|
||||
VIEW --> EXPORT
|
||||
PHYS --> EXPORT
|
||||
```
|
||||
|
||||
| 模块 | 职责 | P0 要做到 |
|
||||
|------|------|-----------|
|
||||
| Scene Loader | 加载 `scene.glb/usd`、`scene_graph.json`、材质贴图 | 一个客房可稳定加载 |
|
||||
| Object Registry | 建立 `spatial_node_id` 到引擎 actor 的映射 | 点击物体能查 PRISM ID |
|
||||
| Viewport | 多视角浏览、图层开关、语义上色 | 支持 RGB / semantic / collider 三种视图 |
|
||||
| Inspector | 展示和编辑节点属性 | 可改类别、名称、位姿、物理参数 |
|
||||
| Edit Tools | 拖拽、旋转、缩放、吸附、撤销 | 支持家具位姿修正 |
|
||||
| Physics Sandbox | 局部物理仿真与 reset | 支持椅子推动、门旋转、抽屉滑动 |
|
||||
| Patch Recorder | 记录所有人工修改 | 导出 JSON Patch |
|
||||
| PRISM Bridge | 读取/写回 PRISM 数据 | 文件级 API 即可,不要求实时服务 |
|
||||
| Dataset Exporter | 截图、深度、分割、episode log | 导出一组训练样本 |
|
||||
|
||||
### 5.4 数据输入与目录结构
|
||||
|
||||
每个场景打包为一个可版本化目录:
|
||||
|
||||
```text
|
||||
hotel_305_scene/
|
||||
manifest.json
|
||||
assets/
|
||||
room_shell.glb
|
||||
furniture.glb
|
||||
textures/
|
||||
prism/
|
||||
scene_graph.json
|
||||
spatial_nodes.json
|
||||
spatial_edges.json
|
||||
physics/
|
||||
colliders.json
|
||||
joints.json
|
||||
materials.json
|
||||
episodes/
|
||||
nav_fail_001.json
|
||||
patches/
|
||||
2026-05-31_manual_fix.json
|
||||
```
|
||||
|
||||
`manifest.json` 作为运行时入口:
|
||||
|
||||
```json
|
||||
{
|
||||
"scene_id": "hotel_305",
|
||||
"unit": "meter",
|
||||
"up_axis": "Y",
|
||||
"origin": "room_center",
|
||||
"render_assets": ["assets/room_shell.glb", "assets/furniture.glb"],
|
||||
"prism_graph": "prism/scene_graph.json",
|
||||
"physics": {
|
||||
"colliders": "physics/colliders.json",
|
||||
"joints": "physics/joints.json",
|
||||
"materials": "physics/materials.json"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5.5 实时可视化能力
|
||||
|
||||
运行时至少提供 6 个可切换视图:
|
||||
|
||||
| 视图 | 显示内容 | 用途 |
|
||||
|------|----------|------|
|
||||
| `Render View` | PBR 材质、灯光、阴影 | 检查视觉真实感 |
|
||||
| `Semantic View` | 不同类别用不同颜色 | 检查语义分割和类别错误 |
|
||||
| `Instance View` | 每个实例独立颜色 | 检查实例切分 |
|
||||
| `Physics View` | collider、joint、mass center | 检查物理代理 |
|
||||
| `Navigation View` | 可通行区域、障碍物、路径 | 调试机器人导航 |
|
||||
| `Memory View` | PRISM L1-L4 图层 | 看空间记忆如何覆盖场景 |
|
||||
|
||||
关键 UI 功能:
|
||||
|
||||
- 点击任意物体,高亮对应 `SpatialNode`,并显示来源:RoomPlan / ZED / 人工修正 / WM 推断。
|
||||
- 支持按类别过滤:只看门、床、桌椅、可移动物、可抓取物、动态障碍。
|
||||
- 支持显示不确定性:低置信度物体用闪烁边框或热力图提示。
|
||||
- 支持对比模式:`真实扫描` vs `人工修正后` vs `世界模型预测后`。
|
||||
|
||||
### 5.6 交互编辑能力
|
||||
|
||||
编辑不是自由建模,而是围绕 PRISM/机器人验证需要设计的受控编辑。
|
||||
|
||||
| 编辑对象 | 可编辑字段 | 保存位置 |
|
||||
|----------|------------|----------|
|
||||
| 房间结构 | 墙体位置、高度、门洞、窗洞 | `patches/*.json` + PRISM L2 |
|
||||
| 家具 | 位姿、尺寸、类别、是否可移动 | PRISM L4 `SpatialNode` |
|
||||
| 材质 | roughness、metallic、friction 映射 | `physics/materials.json` |
|
||||
| 碰撞体 | box/capsule/convex mesh | `physics/colliders.json` |
|
||||
| 关节 | revolute/prismatic、轴向、范围 | `physics/joints.json` |
|
||||
| 导航区域 | walkable、blocked、slow zone | PRISM L2/L3 |
|
||||
| 可供性 | graspable、pushable、openable | PRISM L4 |
|
||||
|
||||
编辑操作必须满足三条规则:
|
||||
|
||||
1. **所有修改都是 patch**:保留原始扫描结果,不直接覆盖。
|
||||
2. **每个 patch 有来源**:记录 `author`、`timestamp`、`tool`、`reason`。
|
||||
3. **可回放和可撤销**:patch 可以按顺序 apply,也可以 rollback。
|
||||
|
||||
示例 patch:
|
||||
|
||||
```json
|
||||
{
|
||||
"patch_id": "manual_fix_20260531_001",
|
||||
"scene_id": "hotel_305",
|
||||
"author": "researcher",
|
||||
"ops": [
|
||||
{
|
||||
"op": "replace",
|
||||
"path": "/nodes/chair_305_01/pose_world",
|
||||
"value": [1.42, 0.0, -0.33, 0.0, 0.707, 0.0, 0.707],
|
||||
"reason": "RoomPlan 椅子朝向错误"
|
||||
},
|
||||
{
|
||||
"op": "add",
|
||||
"path": "/nodes/drawer_305_02/joint",
|
||||
"value": {
|
||||
"type": "prismatic",
|
||||
"axis": [1, 0, 0],
|
||||
"limit_m": [0.0, 0.42]
|
||||
},
|
||||
"reason": "为床头柜抽屉补充可操作关节"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 5.7 轻量物理沙盒
|
||||
|
||||
游戏引擎中的物理层只负责快速验证和交互调试,不作为最终物理真值。
|
||||
|
||||
P0 支持:
|
||||
|
||||
- 刚体:椅子、行李箱、垃圾桶、床头柜小物体。
|
||||
- 静态碰撞体:墙、地面、床、柜体、卫生间台面。
|
||||
- 关节:门的旋转关节、抽屉的滑动关节。
|
||||
- 材质参数:摩擦、弹性、质量、重心。
|
||||
- 局部 reset:只重置当前物体或当前房间,不重载全场景。
|
||||
|
||||
P1 再支持:
|
||||
|
||||
- 布料近似:床单、窗帘只做视觉和碰撞近似。
|
||||
- 液体/破碎效果:只做异常事件可视化,不进入机器人控制闭环。
|
||||
- 多人/多机器人:用于拥堵和动态障碍测试。
|
||||
|
||||
### 5.8 与 PRISM 的读写接口
|
||||
|
||||
P0 不需要数据库服务,直接文件接口即可:
|
||||
|
||||
```text
|
||||
load_scene(manifest.json)
|
||||
→ load_assets()
|
||||
→ load_prism_graph()
|
||||
→ bind_actor_to_spatial_node()
|
||||
|
||||
edit_object()
|
||||
→ update_runtime_actor()
|
||||
→ append_patch_op()
|
||||
|
||||
save_patch()
|
||||
→ validate_patch()
|
||||
→ write patches/*.json
|
||||
→ optional: export prism_delta.json
|
||||
```
|
||||
|
||||
P1 可以升级为本地 HTTP 服务:
|
||||
|
||||
| API | 方法 | 用途 |
|
||||
|-----|------|------|
|
||||
| `/scene/:id` | GET | 获取场景 manifest |
|
||||
| `/scene/:id/nodes` | GET | 获取 PRISM 节点 |
|
||||
| `/scene/:id/patches` | POST | 保存人工修正 |
|
||||
| `/scene/:id/query` | POST | 自然语言或类别查询 |
|
||||
| `/scene/:id/episodes` | POST | 上传任务回放 |
|
||||
|
||||
### 5.9 MVP 功能清单
|
||||
|
||||
P0 版本只追求一个客房跑通:
|
||||
|
||||
| 优先级 | 功能 | 验收标准 |
|
||||
|--------|------|----------|
|
||||
| P0 | 加载一个 RoomPlan/ZED 转换后的客房 | 10 秒内打开,尺度正确 |
|
||||
| P0 | Scene Tree + 物体点击选择 | 点击椅子能显示 `chair_305_01` |
|
||||
| P0 | 语义/实例/物理三种视图 | 一键切换,颜色稳定 |
|
||||
| P0 | 家具位姿修正 | 拖动椅子后能保存 patch |
|
||||
| P0 | Collider 可视化与编辑 | 可给椅子生成 box/convex collider |
|
||||
| P0 | 门/抽屉关节编辑 | 可设置轴向和运动范围 |
|
||||
| P0 | 简单物理运行/暂停/reset | 推椅子不穿墙,reset 后回初始状态 |
|
||||
| P0 | episode 回放 | 加载一条机器人轨迹并显示路径 |
|
||||
| P0 | patch 导出 | 输出可被 PRISM 消化的 JSON |
|
||||
|
||||
P1 再做增强:
|
||||
|
||||
- 多房间/走廊拼接;
|
||||
- Web 只读展示;
|
||||
- 合成 RGB-D/Segmentation 数据批量导出;
|
||||
- 自然语言查询:“显示所有可移动椅子”;
|
||||
- 和 ROS 2/Nav2 做在线联调。
|
||||
|
||||
---
|
||||
|
||||
## 6. 典型应用场景
|
||||
|
||||
### 场景 A:酒店机器人导航调试
|
||||
|
||||
1. PRISM 导出酒店走廊拓扑和局部几何。
|
||||
2. 游戏引擎加载场景,放置机器人 avatar 和动态行人。
|
||||
3. 通过 ROS 2 bridge 接入 Nav2 或自研控制器。
|
||||
4. 在引擎里批量生成拥堵、清洁车占道、门半开等扰动。
|
||||
5. 输出成功率、碰撞次数、路径偏差和重规划次数。
|
||||
|
||||
### 场景 B:客房物体操作验证
|
||||
|
||||
1. RoomPlan/ZED 重建客房,PRISM 生成语义场景图。
|
||||
2. 游戏引擎把床头柜、椅子、抽屉、门转成可交互 actor。
|
||||
3. 研究员人工修正关节轴、摩擦、质量和可抓取区域。
|
||||
4. 世界模型在引擎中做 rollout,预测推、拉、拿、放的结果。
|
||||
5. 高风险动作再交给 Isaac Sim 或真实机器人验证。
|
||||
|
||||
### 场景 C:CrowdRoom Web 编辑器
|
||||
|
||||
1. 用户上传 RoomPlan 房间。
|
||||
2. 后端转成 glTF/meshopt/Draco 轻量包。
|
||||
3. Web 端以 Unity WebGL、Unreal Pixel Streaming 或 Three.js/R3F 展示。
|
||||
4. 用户替换家具、材质、灯光,生成 Remix。
|
||||
5. Remix 的变更以 overlay 形式保存,不复制底层几何。
|
||||
|
||||
---
|
||||
|
||||
## 7. 技术实现建议
|
||||
|
||||
### 7.1 Unreal 路线
|
||||
|
||||
适合做“酒店数字孪生高保真演示 + 复杂交互调试器”。
|
||||
|
||||
```yaml
|
||||
引擎:
|
||||
- Unreal Engine 5.x
|
||||
核心模块:
|
||||
- USD Stage / Datasmith / glTF Importer
|
||||
- Chaos Physics
|
||||
- Control Rig / Sequencer
|
||||
- Pixel Streaming
|
||||
- Python Editor Script
|
||||
输入:
|
||||
- USD: 主资产格式
|
||||
- glTF/FBX: 轻量备选
|
||||
- JSON: PRISM 场景图和语义属性
|
||||
输出:
|
||||
- episode log
|
||||
- RGB-D/Segmentation 合成数据
|
||||
- PRISM patch
|
||||
```
|
||||
|
||||
适合优先验证:
|
||||
|
||||
- 高保真酒店大堂/走廊渲染;
|
||||
- 门、抽屉、椅子、行李车等刚体交互;
|
||||
- 研究演示和远程评审;
|
||||
- 复杂光照、反射、材质对感知模型的影响。
|
||||
|
||||
### 7.2 Unity 路线
|
||||
|
||||
适合做“MVP 工具 + CrowdRoom 产品化编辑器 + 快速 ROS 原型”。
|
||||
|
||||
```yaml
|
||||
引擎:
|
||||
- Unity LTS
|
||||
核心模块:
|
||||
- URP/HDRP
|
||||
- Addressables
|
||||
- ArticulationBody
|
||||
- ROS TCP Connector
|
||||
- WebGL / iOS / Desktop Build
|
||||
输入:
|
||||
- glTF/FBX/USD 转换资产
|
||||
- PRISM JSON scene graph
|
||||
输出:
|
||||
- 用户编辑 overlay
|
||||
- 标注 patch
|
||||
- 简化 episode log
|
||||
```
|
||||
|
||||
适合优先验证:
|
||||
|
||||
- RoomPlan 房间浏览器;
|
||||
- 家具/材质替换;
|
||||
- 简单移动机器人导航;
|
||||
- 低门槛标注工具。
|
||||
|
||||
### 7.3 Isaac Sim 路线
|
||||
|
||||
适合做“机器人高可信仿真后端”,与游戏引擎形成互补。
|
||||
|
||||
```yaml
|
||||
核心定位:
|
||||
- 机器人传感器仿真
|
||||
- URDF/USD 机器人资产
|
||||
- 合成数据生成
|
||||
- Isaac Lab / RL 训练
|
||||
- ROS 2 联调
|
||||
输入:
|
||||
- USD 场景
|
||||
- URDF / CAD 机器人
|
||||
- PRISM 语义图
|
||||
输出:
|
||||
- 机器人任务评测
|
||||
- 合成传感器数据
|
||||
- sim-to-real 实验记录
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 数据格式扩展
|
||||
|
||||
建议在 PRISM `SpatialNode` 上增加一个可选的 `engine_proxy` 字段:
|
||||
|
||||
```json
|
||||
{
|
||||
"spatial_node_id": "chair_305_01",
|
||||
"category": "chair",
|
||||
"pose_world": [0, 0, 0, 1, 0, 0, 0],
|
||||
"bbox": [0.55, 0.58, 0.92],
|
||||
"material": {
|
||||
"base": "fabric",
|
||||
"roughness": 0.75
|
||||
},
|
||||
"affordance": {
|
||||
"movable": true,
|
||||
"sittable": true,
|
||||
"pushable": true
|
||||
},
|
||||
"engine_proxy": {
|
||||
"asset_uri": "assets/hotel_305/chair_305_01.usd",
|
||||
"render_mesh": "chair_305_01_high",
|
||||
"collision_mesh": "chair_305_01_convex",
|
||||
"rigid_body": {
|
||||
"mass_kg": 6.2,
|
||||
"friction": 0.6,
|
||||
"restitution": 0.05
|
||||
},
|
||||
"lod": ["high", "mid", "low"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. MVP 计划:4 周验证闭环
|
||||
|
||||
| 周期 | 目标 | 交付物 | 验收标准 |
|
||||
|------|------|--------|----------|
|
||||
| W1 | 资产链路打通 | RoomPlan/ZED 场景 → glTF/USD → Unity 或 Unreal | 尺度误差 < 2%,坐标轴正确 |
|
||||
| W2 | PRISM 语义绑定 | 场景图 JSON 驱动物体高亮、查询、筛选 | 输入“床头柜”可定位对应 actor |
|
||||
| W3 | 物理代理 | 为门、椅子、抽屉生成 collider/rigid body/joint | 推拉动作无明显穿模 |
|
||||
| W4 | 任务回放 | 机器人轨迹回放 + episode log + PRISM patch | 可复现一次失败案例并回写 delta |
|
||||
|
||||
MVP 只做一个客房或一段走廊,不追求完整酒店。优先证明“真实扫描资产能进入游戏引擎,并与 PRISM 双向通信”。
|
||||
|
||||
---
|
||||
|
||||
## 10. 风险与对策
|
||||
|
||||
| 风险 | 表现 | 对策 |
|
||||
|------|------|------|
|
||||
| 扫描 mesh 不适合物理 | 面数过高、破洞、碰撞异常 | 渲染 mesh 与 collider 分离;自动 convex decomposition;人工修正工具 |
|
||||
| 坐标系统混乱 | RoomPlan、ROS、Unreal、Unity 轴向不一致 | 定义 `world_frame.md`,所有转换写单元测试 |
|
||||
| 游戏物理不够真实 | 摩擦、接触、关节误差导致 sim-to-real 差 | 游戏引擎只做快速筛选;关键实验进入 Isaac Sim 或真实机器人 |
|
||||
| 资产管线过重 | USD/glTF/FBX 来回转换丢属性 | USD 作为主格式,glTF 只做 Web 分发 |
|
||||
| 双引擎维护成本高 | Unreal、Unity、Isaac Sim 三套工程发散 | MVP 先选一个主前台;共享资产转换脚本和 PRISM schema |
|
||||
|
||||
---
|
||||
|
||||
## 11. 推荐决策
|
||||
|
||||
短期采用:
|
||||
|
||||
1. **Unity 优先做 MVP**:快速做出 RoomPlan 房间浏览、语义高亮、家具替换、简单物理交互。
|
||||
2. **Unreal 做高保真展示分支**:用于酒店场景演示、复杂光照材质、远程评审。
|
||||
3. **Isaac Sim 保持机器人仿真后端**:用于 ROS 2、传感器、RL 和严肃物理评测。
|
||||
|
||||
中期目标是形成一条统一管线:
|
||||
|
||||
```text
|
||||
真实扫描 → PRISM 空间记忆 → USD/glTF 资产包 → 游戏引擎交互验证 → episode/patch 回写 → 世界模型训练
|
||||
```
|
||||
|
||||
这样 WorldModel 项目会多出一个非常实用的“中间地带”:既不像纯研究代码那样难演示,也不像纯游戏场景那样脱离真实数据,而是把真实室内世界变成可运行、可编辑、可评测的 3D 交互实验场。
|
||||
|
||||
---
|
||||
|
||||
## 参考资料
|
||||
|
||||
- NVIDIA Isaac Sim 官方介绍:说明 Isaac Sim 基于 Omniverse/OpenUSD,面向机器人仿真、测试、合成数据,并可导入 CAD、URDF 和真实捕获数据。<https://developer.nvidia.com/isaac/sim>
|
||||
- Unreal Engine Physics 官方文档:Chaos Physics 覆盖刚体、约束、破坏、车辆、流体、网络物理等实时物理能力。<https://dev.epicgames.com/documentation/en-us/unreal-engine/physics-in-unreal-engine>
|
||||
- Unreal Engine USD Stage 官方文档:Unreal 支持通过 USD Stage Actor 打开和编辑 USD 场景。<https://dev.epicgames.com/documentation/en-us/unreal-engine/usd-stage-editor-quick-start-in-unreal-engine>
|
||||
- Unity ROS TCP Connector 官方仓库:提供 Unity 与 ROS 收发消息、消息生成、ROSGeometry 等能力。<https://github.com/Unity-Technologies/ROS-TCP-Connector>
|
||||
Reference in New Issue
Block a user