找回密码
 立即注册
查看: 464|回复: 0

UE5 新特性——大型场景构建方法

[复制链接]
发表于 2022-5-11 10:34 | 显示全部楼层 |阅读模式
背景

根据黑客帝国觉醒宣传片,分析UE5技术内容








使用的特性概览

世界分区:自动化开放世界流送
Nanite:虚拟化微多边形几何体
Lumen:动态全局光照和反射
Chaos:物理与破坏系统
Houdini整合:程序化生成开放世界
规则处理器:自动化放置对象
Mass框架:人群与交通系统
Niagara:粒子系统
MetaHuman:次世代数字人类
MetaSounds:程序化音频生成
时态超分辨率(TSR):更高的显示分辨率
目标


  • 虚幻可以适用于开放世界,可以使用大型场景,有足够的工具管理大量数据,使用Nanite和Lumen构造城市
  • Mass AI构造车流和人流,MetaSounds音频配合场景,MetaHuman,Chaos,GamePlay
  • 易用性,小团队也可以构造大规模场景
  • 在消费级的硬件上可以运行
  • 所有新功能都经过全面的验证
理念

黑客帝国场景与开放世界理念非常容易结合,一种虚拟的世界。
简介

模型部分:数千个模块化组件,每个组件都是50k-500k面片数,所有内容都是Nanite资产,除非需要碰撞和透明着色器。
纹理部分:采用4K纹理,所有都是虚拟纹理


资产和内容管线

场景模型参考

从美国的各大城市建筑中吸取灵感。


资产创建管线

建筑内容库->Houdini城市生成器->虚幻引擎城市生成器




模型构建

有了Nanite特性的支持,整个建筑就可以使用更加复杂的细节,而且不需要额外的贴图


虽然有Nanite技术的支持,但是仍然不能将建筑当成单一的网格内容,因为会限制大场景中建筑的多样性。


根据建筑的特性可以看出,整个建筑中有非常多可以重复的部分,非常方便使用实例化去解决,更多的想去复用。


设计出对模型分割的方法,就像搭积木的方式。建筑上有许多非常复杂的特征,处理起来要复杂很多。现实生活中,房间大小基本上相同,但是放到3D图形学中,大小将会不一样,尽量对相同的内容保持一定的划分。每一个间距都有大量的模块包,这些模块包组成了建筑内容。


具体包括门、窗口、墙、拐角等,并且通过特定的语法完成组装。


除此之外还创建了街景等各种物体


OpenWorld

管理复杂和强大世界的开放工具,开放世界工具包主要有两大功能:
世界分区(World Partition):是一套网格系统,在编辑器运行时,根据位置动态加载和卸载Actor,不必使用子关卡和复杂的逻辑,来控制场景中激活的区域。
One File Per Actor(OFPA):可以让Actor和关卡解耦,让多人能同时编译几个关卡。
总的来说世界分区功能可以保证团队在一定时间只关注于一小部分的开发,不会引起团队之间的数据干扰。同时还可以很方便的将非世界分区进行打包,打包到蓝图中。


在一个4km×4km的开放世界中,包括一个主网格和两个HLOD网格,具体如下,三个颜色分别表示不同的网格,每个网格内进行不同内容的处理。同时对建筑的碰撞也进行了处理,禁用了建筑模块的碰撞,使用了一个独立的碰撞对象。


为了改善光线追踪的性能,还建立了光线追踪的分组,优化了Lumen的表面缓存内容,让建筑的所有部分能同时调用。同时如果网格替覆盖在一起并且有很多内部遮挡和交错关系,就会拖慢整个硬件的光追,移出了一些不规范的物体,可以在比较远距离实现全局光照。


城市环境着色

建筑不仅可以支持Nanite,复杂模型细节,高度逼真的着色细节,呈现多种视觉风格
校准光照

为了生产出正确的着色效果,团队对光照的颜色进行了复杂的校准处理。


外观处理

