# UE5 3D 大屏客户端开发计划 ## 项目概述 基于智能星球计划架构,开发 UE5 3D 可视化大屏客户端,实现全球态势感知数据的沉浸式展示。 ## 技术选型 | 组件 | 版本 | 用途 | |------|------|------| | Unreal Engine | 5.3+ | 3D 渲染引擎 | | Cesium for Unreal | 1.5+ | 地理可视化 | | Niagara | - | 粒子系统 | | WebSocket API | - | 实时数据推送 | ## 项目结构 ``` unreal/ ├── Content/ │ ├── Levels/ │ │ ├── Main.umap # 主场景 │ │ └── Components/ # 组件关卡 │ ├── Blueprints/ │ │ ├── BP_GlobeController # 地球控制器 │ │ ├── BP_DataVisualizer # 数据可视化基类 │ │ ├── BP_Supercomputer # TOP500 超算标记 │ │ ├── BP_GPUCluster # GPU 集群标记 │ │ ├── BP_IXPNode # IXP 节点标记 │ │ ├── BP_SubmarineCable # 海缆连接线 │ │ ├── BP_DataFlow # 数据流向粒子 │ │ ├── BP_AlarmIndicator # 告警指示器 │ │ └── BP_CameraController # 相机控制器 │ ├── Materials/ │ │ ├── M_Globe # 地球材质 │ │ ├── M_DataPoint # 数据点材质 │ │ ├── M_Cable # 海缆材质 │ │ └── M_DataFlow # 数据流材质 │ ├── Widgets/ │ │ ├── W_MainHUD # 主 HUD │ │ ├── W_DataInfo # 数据信息面板 │ │ └── W_AlarmPanel # 告警面板 │ └── UI/ │ └── UMG/ ├── Source/ │ ├── PlanetAPI/ # 后端 API 客户端 │ │ ├── PlanetAPIClient # WebSocket 连接 │ │ ├── DataModels # 数据模型 │ │ └── HttpClient # HTTP 客户端 │ ├── CesiumIntegration/ # Cesium 集成 │ │ ├── GlobeManager # 地球管理 │ │ └── GeoUtils # 地理坐标工具 │ └── Visualization/ # 可视化组件 │ ├── PointRenderer # 点渲染 │ ├── LineRenderer # 线渲染 │ └── ParticleSystem # 粒子系统 └── Planet.unproject ``` ## 功能模块 ### 1. 3D 地球渲染 CesiumIntegration 组件: - 集成 Cesium ion 地图服务 - 支持多分辨率地球纹理 - 地理坐标 转 UE 坐标转换 - 光照和大气效果 ### 2. 算力点可视化 数据点类型: | 数据源 | 点类型 | 颜色 | 标识 | |--------|--------|------|------| | TOP500 | 超算 | 红色 | HPLinpack 性能 | | Epoch AI | GPU集群 | 橙色 | GPU数量 | | HuggingFace | 模型部署 | 蓝色 | 模型大小 | ### 3. 海缆可视化 CableVisualization 组件: - 海缆路径渲染 (Spline Mesh) - 带宽/容量可视化 (颜色编码) - 实时流量状态 ### 4. 数据流向粒子 DataFlowNiagara 系统: - 源 → 目的地的粒子流动 - 带宽决定粒子密度/速度 - 支持动画和颜色渐变 ### 5. 告警系统 AlarmIndicators: - 异常数据红色高亮 - 闪烁效果 - 点击显示详情 ### 6. WebSocket 实时更新 PlanetAPIClient: - 连接 ws://backend:8000/ws - 自动重连机制 - 数据更新回调 ### 7. 相机控制 CameraController: - 自动巡航模式 - 聚焦特定区域 - 平滑过渡动画 ## 数据模型 ```cpp // 地理位置 struct FGeographicPoint { double Latitude; // 纬度 (-90 to 90) double Longitude; // 经度 (-180 to 180) double Altitude; // 高度 (米) }; // 算力点数据 struct FComputePointData { FString Id; FString Name; FString Source; // top500, epoch_ai FGeographicPoint Location; float Performance; // PFLOPS int32 CoreCount; int32 GpuCount; FString Country; }; ``` ## API 对接 ### WebSocket 消息格式 ```json { "type": "update", "data": { "source": "top500", "action": "add/update/remove", "payload": { "id": "top500_1", "name": "Frontier", "location": { "latitude": 33.7756, "longitude": -84.3962, "altitude": 0 }, "performance": 1682.65, "cores": 8730112 } } } ``` ### HTTP API 端点 | 端点 | 用途 | |------|------| | GET /api/v1/collected?source=top500 | 获取 TOP500 数据 | | GET /api/v1/collected?source=telegeography_cables | 获取海缆数据 | | WS /ws/updates | 实时数据推送 | ## 开发阶段 ### Phase 1: 基础框架 (1-2 周) - [ ] 创建 UE5 项目 - [ ] 安装 Cesium for Unreal 插件 - [ ] 实现基础地球渲染 - [ ] 创建 WebSocket 客户端框架 ### Phase 2: 数据点可视化 (2-3 周) - [ ] 实现 TOP500 超算标记 - [ ] 实现 GPU 集群标记 - [ ] 添加交互功能 - [ ] 实现信息面板 ### Phase 3: 海缆可视化 (1-2 周) - [ ] 实现海缆路径渲染 - [ ] 添加带宽可视化 - [ ] 实现数据流向粒子 ### Phase 4: 实时更新 (1-2 周) - [ ] 完成 WebSocket 集成 - [ ] 实现数据自动更新 - [ ] 添加告警系统 ### Phase 5: UI 和优化 (1 周) - [ ] 添加 HUD 界面 - [ ] 实现相机控制 - [ ] 性能优化 - [ ] 测试和修复 ## 资源需求 ### 必要资源 1. **Cesium ion 账户** - 免费注册: https://cesium.com/ion/ - 用于访问全球 3D 地形和影像 2. **UE5 安装** - 从 Epic Games Launcher 安装 - 建议版本: 5.3 或 5.4 ### 可选资源 - 区域高程数据 - 夜间灯光纹理 ## 验收标准 ### 基础功能 - [ ] 地球正常渲染,无明显卡顿 - [ ] TOP500 数据点正确显示位置 - [ ] 超算信息面板可点击查看 - [ ] WebSocket 连接正常 ### 高级功能 - [ ] 海缆路径可视化 - [ ] 数据流向粒子效果 - [ ] 告警指示 - [ ] 自动巡航模式 ### 性能要求 - [ ] 60 FPS 稳定运行 (4K 分辨率) - [ ] 1000+ 数据点无明显性能下降 - [ ] WebSocket 消息延迟 < 1 秒