# 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 秒
