7.4 KiB
7.4 KiB
BP_DataPoint 基类蓝图详细规格
蓝图信息
| 属性 | 值 |
|---|---|
| 蓝图类型 | Actor |
| 父类 | Actor |
| 路径 | Content/Blueprints/BP_DataPoint.uasset |
组件列表
BP_DataPoint
├── SceneRoot (场景根)
│ ├── StaticMesh (基础网格 - 球体)
│ │ └── Material: M_DataPoint_Base
│ ├── NiagaraComponent (粒子光晕)
│ │ └── Niagara System: NS_DataPoint_Glow
│ ├── WidgetComponent (3D 标签)
│ │ └── User Widget: W_DataLabel
│ └── SpringArm (弹簧臂 - 用于相机聚焦)
│ └── CameraComponent
变量列表
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
DataId |
String | "" |
唯一标识 |
Name |
String | "Unknown" |
显示名称 |
Source |
String | "unknown" |
数据源 |
DataType |
String | "point" |
数据类型 |
Latitude |
Float | 0.0 |
纬度 |
Longitude |
Float | 0.0 |
经度 |
Altitude |
Float | 100000.0 |
高度 (厘米) |
Country |
String | "" |
国家 |
City |
String | "" |
城市 |
Performance |
Float | 0.0 |
性能值 |
Metadata |
JsonObject | {} |
元数据 |
IsSelected |
Boolean | false |
是否选中 |
IsHovered |
Boolean | false |
是否悬停 |
BaseColor |
LinearColor | (1,1,1,1) | 基础颜色 |
HighlightColor |
LinearColor | (0,1,1,1) | 高亮颜色 |
材质参数
M_DataPoint_Base
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
BaseColor |
Vector3 | (1,0,0) | 基础颜色 |
EmissiveStrength |
Float | 5.0 |
自发光强度 |
PulseSpeed |
Float | 1.0 |
脉冲速度 |
PulseIntensity |
Float | 0.5 |
脉冲强度 |
FresnelPower |
Float | 2.0 |
菲涅尔边缘强度 |
NS_DataPoint_Glow (Niagara 参数)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
User.Color |
LinearColor | (1,0,0,1) | 粒子颜色 |
User.Size |
Float | 1.0 |
粒子大小 |
User.Lifetime |
Float | 1.5 |
粒子寿命 |
函数
Initialize (String InId, String InName, Float InLat, Float InLon)
1. [设置] DataId = InId
2. [设置] Name = InName
3. [设置] Latitude = InLat
4. [设置] Longitude = InLon
5. [调用] UpdatePosition()
6. [调用] UpdateLabel()
UpdatePosition
1. [创建] FGeographicPoint (Latitude, Longitude, Altitude)
2. [调用] GeoUtils.LatLonToUEPosition(Point)
└─ 返回: UELocation (Vector3)
3. [设置] StaticMesh.SetRelativeLocation(UELocation)
4. [设置] NiagaraComponent.SetRelativeLocation(UELocation)
5. [设置] WidgetComponent.SetRelativeLocation(UELocation + (0,0,200))
UpdateData (Struct NewData)
1. [解析] NewData
2. [设置] DataId = NewData["id"]
3. [设置] Name = NewData["name"]
4. [设置] Latitude = NewData["location"]["latitude"]
5. [设置] Longitude = NewData["location"]["longitude"]
6. [可选] [设置] Performance = NewData["performance"]
7. [可选] [设置] Country = NewData["country"]
8. [调用] UpdatePosition()
9. [调用] UpdateLabel()
10. [调用] UpdateMaterial()
UpdateLabel
1. [获取] W_DataLabel Widget Reference
2. [设置] NameText = Name
3. [设置] CountryText = Country
4. [设置] PerformanceText = FormatPerformance(Performance)
UpdateMaterial
1. [获取] StaticMesh.Material
2. [分支] Source
├─ "top500":
│ └─ [设置] BaseColor = (1, 0.2, 0.2, 1) 红色
├─ "epoch_ai_gpu":
│ └─ [设置] BaseColor = (1, 0.5, 0, 1) 橙色
├─ "huggingface_models":
│ └─ [设置] BaseColor = (0.2, 0.5, 1, 1) 蓝色
├─ "peeringdb_ixp":
│ └─ [设置] BaseColor = (0, 1, 0.5, 1) 青色
├─ "peeringdb_network":
│ └─ [设置] BaseColor = (0.5, 0, 1, 1) 紫色
└─ [默认]:
└─ [设置] BaseColor = (1, 1, 1, 1) 白色
FormatPerformance (Float Value) → String
1. [分支] Value >= 1000000
├─ [是]: 返回 = FString::Printf(TEXT("%.1f EFLOPS"), Value / 1000000)
└─ [否]: [分支] Value >= 1000
├─ [是]: 返回 = FString::Printf(TEXT("%.1f PFLOPS"), Value / 1000)
└─ [否]: 返回 = FString::Printf(TEXT("%.1f TFLOPS"), Value)
事件
OnBeginCursorOver
1. [设置] IsHovered = true
2. [调用] SetHighlight(true)
3. [调用] PlayHoverEffect()
OnEndCursorOver
1. [设置] IsHovered = false
2. [分支] IsSelected == false
└─ [调用] SetHighlight(false)
OnClicked
1. [调用] SetSelected(true)
2. [调用] BP_GlobeController.OnDataPointSelected(Self)
3. [调用] PlayClickEffect()
SetHighlight (Boolean bHighlight)
1. [获取] NiagaraComponent
2. [分支] bHighlight == true
├─ [设置] User.Color = HighlightColor
└─ [否则]:
├─ [设置] User.Color = BaseColor
3. [调用] NiagaraComponent.Activate(bHighlight)
SetSelected (Boolean bSelected)
1. [设置] IsSelected = bSelected
2. [分支] bSelected == true
├─ [设置] StaticMesh.Scale = (1.5, 1.5, 1.5)
├─ [调用] SetHighlight(true)
└─ [设置] SelectedRing.Visible = true
└─ [否则]:
├─ [设置] StaticMesh.Scale = (1.0, 1.0, 1.0)
├─ [分支] IsHovered == true
│ └─ [调用] SetHighlight(true)
└─ [设置] SelectedRing.Visible = false
PlayHoverEffect
1. [播放] Niagara Particle Burst
└─ 粒子数量: 20
PlayClickEffect
1. [播放] Sound Effect "DataPoint_Click"
2. [播放] Timeline "PulseEffect"
└─ 持续时间: 0.5秒
事件调度器
| 事件调度器 | 参数 | 说明 |
|---|---|---|
OnPointSelected |
BP_DataPoint | 点被选中 |
OnPointHovered |
BP_DataPoint | 鼠标悬停 |
OnPointClicked |
BP_DataPoint | 点击 |
数据格式
输入数据结构
{
"id": "top500_1",
"name": "Frontier",
"source": "top500",
"data_type": "supercomputer",
"location": {
"latitude": 33.7756,
"longitude": -84.3962,
"altitude": 0
},
"country": "US",
"city": "Atlanta",
"performance": 1682.65,
"metadata": {
"cores": 8730112,
"memory": "5.67 PB",
"power": "29.0 MW"
}
}
颜色编码
| 数据源 | 颜色 | RGB | 说明 |
|---|---|---|---|
| top500 | 🔴 红色 | (1.0, 0.2, 0.2) | TOP500 超算 |
| epoch_ai_gpu | 🟠 橙色 | (1.0, 0.5, 0.0) | GPU 集群 |
| huggingface_models | 🔵 蓝色 | (0.2, 0.5, 1.0) | HuggingFace 模型 |
| peeringdb_ixp | 🩵 青色 | (0.0, 1.0, 0.8) | IXP 互联网交换中心 |
| peeringdb_network | 🟣 紫色 | (0.6, 0.0, 1.0) | 网络运营商 |
| peeringdb_facility | 🟤 棕色 | (0.6, 0.4, 0.2) | 数据中心 |
| teleegeography_cables | 🟡 黄色 | (1.0, 0.8, 0.0) | 海底光缆 |
缩放比例
| 性能范围 | 缩放 | 说明 |
|---|---|---|
| < 1 PFLOPS | 0.5x | 小型系统 |
| 1-100 PFLOPS | 1.0x | 中型系统 |
| 100-1000 PFLOPS | 1.5x | 大型系统 |
| > 1 EFLOPS | 2.0x | 超大规模 |
粒子效果 (Niagara)
NS_DataPoint_Glow
发射器设置:
├─ 发射器类型: 粒子系统
├─ 发射模式: 循环
├─ 发射速率: 30 粒子/秒
├─ 粒子寿命: 1.5 秒
└─ 粒子大小: 渐变 (小 → 大)
渲染设置:
├─ 渲染组件: Niagara 粒子
├─ 材质: M_Particle_Glow
├─ 混合模式: Additive
└─ 排序: 无
颜色渐变:
├─ 0%: (1, 1, 1, 1)
├─ 50%: (1, 1, 1, 0.8)
└─ 100%: (1, 1, 1, 0)