使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

2023-10-08 11:39:55 来源:游戏主播网

使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

公众号搜索“光影年年”关注我们专注数字孪生技术的研究和分享

内容分为:简介实操优化结果展示

什么是“打包型关卡蓝图”

“打包型关卡蓝图”是UE5新功能 世界分区(World Partition) 的一部分

但 不依赖于项目是否启用了世界分区

官方文档有关世界分区中关卡实例化的内容:

优化的原理官方文档:这个功能的原理是将场景中的 静态网格体 资产合并以创建 进行了渲染优化的单一 蓝图Actor 。

将静态网格体替换为链接到打包型关卡Actor(Packed Level Actor) 的 打包型关卡蓝图(Packed Level Blueprint) 实例。

人话:将 “模型” 放入 “关卡资产” ;

“关卡资产” 放入 “Actor”-;

“Actor” 则直接放在 “真正的关卡” 中;

优化的核心:

“Actor” 自动将关卡内部模型收集,全部优化为 实例化静态网格体 InstancedStaticMesh

演示如何使用我准备了这个场景作为演示

1、TestMap为主关卡(蓝色标识)

2、关卡中摆放有很多的Mesh(红色标识)

1.创建打包关卡Actor

1. 选中要打包的全部模型(上图1)注意,包括场景中的 模型 ,Actor 内部的模型 ,甚至 构建函数中生成的模型

都可以参与优化,都可以选上

2. 右键模型创建打包关卡Actor(上图2)3. 打包设置(下图)

枢纽点类型,字面意思,就是指合并以后得Actor轴应该在哪

这里因为Mesh是场景模型,所以使用世界原点。例如你打包的是一辆车,你可以选择actor原点等,方便复制

4. 保存Map和Actor

确认后会分别创建一个 Map 和 Actor( BBP_ )

5. 到这一步,整个优化流程就已经结束了!创建完成就会是这样的状态,

1、Mesh在关卡MapA里

2、MapA在BPP_MapA里(蓝色标识)

3、Actor在主关卡TestMap里(红色标识)

结束后会是这样的状态,箭头是他们的关系

可以看到此时全部模型已被优化合并为4个实例网格体

要注意的是,只有 同模型+同材质+同属性(例如可移动属性) 才被引擎认为可以做为一个实例网格体

如何继续编辑是不是看到这里,害怕自己辛苦摆的模型,到这一步是不是被合并就不可逆了?

( 合并模型优化法 给人留下了心理阴影)

不要怕,我们继续讲解如何编辑

1.进入编辑选择MapA,并点击编辑

BBP_的actor将会在主关卡中展开!

可以看到红框处,所有信息都回来了!

你可以继续在这里尽情编辑场景,且由于此外的场景环境均为灰色,更加直观了

修改完成后就可以点击提交

提交后将会对模型重新优化

2.编辑完成后提交

提交时需要注意(写文时为UE5.1),你可能在编辑完成后找不到提交按钮

按如图步骤,双击1回到主关卡,这样2的Actor才会是外部显示,此时点击2,就可以在细节中看到3提交按钮

附一个DrawCall前后对比,不损失任何细节的情况下优化出200倍而已什么情况用这个爽:你有3个超级无敌好看的砖头,你使用这个砖头拼了一个长城!

你现在有几千万个Draw Call!

使用这个优化后,你仅有3个Draw Call*,整个长城仅仅是3个实例网格体

一些提示1、可逆可编辑可还原,因为优化过程中所有信息会被保存。例如按照往常合并的方式,模型坐标会因为不可逆的合并而消失。

2、如果你想还原,只需进入编辑,把里面的东西再复制出来就可以了。

3、Datasmith插件导入场景可以智能的把建模软件的同模型导入为一个资产,结合这种优化很强[ 官方Datasmith文档()]

4、此功能对多人协同项目十分友好,可以按个人负责区域划分多个关卡Actor,只需迁出自己场景的Actor,而不用迁出整个关卡

5、关卡Actor是可以移动和复制的。例如你拼好一栋楼并打包,你可以复制为多栋楼。

6、编辑关卡Actor,也理所当然的会同步到所有复制的关卡Actor

7、如果使用流关卡或世界分区等,应按照流送区域合并Actor

8、求求你们看官方文档吧()

9、当前版本(UE5.1)样条网格在合并后只会是默认样条线形态(一小节)

原文链接:https://blog.csdn.net/Utwelve/article/details/130362193


相关阅读

大家都在看