『UE4数字孪生』开发流程浅析(持续更新)

数字孪生

是充分利用物理模型传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程。


先不废话,直接上作品:

石几衣束的B站数字孪生作品空间https://space.bilibili.com/66186575https://space.bilibili.com/66186575

大家好,我是石几衣束,正在UE4技术美术的道路上越挖越深......

关于UE4数字孪生的一些思考&梳理(持续更新):

  1. 3D模型&场景地编「全要素生成」

  2. PBR材质表现&Emitter/Nigarra粒子&PPV

  3. 光线追踪&非光线追踪

  4. 程序功能架构&HUD

  5. 物联网大数据同步

  6. 全局程序&美术优化

  7. 多媒体视频播放

  8. 角色&场景动画

  9. 资产打包&更新

  10. 进阶实战开发

三维模型

首先整理一下涉及到的3D建模软件以及作用:

  • 3DMax(格式转换+素材整合+Datasmith导出)

  • Maya(模型骨骼动画)

  • Blender(天下第一)

  • SketchUp(面数低)

  • Revit(1:1参数化表现)

  • Rhino(高精度地形)

  • 倾斜摄影OSGB数据(大面积建模)

  • Marvelous Designer(布料解算)

  • Daz studio(人体表现)

  • CityEngine CGA规则(城市集群快速生成)

  • UE4 PointCloud点云数据(作为大远景背景)

  • 欢迎交流其它相关软件.....

*UE4目前支持CityEngin Vitruvio插件可以直接实时执行ACG规则生成建筑和道路


场景地编

城市地编

地形插件:

  • Landscap根据灰度图生成地形(灰度图来源:国家地质信息网,美国国家地质网)

  • 手工勾勒雕刻山脉+三位模型堆砌地形环境(模型来自UE4商城地形素材)

  • CAD图纸结合WorldMap生成可视化地形

  • WorldCreator2结合灰度图模拟真实地形(效果最好)

  • WorldMachine结合DEM数据生成灰度图

道路:

  • 手工建模道路:适用于定制化崎岖不规则道路

  • 模块化程序道路:适用于井字整齐排列道路(参考商城资源:Roads Generator Pack)

  • Landscape样条线道路:适用于山脉之字形道路(参考商城资源:Brushify Country Roads Pack)

建筑:

建筑分级:V1,V2,V3。(V1:低精度配楼V2:中精度点缀景观楼V3:手工定制精模)

  • 低精度配楼:根据GIS矢量数据<shp.>生成(成熟方案:CityEngine)+低模素材根据卫片手工摆放(或者手工绘制shp数据直接生成可控的配楼景观)

  • 中精度配楼:模块化程序建筑+3D66中精度素材+UE4商城资源结合精模区位摆放

  • 高精度配楼:根据甲方要求设计制作即可

植被

  • SpeedTree素材库,根据卫片刷在Landscape上,近景建议一个一个种树,远景建议直接大范围刷上,山脉地形处需要细刷。

  • 相关素材积累:绿化丛,花草丛,点缀性植被。(eg:桃花树,杏树)

基于UE4 4.26水系统

  • 湖泊,河流,海洋,池塘,瀑布素材库积累,结合船只,码头,喷泉等配景。

  • 物理水粒子(锦上添花)

其它

  • 风力风车,鸟蝴蝶鱼群,电线塔,大桥,车流+人流,动物,草地,花圃灌木丛,星空天空球......

素材推荐:

  1. Moudule City资源包

*特别提醒:目前UE4支持将Twinmotion的模型以及材质100%还原到UE4内(水材质除外),这一点极大的优化了地编流程,特别是对于重点表现的建筑区域进行精细化处理。

Twinmotion可以联动UE4啦!这个功能我都不敢想!太牛了!_哔哩哔哩 (゜-゜)つロ 干杯~-bilibilihttps://www.bilibili.com/video/BV11A411s73Dhttps://www.bilibili.com/video/BV11A411s73D


PBR材质---基于物理的渲染过程。

  1. 漫反射 Diffuse

  2. 反射 Specular

  3. 金属度 Metalness

  4. 反射率 Reflectivity

  5. 菲涅尔反射(玻璃属性)

  6. 法线 Normal

  7. 粗糙度 Roughness

  8. 阴影 AmblientOcclusion

*常见的材质属性

PBR材质工具

1.SubstanceDesgener(制作PBR材质)

2.Marmoset Toolbag3.俗称:八猴(预览PBR效果)

3.Unfold3D(展UV)

4.Xnormal(烘焙法线)


UE4Niagara粒子

Niagara系统(坑先挖好)

白狸奴:UE4-Niagara基础解析https://zhuanlan.zhihu.com/p/138088668https://zhuanlan.zhihu.com/p/138088668

  • 实战场景:可视化车流、物理液体、烟雾气流、特效展示、等等.....

PostProssesVolume

PostProssesVolume(后期盒子)

  • LUT(润色)影视级调色

  • 后期材质(设置景深用于表现独立建筑,扫描特效,Mesh描边)

  • 环境遮罩(Ambient Cubemap)

  • 禁用动态模糊(Motion Blur)

  • Misc控制全局分辨率(不建议大于200)

  • Film(偶尔调色出奇的好用)


光线追踪&非光线追踪(离线烘焙Lightmass)

RayTracing

  • RayTracing(光线追踪)-着重表现金属,玻璃,全局AO等等

  • 离线烘焙(Lightmass)-可用于降低配置消耗,不过占用内存较大(目前的GPU Lightmass烘焙效率高,效果与CPU渲染并无太大差异)

