# BP_DataFlow 数据流向蓝图详细规格 ## 蓝图信息 | 属性 | 值 | |------|-----| | 蓝图类型 | Actor | | 父类 | `Actor` | | 路径 | `Content/Blueprints/BP_DataFlow.uasset` | ## 组件列表 ``` BP_DataFlow ├── SceneRoot (场景根) │ ├── SourceMarker (源点标记) │ │ └── StaticMesh: Sphere │ │ └── Material: M_DataFlow_Source │ ├── DestinationMarker (目标点标记) │ │ └── StaticMesh: Sphere │ │ └── Material: M_DataFlow_Destination │ ├── PathSpline (路径样条) │ │ └── SplineMeshComponent │ │ └── Material: M_DataFlow_Path │ └── FlowParticles (流向粒子) │ └── NiagaraComponent │ └── NS_DataFlow_Directional ``` ## 变量列表 | 变量名 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | `FlowId` | String | `""` | 流向唯一标识 | | `SourceLocation` | GeographicPoint | - | 源位置 | | `DestinationLocation` | GeographicPoint | - | 目标位置 | | `DataRate` | Float | `1000.0` | 数据速率 (Gbps) | | `DataType` | EDataFlowType | `Internet` | 数据类型 | | `IsActive` | Boolean | `true` | 是否激活 | | `FlowColor` | LinearColor | (0.2, 0.6, 1.0, 1) | 流向颜色 | | `Duration` | Float | `3.0` | 粒子生命周期(秒) | ## 枚举定义 ### EDataFlowType | 枚举值 | 说明 | 颜色 | |--------|------|------| | `Internet` | 互联网流量 | 蓝色 | | `Backbone` | 骨干网 | 青色 | | `Cloud` | 云服务 | 紫色 | | `AI_Training` | AI 训练数据 | 橙色 | | `CDN` | CDN 分发 | 绿色 | ## 材质规格 ### M_DataFlow_Source (源点) | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `BaseColor` | Vector3 | (0.2, 0.6, 1.0) | 蓝色 | | `EmissiveStrength` | Float | `10.0` | 自发光强度 | | `PulseSpeed` | Float | `2.0` | 脉冲速度 | | `Radius` | Float | `10000.0` | 脉冲半径 | ### M_DataFlow_Destination (目标点) ``` 与 M_DataFlow_Source 相同,但: ├─ BaseColor: 稍暗 └─ PulseSpeed: 稍慢 ``` ### M_DataFlow_Path (路径线) | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `LineColor` | Vector4 | (0.2, 0.6, 1.0, 0.5) | 半透明蓝 | | `LineWidth` | Float | `100.0` | 线宽度 | | `FlowSpeed` | Float | `1.0` | 流动速度 | | `FlowIntensity` | Float | `0.8` | 流动强度 | ## 粒子系统 (NS_DataFlow_Directional) ### Niagara 参数 | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `User.Color` | LinearColor | (0.2, 0.6, 1.0, 1.0) | 粒子颜色 | | `User.Speed` | Float | `100.0` | 粒子速度 | | `User.Lifetime` | Float | `3.0` | 粒子寿命 | | `User.Size` | Float | `50.0` | 粒子大小 | | `User.Density` | Float | `1.0` | 粒子密度 | ### 粒子行为 ``` 1. 发射器类型: 沿样条路径 2. 发射速率: DataRate / 100 (归一化) 3. 粒子寿命: Duration 4. 粒子速度: 路径长度 / Duration 5. 颜色渐变: ├─ 起点: 高亮度 ├─ 中点: 正常亮度 └─ 终点: 渐隐 ``` ## 函数 ### Initialize (Struct FlowData) ``` 1. [解析] FlowData 2. [设置] FlowId = FlowData["id"] 3. [设置] SourceLocation = FlowData["source"] 4. [设置] DestinationLocation = FlowData["destination"] 5. [设置] DataRate = FlowData["data_rate"] 6. [设置] DataType = FlowData["data_type"] 7. [计算] PathPoints 8. [调用] BuildPath() 9. [调用] UpdateParticles() 10. [调用] SetFlowColorByType() ``` ### BuildPath ``` 1. [计算] SourceUE = GeoUtils.LatLonToUE(SourceLocation) 2. [计算] DestUE = GeoUtils.LatLonToUE(DestinationLocation) 3. [设置] SourceMarker.SetRelativeLocation(SourceUE) 4. [设置] DestinationMarker.SetRelativeLocation(DestUE) 5. [计算] MidPoints (插值路径) 6. [构建] SplineComponent from Source to Destination 7. [设置] SplineMeshComponent.Start/End ``` ### UpdateParticles ``` 1. [计算] ParticleSpeed = PathLength / Duration 2. [获取] NiagaraComponent 3. [设置] User.Speed = ParticleSpeed 4. [计算] EmissionRate = DataRate / 10 5. [设置] User.EmissionRate = EmissionRate 6. [调用] NiagaraComponent.Activate() ``` ### SetFlowColorByType ``` 1. [分支] DataType ├─ "internet": [设置] FlowColor = (0.2, 0.6, 1.0, 1) 蓝色 ├─ "backbone": [设置] FlowColor = (0.0, 1.0, 1.0, 1) 青色 ├─ "cloud": [设置] FlowColor = (0.6, 0.2, 1.0, 1) 紫色 ├─ "ai_training": [设置] FlowColor = (1.0, 0.5, 0.0, 1) 橙色 ├─ "cdn": [设置] FlowColor = (0.2, 1.0, 0.4, 1) 绿色 └─ [默认]: [设置] FlowColor = (0.5, 0.5, 0.5, 1) 灰色 2. [设置] Material.LineColor = FlowColor 3. [设置] NiagaraComponent.User.Color = FlowColor ``` ## 数据格式 ### 输入数据结构 ```json { "id": "flow_1", "source": { "latitude": 37.7749, "longitude": -122.4194, "name": "San Francisco" }, "destination": { "latitude": 1.3521, "longitude": 103.8198, "name": "Singapore" }, "data_rate": 5000.0, "data_type": "internet", "status": "active" } ``` ## 视觉效果规格 ### 粒子外观 | 数据类型 | 粒子形状 | 颜色 | 尾迹 | |----------|----------|------|------| | Internet | 圆形光点 | 蓝色 | 短 | | Backbone | 方形光块 | 青色 | 中 | | Cloud | 菱形 | 紫色 | 长 | | AI_Training | 三角形 | 橙色 | 短 | | CDN | 六边形 | 绿色 | 无 | ### 带宽可视化 | 带宽范围 | 粒子密度 | 粒子大小 | 速度 | |----------|----------|----------|------| | > 10 Tbps | 高 | 大 | 快 | | 1-10 Tbps | 中 | 中 | 中 | | < 1 Tbps | 低 | 小 | 慢 | ## 交互效果 ### 悬停效果 ``` 1. [高亮] 路径线 └─ LineWidth: 200 → 300 2. [显示] Tooltip └─ 显示: 源、目标、数据速率、类型 3. [暂停] 粒子 (可选) ``` ### 点击效果 ``` 1. [聚焦] 相机到流向中心 2. [显示] 详细信息面板 3. [播放] Sound Effect ``` ## 性能优化 ### 视距设置 ``` ├─ 显示距离: 50000 km ├─ 粒子剔除距离: 20000 km └─ 简化粒子距离: 10000 km ``` ### 批处理 ``` ├─ 多个相近流向合并显示 ├─ 远距离流向使用简化的粒子 └─ 禁用低优先级流向的粒子 ``` ## 使用场景 ### 场景 1: 全球互联网流量 ``` DataType: Internet ├─ Source: 主要互联网交换中心 ├─ Destination: 其他地区 └─ Visual: 蓝色粒子流 ``` ### 场景 2: AI 训练数据传输 ``` DataType: AI_Training ├─ Source: GPU 集群 ├─ Destination: 数据中心 └─ Visual: 橙色高速粒子 ``` ### 场景 3: CDN 内容分发 ``` DataType: CDN ├─ Source: 源站 ├─ Destination: 边缘节点 └─ Visual: 绿色扩散粒子 ``` ## 后端数据映射 ### API 响应格式 ```json { "type": "data_flow", "data": [ { "id": "flow_1", "source": {"latitude": 37.77, "longitude": -122.41}, "destination": {"latitude": 1.35, "longitude": 103.81}, "data_rate": 5000.0, "data_type": "internet" } ] } ```