145 lines
5.3 KiB
Markdown
145 lines
5.3 KiB
Markdown
# 项目背景:UE5 + 3D LED 大屏展示系统
|
||
|
||
> 供其他 AI 快速了解项目背景和当前状态。
|
||
> 最后更新:2026-04-14
|
||
|
||
---
|
||
|
||
## 一、项目定位
|
||
|
||
这不是一个普通的桌面地球应用,而是一套**领导演示用的 3D 沉浸式展示系统**。
|
||
|
||
核心逻辑:
|
||
- 态势感知数据(超算、海缆、卫星)是内容
|
||
- 3D LED 大屏 + 实时渲染 + 动捕交互是"醋"——没有它,内容再好也只是普通屏幕
|
||
- 主要受众:领导/决策层,注重视觉冲击力
|
||
|
||
---
|
||
|
||
## 二、硬件配置
|
||
|
||
| 硬件 | 规格 | 说明 |
|
||
|------|------|------|
|
||
| 3D LED 大屏 | 5.12m × 2.88m,P1.538mm,被动偏振式 | 观众戴无源 3D 眼镜(≤18g),60Hz 即可出稳定 3D |
|
||
| 渲染工作站 | 双路国产 X86 CPU + RTX 5090 32GB | 驱动 UE5 实时渲染 |
|
||
| 视频处理器 | 随屏配套(品牌待确认) | 接收 GPU 信号,驱动 LED 墙 |
|
||
| 动捕摄像头 | RGB 摄像头 ×2,4K,直连电脑 | 无穿戴姿态识别 |
|
||
| 音响 | 解码功放 + 吸顶喇叭 ×5 + 低音炮 | 配套 |
|
||
|
||
---
|
||
|
||
## 三、软件架构
|
||
|
||
```
|
||
摄像头(×2,直连)
|
||
↓ 动捕插件(供应商提供 UE5 插件)
|
||
UE5 主程序(我们开发)
|
||
├── Cesium 地球(实时渲染)
|
||
├── 超算数据点(可交互)
|
||
├── 其他可交互物件
|
||
└── 立体渲染输出
|
||
↓ 视频信号(格式待确认)
|
||
视频处理器(随屏配套)
|
||
↓ LED 驱动信号(行偏振)
|
||
5m 被动偏振 3D LED 大屏
|
||
```
|
||
|
||
---
|
||
|
||
## 四、分工
|
||
|
||
| 部分 | 谁做 | 状态 |
|
||
|------|------|------|
|
||
| LED 屏体 + 视频处理器 | 屏幕供应商 | 采购中 |
|
||
| 动捕插件(UE5 插件形式) | 动捕供应商 | 待交付 |
|
||
| UE5 基础工程(关卡+角色+动捕绑定) | 动捕供应商 | 待交付 |
|
||
| 地球场景 + 数据可视化 + 交互逻辑 | 我们(本项目) | 开发中 |
|
||
| 后端数据接口 | 我们(本项目) | 已完成 |
|
||
| 其他 9 个定制 3D 资产和动画 | 3D 内容供应商 | 采购中 |
|
||
|
||
---
|
||
|
||
## 五、动捕交互方式
|
||
|
||
**交付形式(已确认)**:
|
||
- 供应商给我们**完整 UE5 工程**,包含:
|
||
- 视频动捕插件
|
||
- 已配好绑定和重定向的 3D 角色
|
||
- 3D 模型和动画资产
|
||
- 接两台摄像头即可直接运行
|
||
- **我们的任务**:把他们工程的内容(插件 + 角色 + 资产)**迁移进我们的 `ue_client/` 工程**,然后把角色动作映射到地球操作
|
||
|
||
**待确认**:角色动作的触发点是什么形式?
|
||
- 蓝图 Custom Event(如 `OnGestureRotate`)?
|
||
- AnimNotify?
|
||
- 需要我们自己判断骨骼姿态?
|
||
|
||
**交互目标(一期)**:
|
||
1. 手势旋转地球
|
||
2. 手势缩放地球
|
||
3. 手势指向/确认 → 选中数据点,弹出信息卡
|
||
4. 鼠标作为备用输入(始终可用)
|
||
|
||
---
|
||
|
||
## 六、立体渲染
|
||
|
||
**待确认**:
|
||
1. 供应商基础工程里是否已配好立体渲染输出?
|
||
2. 如果没有:视频处理器接受什么格式?(Side-by-Side / Top-Bottom / 其他)
|
||
3. 给供应商的文件形式:UE5 工程 / .exe / 视频文件 / 直连实时输出?
|
||
|
||
**已准备**:`StereoRenderingManager.h/.cpp` 支持运行时切换 SbS/TbB,格式确认后直接启用。
|
||
|
||
---
|
||
|
||
## 七、已完成的代码
|
||
|
||
### 后端 (`backend/app/api/v1/ue_data.py`)
|
||
- `GET /api/v1/ue/status` — 健康检查
|
||
- `GET /api/v1/ue/compute-points` — TOP500 超算(平铺 JSON)
|
||
- `GET /api/v1/ue/landing-points` — 海缆登陆点
|
||
- `GET /api/v1/ue/cables` — 海缆路由几何
|
||
- `GET /api/v1/ue/satellites` — 卫星 TLE 数据
|
||
|
||
### UE5 C++ (`ue_client/Source/PlanetClient/`)
|
||
|
||
| 文件 | 功能 |
|
||
|------|------|
|
||
| `PlanetDataTypes.h` | FComputePoint 等数据结构 |
|
||
| `PlanetDataManager` | HTTP 拉取 + mock 数据 + 生成 Actor |
|
||
| `ComputePointActor` | 超算点 Actor,三态材质(正常/悬停/选中)|
|
||
| `InteractiveObjectBase` | 所有可交互物件的基类 |
|
||
| `GlobeInteractionComponent` | 拖拽旋转地球(改 Cesium 经纬度原点)+ 缩放,带惯性 |
|
||
| `StereoRenderingManager` | 立体渲染开关,SbS/TbB,IPD 可调 |
|
||
| `MotionCaptureInterface.h` | 动捕接口抽象(待用插件 API 替换实现)|
|
||
| `PlanetPlayerController` | 统一处理鼠标 + 动捕输入 |
|
||
| `PlanetGameMode` | 场景入口 |
|
||
|
||
### 文档
|
||
- `docs/ue_client_setup_guide.md` — 编辑器操作 step-by-step 指南
|
||
- `docs/ue_todo.md` — 待供应商回复的 TODO
|
||
- `docs/ue5_mvp_fused_plan.md` — 完整实施方案(v3.0)
|
||
|
||
---
|
||
|
||
## 八、交付时间线
|
||
|
||
| 时间 | 内容 | 状态 |
|
||
|------|------|------|
|
||
| 本周末前 | 动捕供应商:含动捕插件 + 3D 角色(绑定/重定向已配好)的基础 UE5 工程 | 等待中 |
|
||
| 之后尽快 | 动捕供应商:动画资产(复制进 Content/ 即可直接调用) | 等待中 |
|
||
| TBD | LED 屏供应商:视频处理器接受的 3D 信号格式(或直接技术支持对接) | 等待中 |
|
||
|
||
**拿到基础工程后可立即做**:迁移插件和角色,接摄像头做动捕调试,然后对接动作→地球操作映射。
|
||
|
||
**双目 3D 显示**:供应商可提供技术支持,等视频处理器到位后直接对接。
|
||
|
||
---
|
||
|
||
## 九、当前阻塞项
|
||
|
||
1. **动捕基础工程**(本周末前到)→ 迁移内容,确认动作触发方式,完成交互对接
|
||
2. **动画资产**(尽快)→ 复制入 Content/,在场景中引用
|
||
3. **3D 显示格式**(有供应商技术支持)→ 配置 `StereoRenderingManager`
|