其它光线技术:

  • 虚拟纹理-可以吧生成动态纹理

  • 距离场阴影 -对大型场景的性能优化作用显著

  • 屏幕空间全局光照


程序功能架构

参考大钊老师专栏里有关GamePlay架构的解析:

InsideUE4https://www.zhihu.com/column/insideue4https://www.zhihu.com/column/insideue4

个人整理的开发目录结构:

Content目录结构

数字孪生涉及的功能点:

  • 天气系统

  • 昼夜交替系统

  • 季节系统

  • 模拟(非数据)交通系统

  • 程序化夜景车流,路灯,窗户效果

  • 数据可视化大屏嵌入

  • 自定义POI镜头事件

  • 程序化道路系统(表现核心区域)

  • c程序化交通系統(重点表现车流)

  • 动态扫描系统(可全局控制)

  • 程序化自定义景深(带效果)

  • 模型切割透视效果

  • 季节切换系统

  • 自定义景深选择带描边

  • .....

其它功能点:

  • 全局参数设置(eg:分辨率,阴影质量等)

  • config配置运行

  • 产品启动真实读取&加载

  • 远程内网ipad控制交互(TCP&UDPsocket)

  • APK加密&解密

  • 生成安装包


物联网大数据同步

物联数据

  1. 获取数据:数据包括但不限于:点、线、面(通常为Json/GeoJson数据)

  2. 读取数据:LowEntryHttpRequest、LowEntryJson插件读取云数据。

  3. 处理数据:通常数据都是按照经纬坐标集成的,这里我们需要将经纬坐标转为引擎坐标,推荐插件(SimulationPlugin),github可捡。

  4. 应用数据:将数据转化为可视的效果,例如:当地停车场位置以及内部信息。

常见数据驱动效果有:热力图、OD线、标签POI、路网。


全局程序&美术优化

全局优化

这是非常关键的一个篇章,根据经验来讲,产品流程成熟之后,产品开发70%的工作可能都要放在后期的优化上。(这里的优化包含但不限于对效果进行修改的工作)

特别推荐:NAVIDA DLSS目前支持4.25版本以上,可大幅度提升性能,并且提高分辨率,和光追同时使用效果更佳。

程序优化:

优化前的注意事项:

  1. 记得在独立模式下运行(standalone Mode)

  2. 记得最小化编辑器

  3. 切记关闭帧率平滑turn off Frame rates smoothing

  4. 且用控制台命令r.VSync=0关闭垂直同步

方案:

  • 少用Tick(要记住如果你的场景和世界中,有许多Actor的“Tick”函数在运行。那就会严重拖累游戏的流畅度。)*替代方案:Timeline、Timer

  • Manual toggling of Actor Tick 手动切换Tick(手动禁用和开启Tick,比如禁用那些距离玩家太远的Actor,它们不在摄像机里,在你靠近他们的时候再重新启用。)

  • Reducing the tick interval (减少Tick的时间间隔.)

  • Event drien systems (事件驱动&蓝图时间驱动)

  • C++的“RotatingMovementComponent”就是个很好的方法。它用于让对象自旋,但假如你还想进一步榨取性能,你就可以用顶点着色器实现它。

  • 如果你制作的3D游戏会用到动画蓝图,记得要使用Fast Path,基本上动画蓝图中的这种闪电图标越多就越好。

性能消耗大的几个函数:

 
 
 
 

所有GetAllActorsOfClass ForLoop SpawnActorXXX

*在只有需要访问数据的时候才调用这个函数。然后把数据全部存到数组中。

玄冬Wong:[UE4]性能优化指南(美术向)​zhuanlan.zhihu.com

图标

进阶开发

  1. GIS数据的应用

  2. Plugin插件集成和应用

  3. 像素流多端应用

  4. API接口设计(SDK工具集)

  5. VR&AR应用

  6. 视频流的接入(RTSP/RTMP/HTTP)

  7. 数据库接入(Mysql)

  8. RPC广域网多人联机

  9. 音频接入(可参考腾讯游戏语音 GVoice)

数字孪生的项目分类

智慧城市、智慧楼宇、智慧校园、智慧工厂、智慧医院、智慧展馆、智慧旅游、智慧乡村、智慧水利、智慧能源、智慧交通、智慧商场、智慧机场、智慧小区、智慧酒店、智慧BIM。


UE5带来的技术革命:

Lumen:在实时全局光照领域,将成为挑战光线追踪技术的硬核法宝,并且,其仅通过软件(不借助硬件)计算。*目前UE5早期体验版:在折射、反射、透明物等方面和光追还有一定的差距。并且会出现严重的漏光现象,比如墙体过薄。

Nanite:彻底解决了模型的面数限制,在某种程度上达到了‘’无限面‘’,其动态Lod效果相对传统的手工Lod,效果显得非常细腻自然。*不过对于已经属于无法优化的物体(比如一个引擎底层的12面cube)表面会存在不显示材质的Bug。

Q&A板块(欢迎小伙伴们提问):


1.ACG规则生成建筑?是个什么东东?

这个规则是由51World创建并定义的,具体详情可参考官网。我这里做一个简单的总结:ACG可以理解为一个全自动的场景生成算法,通过数据直接还原真实世界。

2.怎么样让UE4和网页交互?

可以使用WebUI插件,通过数据接口调用前端H5的交互界面,中间的通信数据结构推荐Geojson,实现前后端的数据和交互通信。

敬此

共勉

~

欢迎加入:UE4新手交流群:593864978 \2群:831634765 有三年以上行业经验的小伙伴欢迎加入:UE4虚幻4技术交流学习群:758354000

猜你喜欢

转载自blog.csdn.net/weixin_43635045/article/details/120967204