数字孪生
是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程。并利用大数据计算,深度学习,人工智能等前沿技术,挖掘数据潜力,提高数据价值。
大家好,我是石几衣束,Shader不写了,视频不剪了,蓝图也不连了...来当一段时间小作家。
没想到,自21年3月份发布这篇文章以来,时隔一年,收获了大量同行业者来自不同角度的交流和解读,大家共克时艰收获颇丰,同时也推动着我孜孜不倦的排忧解难更上一层楼,至此,感谢大家的鼓励与支持!
这一版更新是我自发布后站在对数字孪生新的高度新的理解重新审视的作品,我将倾自己之所能,为大家带来全面,深刻,细致的阐述和讲解。
| 目录
-
三维模型&场景地编「底座生成」
-
PBR材质表现&Nigarra粒子&PPV后期
-
光线追踪&非光线追踪&Lumen
-
底层程序架构&UMG
-
物联网数据中台部署
-
全局/程序&美术/优化
-
多媒体视频播放
-
角色动画&场景定序器
-
资产打包&DLC更新
-
前后端开发&服务器运维
-
数字孪生项目分类
-
UE5带来的技术革命
-
谈一谈元宇宙
-
Q&A板块
-
...
■代表趋势 ■代表重要
| 首先整理一下涉及到的三维建模软件及其作用:
-
3DMax(格式转换+场景整合+Datasmith导出)
-
Maya(模型骨骼动画)
-
Blender(天下第一)
-
SketchUp(面数低)
-
Revit(1:1参数化建模)
-
Rhino(高精度地形)
-
倾斜摄影OSGB数据(作为外围环境模型)
-
Marvelous Designer(布料解算)
-
Daz studio(人体表现)
-
CityEngine CGA规则(低模城市集群快速生成)
-
PointCloud点云数据(作为大远景背景)
-
Houdini(程序化建模)
-
Bentley(实景建模)
-
*欢迎交流其它相关三维软件.....
*UE4目前支持CityEngin Vitruvio插件可以直接实时执行ACG规则生成建筑和道路。
*UE4支持Houdini插件可以直接自动程序化生成实例化建筑,详情可参考:Houdini+UE5是不是无敌了?
| 地形插件:
-
Landscap根据灰度图生成地形(灰度图来源:国家地质信息网,美国国家地质网)
-
手工勾勒雕刻山脉+三维模型堆砌地形环境(模型来自UE4商城地形素材)
-
CAD图纸结合WorldMap生成可视化地形
-
WorldCreator2结合灰度图模拟真实地形(效果最好)
-
WorldMachine结合DEM数据生成灰度图
-
根据生成模型手工二次拓扑制作地形(效果好,性能优)
| 道路
-
手工建模:适用于定制化崎岖不规则道路
-
模块化程序道路:适用于井字整齐排列道路(参考商城资源:Roads Generator Pack)
-
Landscape样条线道路:适用于山脉之字形道路(参考商城资源:Brushify Country Roads Pack)
-
GIS矢量数据生成道路:适用于城市级高密度复杂道路(参考CityEngine)
| 建筑
建筑分级:F1-F5。(F1:自动化生成低模、F2:自动化贴图低模、F3:精度误差低于0.5m中模、F4:主建筑低于0.3m精度周边50m到达0.5m中模、F5:建模精度10米范围误差小于0.1m高模)
-
低精度建筑:根据GIS矢量数据<shp.>生成(成熟方案:CityEngine)+低模素材根据卫片手工摆放(或者手工绘制shp数据直接生成可控的配楼景观)。
-
中精度建筑:模块化程序建筑+3D66中精度素材+UE4商城资源结合精模区位摆放。
-
高精度建筑:根据甲方要求在建模软件内设计制作即可。
| 植被
-
SpeedTree素材库,根据卫片刷在Landscape上,近景建议一个一个种树,远景建议直接大范围刷Billboard片。(*注意控制性能消耗)
-
相关虚幻商城素材资产积累:绿化丛,花草丛,点缀性植被。(eg:桃花树,杏树)
-
推荐在Twinmotion中刷好植被,并调节好植被参数后,通过TM插件导入UE,此方案效率高效果好。
| 水
基于UE4 4.26水系统
-
湖泊,河流,海洋,池塘,瀑布素材库积累,结合船只,码头等配景。
-
物理水粒子(eg:喷泉、消防模拟..等)
-
进阶模拟可以参考Asher的SPH水粒子方案。
-
大神级模拟可以参考Youtube上ImaginaryBlend大佬的作品:
https://www.youtube.com/watch?v=EfzhMqZyilI
,时长06:24
| 其它
其它一些地编装饰物,例如:风车、飞鸟蝴蝶鱼群、路灯、车流+人流、动物、公共交通载具、天空球等......
*特别提醒:目前UE4支持将Twinmotion的模型以及材质100%还原到UE4内(水材质除外),这一点极大的优化了地编流程,特别是对于重点表现的建筑区域进行精细化处理。
| PBR材质
-
漫反射 Diffuse
-
颜色 BaseColor
-
反射 Specular
-
金属度 Metalness
-
反射率 Reflectivity
-
菲涅尔反射(玻璃属性)
-
法线 Normal
-
粗糙度 Roughness
-
阴影 AmblientOcclusion
-
高度图 Height
*常见的材质属性
PBR材质工具
1.SubstanceDesgener(制作PBR材质)
2.Marmoset Toolbag3.俗称:八猴(预览PBR效果)
3.Unfold3D(展UV)
4.Xnormal(烘焙法线)
| Niagara粒子
-
实际应用:UE4数字孪生 OD线、水体流体气体模拟、烟雾、火焰、灯光、等动态视效....
| PostProssesVolume(后期)
以下为后期常用控制参数
-
Color Grading LUT(润色)影视级调色
-
PPM 后期材质(设置景深用于表现独立建筑,扫描特效,Mesh描边)
-
Ambient Cubemap 环境光遮罩
-
Motion Blur 控制动态模糊
-
Misc 控制全局分辨率(不建议大于200)
-
Film(影视调色)
-
Bloom 太阳光晕调节
-
Exposure 人眼适应曝光
-
Temperature 色温
-
Fade Out Distance 控制阴影距离
-
SSR 控制屏幕空间反射效果
| 光线追踪&非光线追踪&Lumen
-
RayTracing(光线追踪)-着重表现金属,玻璃,全局AO等等
-
离线烘焙(Lightmass)-可用于降低配置消耗,不过占用内存较大(目前的GPU Lightmass烘焙效率高,效果与CPU渲染并无太大差异)
-
Lumen -实时全局GI,混合追踪管线,每条管线解决它所擅长解决的,UE5正式版已经支持了对Landscape的渲染
其它光照技术:
-
虚拟纹理-是一种以时间换空间的纹理流送技术,它最大的好处在于能够让我们使用多种高分辨率纹理,而不像传统流送一样受到内存和带宽限制
-
距离场阴影 -能很好的解决级联阴影无法设置过远的阴影距离问题,对远距离阴影进行补充
-
屏幕空间全局光照SSGI-是一个非常廉价的实时GI方案
-
PathTracing-与其他渲染模式相比,追踪器具有以下优势:
-
可生成高品质的逼真渲染效果,以及物理合理。
-
无需额外设置,或者只需很少设置,即可获得与其他离线渲染器相当的效果
-
缩小与类似的再现效果之间的差距。
-
与序列器和渲染渲染完整集成,以支持设备质量等级的渲染输出。
| 底层程序框架&UMG
程序的底层架构&UMG可以直接参考大钊老师专栏里有关GamePlay架构的文章即可:https://zhuanlan.zhihu.com/p/22813908
数字孪生涉及的业务功能:
-
天气系统
-
昼夜交替系统
-
四季切换系统
-
模拟(非数据)交通系统
-
程序化夜景车流,路灯,窗户效果
-
数据可视化大屏嵌入
-
自定义POI镜头事件
-
程序化道路系统
-
程序化交通系統
-
动态模型扫描系统
-
模型切割透视效果
-
自定义景深选择带描边
-
*详情参见:UE4数字孪生开发路线图
其它功能点:
-
全局参数设置(eg:分辨率,阴影距离,音效质量等)
-
Config配置产品运行参数
-
WebUI(UE4数字孪生 WebUI前端控制功能浅析)
-
产品启动真实读取&加载
-
分布式控制:远程内网ipad控制交互(TCP&UDPsocket)
-
APK加密&解密
-
生成安装包
进阶开发:
-
GIS数据的应用
-
Plugin插件集成和应用
-
像素流多端应用-虚幻引擎像素流白皮书:比较 HTML5、WebGL 和像素流送
-
API接口设计(SDK工具集)可参考51API:http://superapi.51aes.com/guide
-
VR&AR应用
-
视频流的接入(RTSP/RTMP/HTTP)
-
数据库接入(Mysql、Oracle、Redis...)
-
RPC广域网多人联机
-
音视频接入(可参考腾讯游戏语音 GVoice)
-
独立GUI模块(基于Slate重新定义UMG)
-
实时OSGB加载(支持以T为单位的倾斜摄影数据实时加载)
| 物联网大数据同步
-
获取数据:数据包括但不限于:点、线、面(格式通常为Json/GeoJson以及CSV、Shp等)同时可以支持MySQL, SQL Server,Oracle, Hive, PostgreSQL, 等数据库。
-
读取数据:可以通过LowEntryHttpRequest、LowEntryJson插件读取中台数据。
-
处理数据:通常数据都是按照经纬坐标集成的,这里我们需要将经纬坐标转为引擎坐标,推荐插件(SimulationPlugin),4.27已内置。然后进一步解析其它需要的参数即可。
-
应用数据:将数据转化为可视的效果,例如:当地停车场位置以及内部信息。
*常见数据驱动效果有:热力图、OD线(UE4数字孪生 OD线)、标签POI、路网。
| 全局/程序&美术/优化
这是非常关键的一个环节,根据经验来讲,产品开发过程中50%的工作可能都要放在后期的优化上。
特别推荐:NAVIDA DLSS目前支持4.25版本以上,可大幅度提升性能,并且提高分辨率,和光线追踪同时使用效果更佳。(UE5相应推出时序超级分辨率用于对标英伟达的DLSS)
程序优化
优化前的注意事项:
-
记得在独立模式下运行(standalone Mode)
-
记得最小化编辑器
-
切记关闭帧率平滑turn off Frame rates smoothing
-
用控制台命令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
*在只有需要访问数据的时候才调用这个函数。然后把数据全部存到数组中。
美术优化
影响美术渲染性能的主要因素:
-
大量使用半透明材质:当半透明材质占据屏幕比例越大,且半透明材质越多的时候,性能影响越大
-
网格体拥有的材质数量越多,则需要调用的渲染指令越多,不同的材质需要调用其他着色器模型。比如绘制8600万三角形的个只有一个材质的平面是15fps,而绘制10万个有50个由以上材质组成的平面绘制是5fps
-
UE4场景是逐对象绘制的(也就是通常意义上的DrawCall),与前一个绘制对象相同材质的对象一般会优先绘制,绘制对象越多,调用绘制指令越多,则渲染需要的时间越长
-
开启相同质量的动态阴影情况下,组成模型网格体三角面越多,绘制开销越大
网格体优化技巧:
-
Mesh的三角面数量低,并且使用频繁,可合并;
-
远距离的模型,一般可以合并;
-
保证合并的Mesh在同一个区域;
-
保证合并的是共享相同材质的Mesh;
-
保证合并的Mesh是缺少碰撞或简单碰撞的;
-
保证合并的Mesh非常小或只接受动态光照
-
LOD细节层次:
*LOD:(Level of Details),简称为多细节层次。LOD技术根据模型的节点在显示环境中所处的位置(Screen Size)和重要度,来决定物体渲染的资源分配,降低非重要物体的面数和细节数,从而获得高效率的渲染计算。一般后一个层级的模型面数只有前一个50%;
*HLOD:主要在渲染材质上做了优化,近距离下,原模型可能使用了20个Material,但是远距离下,会统一的使用一个材质示例进行显示。
| 多媒体视频播放
-
在项目>Movies>StartupMovies直接添加视频(会自动在Content文件夹内生成Movie文件夹,这样打包后的安装包就可以包含我们的视频了)
-
创建以下4种类型的文件,并将MP4指定到MediaPlayer,然后将MediaPlayer指定MediaTexture,最后将MediaTexture拖入材质即可。
-
添加带有透明通道的视频需要修改材质的混合模式,参考如下:
-
应用
| 角色动画&场景定序器
角色动画可以直接参考奶帆大佬的专栏里有关《UE4动画系统那些事》的文章即可:
https://zhuanlan.zhihu.com/p/62401630
| 资产打包&DLC更新
资产打包&DLC可以直接参考循迹研究室里查l利鹏有关《UE4动热更新》的文章即可:
https://imzlp.com/posts/5867/
| 前后端开发&服务器运维
Vue
React
Angular
| 数字孪生的项目分类
智慧城市、智慧楼宇、智慧校园、智慧工厂、智慧医院、智慧展馆、智慧旅游、智慧乡村、智慧水利、智慧能源、智慧交通、智慧商场、智慧机场、智慧小区、智慧酒店、智慧BIM、智慧港口。
| UE5带来的技术革命:
Lumen 在实时全局光照领域,将成为挑战光线追踪技术的硬核法宝,并且,其仅通过软件(不借助硬件)计算。*目前UE5早期体验版:在折射、反射、透明物等方面和光追还有一定的差距。并且会出现严重的漏光现象,比如墙体过薄。
Nanite 彻底解决了模型的面数限制,在某种程度上达到了‘’无限面‘’,其动态Lod效果相对传统的手工Lod,效果显得非常细腻自然。*不过对于已经属于无法优化的物体(比如一个引擎底层的12面cube)表面会存在不显示材质的Bug。
Mass AI 人群和交通系统,就是UE5实现的ECS框架。
WorldPartition 自动化的大世界流送系统。是一种全新的数据管理和流送系统。使用世界分区功能后,世界场景会以单个持久关卡的形式存在,并且场景会被划分成数个网格,数据会根据你的需求进行局部加载,因此你再也不用将世界划分成无数的子关卡来管理流送。
Temporal Super Resolutio 更高分辨率显示。
MetaSounds 程序化音频系统。
MetaHuman 下一代数字人。
虚拟阴影贴图 得益于Nanite、Lumen和世界分区系统,虚拟阴影贴图能够提供稳定且高品质的次世代阴影效果,可用于为电影级品质的资产和大型开放世界生成阴影。
Mega Assemblies 全新资产类型。
Game Feature Plugins 游戏功能插件(用更模块化的方式构建和发布游戏内容。
Animation Motion Warping 动画运动扭曲(允许操作角色的根移动动画)。
Control Rig 控制骨骼绑定。
10.Control R10.Control Rig控制绑定;ig控制绑定;
| 元宇宙
最后呢,还是不得不提一下元宇宙
元宇宙:在你眼中是游戏,科学家眼里是人和 AI 的「无限战场」
当一个新的时代蓄势待发,如果不懂它,就不能帮助创造它
最为我们熟悉的,大约是电影《头号玩家》海报精选合集里的场景:
事实上,在工业界也有一个相似的概念,叫“数字孪生”(Digital Twins),指人们用软件来模仿和增强人类世界的行为
美国的互联网科技大拿最早对元宇宙进行了布局。014年,Facebook(FB.O)就用20亿美金收购了虚拟现实技术公司Oculus。Facebook 的CEO马克扎克伯格提出,在未来五年内要将Facebook从社交媒体公司转型为一家元宇宙公司。
硬件厂商Nvidia (NVDA.O) 推出了号称工程师的元宇宙虚拟协作平台Omniverse。Nvidia CEO黄仁勋预测说:“元宇宙的经济规模会比实体世界更大。”,8月24日,英伟达公司的市值超越了腾讯,达到5500亿美金。因为它的芯片业务,实实在在地受益了元宇宙的潮流。游戏是元宇宙的第一个应用场景,数据中心受益于元宇宙应用爆发带来的算力需求爆发,专业可视化受益于元宇宙与现实世界的交互模拟,这三块业务占据了英伟达95%的收入体量——元宇宙巨头,非它莫属。
借助于元宇宙,世界各个玩家将角逐到未来增长的蛋糕,而游戏可谓是一个绝佳杠杆与推手。
回顾人类的发展,推动世界向前发展的,往往是科幻及人们的好奇心!
2020年,腾讯(00700.HK)马化腾提出“全真互联网”的概念,即一个能够“由实入虚,帮助用户实现更真实的体验”的概念网络,这一概念与“元宇宙”概念十分类似。
为此,腾讯投资引擎技术供应商Epic game,后者通过UE4引擎提供虚拟建模服务,同时次世代引擎虚幻5也已发布概念宣传,预期能达到更加真实的虚拟效果。2021年4月份,Epic Games在元宇宙概念的加持下共获得10亿美元投资。
| Q&A板块(欢迎小伙伴们提问):
1.ACG规则生成建筑?是个什么东东?
详情请参考:cityengine官网,ACG可以理解为一个全自动的场景生成算法,通过数据直接还原真实世界。单说就是一个脚本,告诉shp该如何生成建筑体块。
2.怎么样让UE4和网页交互?
可以使用WebUI插件,通过数据接口调用前端H5的交互界面,中间的通信数据结构推荐Geojson,实现前后端的数据和交互通信。
| 参考
-
^UE4官方文档
-
^UE5官方文档