主要包括三个处理步骤


步骤1:对材质调整基本的着色和材质参数,将整体颜色调整为参考的内容。


步骤2:添加复杂的纹理材质
为了整个墙壁带有各种复杂的效果特效,将四种纹理进行合并。




步骤3:环境材质
不同的环境材质对结果都会产生影响,包括裂隙遮挡、边缘磨损、水滴、和泛遮蔽。


材质实例

带有一个全局的材质,给全局材质设置参数可以影响到整个项目。(个人想法:其实和继承类似,只不过是材质的继承)


窗口内部

在之前的解决方案中,通常采用内部映射技术(Interior mapped ),使用2D纹理创建出一种虚拟的房间技术。左侧是游戏机械重裝 (Robo Recall)中的技术,由Epic针对Oculus Rift和Oculus Quest开发的虚拟现实游戏。
右侧是黑客帝国重启中的虚拟房间,模拟了大量的3D家具和多样性的房间。其采用一种称为3D打印的方式。


下面是实现思路:
左侧是虚拟的房间,右侧是真实的几何体房间。


将带有物体的贴图搞过来,并且加上凹凸贴图,虽然能够看出来是有漂浮在空中,可以还是能看出来有点假。


https://www.zhihu.com/video/1503025038949777408
加上视差贴图,带有深度后,发现有很严重的拖影。


https://www.zhihu.com/video/1503025185343639552
最终采用一种3D打印的方案,来改善原来的内部映射技术(Interior mapped )。


https://www.zhihu.com/video/1503025286463102976
方法采用切片的方式,和双向的Depth Peeling非常的类似。进行双向的切片处理,为每一次切片都进行凹凸偏移处理


https://www.zhihu.com/video/1503026204390735872
需要以下几种信息,前后背景信息,还有前后深度信息,合并到一起。


最后完成的结果:


https://www.zhihu.com/video/1503026398881558528
对于非正方形的房间,采用重映射顶点的方式进行处理,将房间压缩成1×1的大小


窗户材质

可以控制房间的类型、光照、时间、温度、百叶窗、玻璃属性等。
为了解析房间的布局,将房间数据编写为Houdini和UE插件,将数据打包为32位无符号整数,材质信息上带有标记,什么房间需要渲染窗户。


道路

直接采用纹理重复,看起来会非常规律,非常不真实。


UE5提供纹理材质爆炸函数,能够让UV乱序,看起来道路效果更好。


上方是改变前结果,下方是改变后的结果




再加上各种内容,最终形成的效果。


道路上的积水较难处理,需要大量不同的输入配合得到。


屋顶

对屋顶的模型采用了特殊的纹理处理方式,为了确保屋顶网格和线条细节,采用一种与世界对齐的投射纹理,旋转屋顶时,会继续锁定在屋顶的表面。




Lumen场景

左侧是带有Lumen的场景,右侧没有Lumen影响


同时还有其他间接光照的情况场景


同时Lumen是能够实时更新。


https://www.zhihu.com/video/1503027859719045120
Lumen提供真实夜景对比


同时提供较真实的反射效果


参考资料


  • 最强游戏画面?做3A有手就行?黑客帝国 虚幻5技术解析_哔哩哔哩bilibili
  • https://www.youtube.com/watch?v=ib6_c6uliLg&ab_channel=DigitalFoundry
  • 剖析虚幻渲染体系(06)- UE5特辑Part 1(特性和Nanite) - 0向往0 - 博客园
  • 剖析虚幻渲染体系(06)- UE5特辑Part 2(Lumen和其它) - 0向往0 - 博客园
  • [技术演讲]黑客帝国觉醒:创造世界(官方字幕)_哔哩哔哩_bilibili
  • [技术演讲]黑客帝国觉醒:生成世界(官方字幕)_哔哩哔哩_bilibili
  • 《黑客帝国觉醒:虚幻引擎5体验》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-27 09:41 , Processed in 0.127254 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表