UE4数字孪生模型DEMO

数字孪生模型DEMO构建

演示视频在B站 https://www.bilibili.com/video/BV1gg4y1c7Bx/

前言

数字孪生
本DEMO尝试对城市数字孪生作出初步尝试,日后方向为结合C++进行更深层次的开发。

相关概念:
在这里插入图片描述

DEMO大致功能:
在这里插入图片描述

一、模型

模型建立

  • QGIS+Blender+C4D建立
  • Cesium for Unreal导入
  • ArchVizExplorer官方案例自带模型
  • Datasmith导入网络模型
  • UE程序化植被工具
  • UE自带树木资产
  • 后续拓展:HOUDINI程序化建模、AI+Revit生成BIM

模型材质

  • UE材质系统
  • UE自带材质

二、界面

主页面

  • Figma即时设计、ArchVizExplorer自带菜单栏
  • 图表框、标题栏、底部菜单栏

加载界面

  • 关卡切换时出现加载界面
  • 异步加载实现:关卡未加载完成,则出现加载界面,加载完成,加载界面消失

登入界面

扫描二维码关注公众号,回复: 16753291 查看本文章
  • 高斯模糊背景、进入系统按钮
  • 点击进入系统,视角切换、相关UI显隐、渐变

弹窗提示

  • 对异常操作进行弹窗提示

字体

  • 斗鱼追光体
  • 思源黑体(Bold)
  • Roboto

三、图表可视化

代码实现

  • 前端:Echarts库、HTML、CSS、JavaScript
  • 后端:Express框架
  • 数据库:MongoDB
  • 数据库接入数据,Express连接数据库并向前端代码传输数据
  • 包含电力、热度图、人流量车流量统计图、水流流量图、三维人口分布图等

嵌入UE

  • webBrowser
  • webUI
    在这里插入图片描述

四、地图

  • Mapbox制图
  • 三维水墨风格地图
  • 交通线路图
  • 后续拓展:在城市地面生成三维地图

在这里插入图片描述
在这里插入图片描述

五、天气

  • Ultra Dynamic Sky
  • 添加滑动条控制时间、点击按钮切换天气(晴、阴、多云、小雨、大雨、小雪、大雪)
  • 通过高德APIVa Rest插件获取地区气候状况(天气、温度、湿度)
  • 将获取到的JSON数据解析并传输至UDS,设置当前天气
  • 设置定时器自动更新天气状况

六、POI

  • POI_Actor添加,设置视角、信息、Tag
  • 点击POI(名称/选项框),视角移动并弹出POI信息
  • 包括 POI信息总界面Surroundings控件、POI展示框EntryList控件、POI名称Entry控件、POIActor
  • 点击POI名称框后,POI所在范围圈渐显后渐隐,以提示用户POI位置。
  • 主要实现逻辑:事件运行,循环遍历POIActor,根据POIActor的tag不同而将POI名称添加进不同的POI展示框,点击POI名称,实现视角移动,点击POIActor,出现POI详细信息。

在这里插入图片描述

七、交通

  • 道路样条线添加,样条线添加POI_Actor作为子Actor,设置视角、信息、Tag
  • 视角坐标统一Actor坐标Z轴加上观察高度,作为摄像机位置
  • 点击道路后出现道路变色动画,红色标亮提示用户所选道路
  • 百度地图API获取道路状况Va Rest解析JSON数据并输出,构建出获取道路状况函数
  • 在样条线的事件开始运行中,添加获取道路状况函数,系统开始运行时,根据不同的道路状况(通畅、缓行、拥挤等),道路具有不同的颜色
  • 添加道路状况信息窗口,点击样条线标签显示,含有道路名称、当前路况、详细路况信息
  • 设置定时器自动更新道路状况
  • 后续拓展:选定起始点和终点,生成导航路线

在这里插入图片描述

八、建筑信息

  • Datasmith导入3dMax模型
  • csv导入建筑数据信息,构建成DataTable
  • 创建建筑分层界面建筑信息界面
  • 点击的层数与相应层数的建筑信息匹配
  • 传感器数据传入数据库,连接Echarts图表
  • 通过设置移动实现建筑分层、建筑弹出效果
  • 点击楼层进行视角转换楼层弹出数据展示
  • 后续拓展:利用opencv接入监控摄像头、Mqtt协议构建传感器与UE交互、接入MySQL数据库

在这里插入图片描述

九、空间测量

  • 长度测量
  • 面积测量
  • 屏幕坐标场景坐标的转换
  • 空间距离计算
  • 后续拓展:输入数值,生成缓冲区,进行统计分析

十、小地图与指南针

小地图

  • 设置屏幕捕捉2D界面,Pawn放置顶部摄像机、实时捕捉摄像机俯视角图像

指南针

  • 指南针捕捉pawn视角,八个方向实时变化

十一、建筑游览模式

第三人称角色操作

  • 控制场景中的人物进行场景游览
  • Pawn输入映射编写

场景交互

  • webUI制作交互浏览器
  • MediaPlayer实现视频播放
  • 后续拓展:lua代码添加交互物

在这里插入图片描述

十二、场景切换

三种模型间的切换

  • 三种模型三个关卡:城市模型、地理模型、建筑模型
  • 切换判断:获取当前关卡名,判断切换操作是否合理,合理则打开关卡,否则弹出提示窗口

在这里插入图片描述

其他

后期处理体积

  • LUT校色
  • 调整曝光
  • 调节画面色彩

注意事项

  • 若添加UDS后,场景明显变暗,需要调整场景曝光设置,如调整后期处理和关闭渲染设置-自动曝光设置中扩展默认亮度范围,使UDS控制曝光。
  • Cesium For Unreal场景曝光极高,通过以下方式调整:
    (1)在项目设置勾选自动曝光自动曝光设置中扩展默认亮度范围
    (2)选择场景中的定向光组件,将强度降到10.0以下(此处推荐第二种)
  • ArchVizExplorer中光照亮度极高,若添加自带光照物体进场景发现物体材质光照为黑色,提升物体光照亮度以正常显示。
  • 视角移动方式:Set View Target with Blend后需要添加possess重新分配控制器和pawn,而不改变pawn的情况下实现视角移动使用,设置actor位置设置旋转来改变视角。
  • 注意获取Actor获取控件创建控件的区别
  • webUI添加的Echarts图表注意窗口大小自适应隐藏overFlow
  • 控件添加到视口,默认全屏显示,需要调节控件显示大小
  • 注意性能消耗较大的函数:TickForEachLoopCastTo
  • 蓝图通信中的子控件调用事件分发器类型转换蓝图接口事件与函数用法与区别
  • 不需要的控件注意从父项中移除,减少资源占用
  • TimeLine中的输入节点playplay from start区别
  • Va Rest解析JSON节点Get String FieldGet Array FieldAs ObjectGet Object

此文章持续不定时更新

工程文件:后续放出

引用:

https://blog.csdn.net/weixin_47373639/article/details/127493246
https://blog.csdn.net/weixin_43635045/article/details/124148736
https://space.bilibili.com/66389753

猜你喜欢

转载自blog.csdn.net/m0_51947486/article/details/130657164