maltadirk 发表于 2022-10-5 08:47

Unreal丨大型世界场景的优化

大家好,我是很久不见,主要从事的方向是引擎美术。
在大型世界场景中,由于场景地图过于庞大,此时就需要使用到世界场景构成方面的功能。
世界场景构成(World Composition)属于关卡流送的一种,旨在简化大型世界场景的管理,通过关卡流送的方式读取地块信息,减轻运行压力,从而实现大型世界场景的运行。
先看一下演示的效果:



1激活与使用
在世界场景设置中开启“启用场景合成”。



这里如果关卡文件夹中有其他关卡,则会自动提示是否加入为子关卡的操作。



如果文件夹中只有一个关卡,则不会提示,可以自己新建地形关卡作为子关卡。



在此新建关卡后创建地形,创建默认的63*63四边形。





同时,在关卡选项中就多出一个世界场景构成的图标。





可以在此右键,添加相邻的地形关卡。



比如这里为了演示,只创建了一个流送距离为50000的3*3地形关卡。





拆分后的地形关卡是可以通过雕刻工具进行无缝雕刻的。



然后拖入一个自带的第三人称蓝图后运行一下,会发现角色在关卡的边界之间移动时,关卡在流送范围内进行了加载和卸载。











这就是最基础的世界场景构成的操作,当然可以调整每个地形的大小,流送距离等,从而控制整个场景的大小和地形的大小。
通过世界场景构成中的图层加号,可以新建其他流送距离的图层。



2大型世界场景地形的拆分
除了新建地形进行绘制之外,还可以对整个大地形进行拆分。
拿上上一期文章的大型世界地形为例UE4丨使用真实世界的地形,直接启用世界场景合成后,新建子关卡。



这里为了演示简单的拆分为4*4的地形,所以要新建16个关卡。



接下来是拆分环节,这里在激活当前关卡的情况下,使用地形的移动工具,笔刷尺寸选择4,选择需要移动的地块,就可以直接将拆分的地形移动到当前激活的子关卡中。





如此一来就完成了对整个大型地形的拆分。



加入第三人称蓝图运行一下的效果。









在运行时按当前的移动位置完成了地形关卡的流送。
3导入三方软件的平铺地块
因为市面上还有很多专门制作地形的三方软件,如World Creator、World Machine等,虚幻引擎提供了可以直接导入拆分地块的接口。
以World Creator为例,简单的做了一个地形,在导出时候将地形切割为256的小块导出。



这里因为地形创建的时候是2048的尺寸,所以在切割后会有64个地块文件。



在UE4中新建关卡后,开启“启用场景合成”,在关卡中选择导入平铺的地形。





点击“选择高度图瓦片”,找到刚才导出的地块文件,全选打开。



这里三方软件已经将每个地块文件分好了坐标排号,直接导入就好,注意这里如果是在导出的时候选择了翻转Y轴,在UE4导入的时候就需要取消翻转Y轴,否则在平铺地形的时候会出错。



此处没有在三方软件中制作地形材质的分块,如果对地形材质进行了分块拆分的话,此处可以选择每个地形区域的Weightmap Tiles。



以下就是导入地形后的效果。



可以选择所有的LandscapeStreamingProxy给统一的地形材质。





只是这样的话,没有精确的地形材质区域划分,如果对地形材质要求较高的,还是建议在三方软件中导出材质的Weightmap Tiles,以便可以对地形材质进行精准的划分。

4地块LOD设置
在关卡详细信息面板中,可以对子关卡地形进行单独的LOD设置。



每个子关卡都可以进行最多四层的LOD设置,这里可以对流送距离,流送精度进行设置,还可以对该LOD层级的地形材质精度、光照贴图等进行详细的优化。



5总结
UE5在世界场景构成这里做了新的优化,并命名为世界分区系统(World Partition)。该系统将你的场景保存在一个被划分成多个网格单元的单一持久关卡中,消除了之前版本中需要将大关卡划分成多个子关卡的需要。



在UE5正式版出现之前,此处不做过多的讲述。
总之,配合世界场景构成、LOD、HLOD、贴图MIP、关卡流送等方式,在处理大型地图资产时,可以做到最大程度的资源优化,可以说目前市面上的主流大型项目都是这样进行资产优化的。
下一期文章会接着介绍HLOD的使用(或者开新的篇章)
本次案例是我的个人练习,如有不足之处,希望大家可以一起交流学习,一起变得更强!

TheLudGamer 发表于 2022-10-5 08:57

奈斯(顺便求个草地材质)

APSchmidt 发表于 2022-10-5 09:03

ainatipen 发表于 2022-10-5 09:05

大佬如果做黑魂1那样的垂直地图,有天上山上地面地底的场景,可以让流送距离区别出不同高度加载吗[捂脸][捂脸][捂脸]
页: [1]
查看完整版本: Unreal丨大型世界场景的优化