8.3 KiB
8.3 KiB
UE5 3D 大屏场景搭建完整指南
目录
项目初始化
步骤 1: 创建 UE5 项目
1. 打开 Epic Games Launcher
2. 选择 Unreal Engine 5.3+ (推荐 5.4)
3. 点击 "New Project" → "Games"
4. 选择 "Blank" 模板
5. 设置:
├─ 项目名: Planet
├─ 位置: D:\games\Planet\
├─ 目标: Desktop / Console
├─ 质量: Maximum
├─ -starter content: false
└─ raytracing: false
6. 点击 "Create Project"
步骤 2: 项目设置
Edit → Project Settings:
显示设置:
├─ Render → Default Viewport:
│ ├─ Fullscreen Mode: Windowed
│ ├─ Resolution: 3840×2160 (4K)
│ └─ Custom Near Clip Plane: 100
├─ Input:
│ ├─ Capture Mouse on Launch: true
│ └─ Enable Click Events: true
└─ Quality:
└─ Shadow Quality: High
安装 Cesium 插件
方法 1: 通过 Marketplace (推荐)
1. 打开 UE5 编辑器
2. Edit → Plugins
3. 搜索 "Cesium for Unreal"
4. 点击 "Enable"
5. 重启编辑器
方法 2: 手动安装
1. 从 GitHub 下载:
https://github.com/CesiumGS/cesium-unreal/releases
2. 解压到:
D:\games\Planet\unreal\Plugins\Cesium
3. 编辑uproject文件:
{
"Plugins": [
{
"Name": "Cesium",
"Enabled": true
}
]
}
4. 右键 Planet.uproject → "Generate Visual Studio project files"
5. 重新打开项目
配置 Cesium ion Token
Edit → Project Settings → Cesium:
1. Cesium ion:
├─ Default Access Token: 粘贴你的 token
│ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
└─ Default Server: https://ion.cesium.com
2. Cesium World Terrain:
├─ Enable: true
├─ Ellipsoid: WGS84
└─ Terrain Exaggeration: 1.0
3. Cesium OSM Buildings:
├─ Enable: true
└─ Style: Gray
创建主场景
步骤 1: 创建新关卡
1. File → New Level → Default
2. 删除默认的:
├─ Floor
├─ Wall_400
├─ Wall_400x400
└─ PlayerStart
3. 保存为: Content/Levels/Main.umap
4. 设置为启动关卡:
Edit → Project Settings → Maps & Modes
└─ Default Level Name: Main
步骤 2: 添加 Cesium 组件
从 "Cesium" 面板拖入:
1. CesiumGeoreference
└─ 位置: (0, 0, 0)
└─ 属性: 自动设置
2. CesiumWorldTerrain
└─ 位置: (0, 0, 0)
└─ 属性:
├─ Enable Collision: false
└─ Create Pawns: false
3. CesiumSunSky
└─ 位置: (0, 0, 0)
└─ 属性:
├─ Use Solar Time: true
└─ Solar Time: 2024-01-01 12:00:00
步骤 3: 配置地球位置
选中 CesiumGeoreference:
├─ Origin Location:
│ ├─ Latitude: 0
│ ├─ Longitude: 0
│ └─ Height: 0
│
├─ Target Viewport:
│ ├─ Width: 3840
│ └─ Height: 2160
│
└─ Camera:
└─ Default Camera Class: None
配置光照
步骤 1: 设置太阳光照
选中 CesiumSunSky:
├─ Atmospheric Sun Light:
│ └─ 指向 DirectionalLight_Sun
│
├─ Direction:
│ ├─ Azimuth: 180
│ └─ Altitude: 45
│
├─ Sky Light:
│ └─ Sky Light Actor → SkyLight
│
└─ Atmospheric Fog:
├─ Fog Density: 0.02
├─ Fog Falloff: 0.2
└─ Volumetric Fog: true
步骤 2: 添加辅助光照
1. 添加 DirectionalLight_Sun:
├─ Intensity: 10 lux
├─ Light Color: (1, 0.95, 0.8)
└─ Cast Shadows: true
2. 添加 Skylight:
├─ Intensity: 1.0
├─ Color: (0.5, 0.7, 1.0)
└─ Real-time Capture: false
步骤 3: 后处理
添加 PostProcessVolume (Unbound):
├─ Exposure:
│ ├─ Min EV100: 10
│ ├─ Max EV100: 20
│ ├─ Speed Up: 2
│ ├─ Speed Down: 2
│ └─ Target EV100: 12
│
├─ Bloom:
│ ├─ Intensity: 1.0
│ ├─ Threshold: 1.0
│ └─ Method: Convolution
│
├─ Color Grading:
│ ├─ Saturation: (1, 1, 1)
│ ├─ Contrast: 1.0
│ └─ Gamma: 1.0
│
└─ Vignette:
└─ Intensity: 0.5
设置相机
步骤 1: 创建相机控制器
创建 Blueprint: BP_CameraController (父类: Actor)
组件:
├─ SceneRoot
│ └─ SpringArm
│ └─ Camera
│
变量:
├─ TargetRadius: Float = 500000
├─ ZoomSpeed: Float = 50000
├─ RotateSpeed: Float = 1.0
└─ bIsRotating: Boolean = false
步骤 2: 配置相机移动
输入绑定 (Edit → Project Settings → Input):
├─ Mouse X:
│ └─ Event: Rotate Yaw
│ └─ Add Controller Yaw Input × -1
│
├─ Mouse Y:
│ └─ Event: Rotate Pitch
│ └─ Add Controller Pitch Input × -1
│
├─ Mouse Wheel:
│ └─ Event: Zoom
│ ├─ Add Controller Zoom In (放大)
│ └─ Add Controller Zoom Out (缩小)
│
└─ Right Mouse Button:
├─ Event: 按下 → bIsRotating = true
└─ Event: 松开 → bIsRotating = false
步骤 3: 自动巡航
创建 Timeline: AutoRotate
├─ 持续时间: 60秒
├─ 循环: true
└─ 曲线:
0%: 0
100%: 360
Tick Event:
├─ 分支: bAutoRotate == true
│ ├─ Play Timeline
│ └─ Add Controller Yaw Output
└─ 否则: 跳过
添加蓝图组件
步骤 1: 放置 GlobeController
1. 从 Content Browser 拖入 BP_GlobeController
2. 位置: (0, 0, 0)
3. 确保 CesiumGeoreference 在其下
步骤 2: 设置初始相机
1. 在 World Outliner 中选择 Camera
2. 设置位置:
├─ X: 0
├─ Y: -2000000
└─ Z: 1000000
3. 设置旋转:
├─ Pitch: -30
└─ Yaw: 0
步骤 3: 配置数据管理器
选中 BP_GlobeController:
├─ API_URL: http://localhost:8000
├─ WS_URL: ws://localhost:8000/ws
├─ UpdateInterval: 30.0
├─ bAutoRotate: true
└─ RotateSpeed: 0.5
配置后端连接
步骤 1: 测试后端服务
# 在 WSL 中启动后端
cd /home/ray/dev/linkong/planet
docker restart planet_backend_new
# 测试 API
curl http://localhost:8000/api/v1/collected/summary
步骤 2: 配置 CORS (如果需要)
后端已配置 CORS:
├─ http://localhost:3000
├─ http://0.0.0.0:3000
└─ http://frontend:3000
步骤 3: 测试 WebSocket
在 UE5 蓝图中:
1. 创建 WebSocket 连接
└─ URL: ws://localhost:8000/ws
2. 发送订阅消息:
{
"action": "subscribe",
"channels": ["updates", "alarms"]
}
3. 监听消息并处理
测试运行
步骤 1: 编译蓝图
1. 点击工具栏 "Compile" 按钮
2. 检查错误日志
3. 修复任何错误
步骤 2: 运行测试
1. 点击 "Play" 按钮
2. 检查:
├─ 地球是否正常显示
├─ Cesium 地形是否加载
├─ 太阳光照是否正确
└─ 相机控制是否工作
3. 打开输出日志检查错误
步骤 3: 打包发布
1. File → Package Project → Windows (64-bit)
2. 选择输出目录: D:\games\Planet\Dist\
3. 等待打包完成
4. 测试打包后的可执行文件
常见问题
Q1: Cesium 地形不显示
解决方案:
1. 检查 Cesium ion Token 是否正确
2. 检查网络连接
3. 确认 CesiumWorldTerrain 已启用
4. 查看输出日志错误信息
Q2: 相机控制不工作
解决方案:
1. 确保 PlayerController 启用输入
2. 检查输入绑定是否正确
3. 确认相机组件已附加
4. 检查是否有其他 Actor 捕获输入
Q3: WebSocket 连接失败
解决方案:
1. 检查后端服务是否运行
2. 确认 CORS 配置正确
3. 检查防火墙设置
4. 验证 URL 格式正确
Q4: 性能问题
解决方案:
1. 降低渲染分辨率
2. 禁用不必要的特效
3. 减少粒子数量
4. 使用 LOD
5. 启用虚拟纹理
下一步
- 添加数据点 - 创建 BP_Supercomputer 实例
- 添加海缆 - 创建 BP_SubmarineCable 实例
- 添加数据流 - 创建 BP_DataFlow 实例
- 配置 UI - 添加 W_MainHUD 等界面
- 优化性能 - 根据实际运行调整