feat: add UE5 LED display client — backend API, C++ source, stereo framework
Backend: - Add /api/v1/ue/* endpoints (compute-points, cables, landing-points, satellites, status) returning flat JSON optimised for UE5 C++ parsing UE5 client (ue_client/): - PlanetDataManager: HTTP fetch + local mock JSON loader, spawns ComputePointActors - ComputePointActor / InteractiveObjectBase: hover/select state, material switching - GlobeInteractionComponent: drag-to-rotate via CesiumGeoreference origin shift, inertia, zoom - StereoRenderingManager: runtime SbS/TbB stereo toggle, IPD control (format TBD) - MotionCaptureInterface: protocol-agnostic gesture/rotate/zoom delegate interface (impl TBD) - PlanetPlayerController: unified mouse + motion-capture input routing - PlanetGameMode, Build.cs, Config, mock data Docs: - ue5_mvp_fused_plan.md updated to v3.0 for LED display context - ue_client_setup_guide.md: step-by-step editor setup guide - ue_todo.md: pending items blocked on vendor answers (stereo format + mocap protocol) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
62
docs/ue_todo.md
Normal file
62
docs/ue_todo.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# UE5 客户端 — 待供应商回复的 TODO
|
||||
|
||||
> 以下两个问题答复后,对应代码可在一天内完成。
|
||||
> 其余所有代码均已写好,不依赖这两个答案。
|
||||
|
||||
---
|
||||
|
||||
## TODO-1:视频处理器输入格式
|
||||
|
||||
**等待信息**:LED 屏配套视频处理器(如诺瓦星云)接受什么 3D 信号格式?
|
||||
|
||||
| 可能答案 | 对应操作 |
|
||||
|---------|---------|
|
||||
| Side-by-Side(左右并排) | `StereoRenderingManager.cpp` 里 `EnableStereo` 的 `SideBySide` 分支已写好,直接启用 |
|
||||
| Top-Bottom(上下叠加) | 同上,切换到 `TopBottom` 分支 |
|
||||
| 行交错(行偏振直驱) | 需要新写一个 PostProcess Material,把左右眼奇偶行合并输出 |
|
||||
| 私有协议 | 需要供应商提供 UE5 插件或信号格式文档 |
|
||||
|
||||
**代码位置**:
|
||||
```
|
||||
ue_client/Source/PlanetClient/StereoRenderingManager.h — 第 8-18 行 TODO 注释
|
||||
ue_client/Source/PlanetClient/StereoRenderingManager.cpp — EnableStereo() 函数
|
||||
```
|
||||
|
||||
**需要同时确认**:
|
||||
- 视频处理器品牌和型号
|
||||
- 屏幕物理分辨率(用于配置 UE5 输出分辨率)
|
||||
- 3D 启用时是否需要特殊信号时序(如 3D Frame Packing)
|
||||
|
||||
---
|
||||
|
||||
## TODO-2:动捕中间件协议
|
||||
|
||||
**等待信息**:光学姿态识别系统用什么协议输出数据给 UE5?
|
||||
|
||||
| 可能答案 | 对应操作 |
|
||||
|---------|---------|
|
||||
| **Live Link**(首选) | 在 UE5 编辑器里添加 Live Link Source,零代码接入,约 2 小时完成 |
|
||||
| **OSC over UDP** | 新建 `MotionCaptureReceiverOSC.h/.cpp`,实现 UDP 监听和 OSC 解析,约 1 天 |
|
||||
| 私有 SDK(提供 .dll) | 需要 SDK 文档,封装成 UE5 插件,约 2-3 天 |
|
||||
| 私有 SDK(提供 UE5 插件) | 直接安装插件,对接事件接口,约 0.5 天 |
|
||||
|
||||
**代码位置(已预留接口,填协议实现即可)**:
|
||||
```
|
||||
ue_client/Source/PlanetClient/MotionCaptureInterface.h — UMotionCaptureReceiver 基类
|
||||
ue_client/Source/PlanetClient/PlanetPlayerController.cpp — BindMotionCaptureEvents() 函数(TODO 注释处取消注释)
|
||||
ue_client/Source/PlanetClient/PlanetClient.Build.cs — TODO 注释的 LiveLink/Sockets 依赖
|
||||
```
|
||||
|
||||
**需要同时确认**:
|
||||
- 手势集合(供应商能识别哪些具体手势,用于填写 `EMotionGesture` 枚举)
|
||||
- 数据刷新频率(帧率)
|
||||
- 是否支持持续输出旋转增量,还是只能输出离散手势事件
|
||||
|
||||
---
|
||||
|
||||
## 答复到位后的操作清单
|
||||
|
||||
拿到答案后告诉我,我来:
|
||||
|
||||
1. **视频处理器格式** → 配置 `StereoRenderingManager`,把 `bAutoEnableOnPlay` 改为 `true`,写进 setup guide
|
||||
2. **动捕协议** → 实现对应的 `UMotionCaptureReceiver` 子类,更新 `Build.cs` 依赖,在 `PlayerController::BeginPlay` 里取消注释绑定代码
|
||||
Reference in New Issue
Block a user