可可西

UE4 World Composition机制

世界场景构成World Composition) 属于关卡流送的一种,旨在简化大型世界场景的子关卡管理,通过关卡流送的方式读取地块信息,减轻运行压力,从而实现大型世界场景的运行。

与传统关卡管理方式的区别:无需手动将关卡添加到场景中,只需将关卡放置到主地图所在的目录下(可建子目录)。

 

 

主关卡(Persistent Level)不存储任何流送信息,通过扫描目录来找到的所有关卡视为流送关卡(Streaming Level)。

每个流送关卡的信息存储在包头中, 使得不用把整个关卡加载到内存中,就能读取这些信息。

 

使用World Composition管理关卡

开启World Composition

 

点击Summons World Composition按钮,弹出World Composition面板

注:小地图上的黄色矩形表示安全编辑区域(即虚幻支持的最大编辑范围)。该区域外的关卡会自动隐藏

坐标轴 正方向 Min值 Max值
X -1000000(-1百万uu,即:-10km) 1000000(1百万uu,即:10km)
Y -1000000(-1百万uu,即:-10km) 1000000(1百万uu,即:10km)

 

创建新子关卡,并放置到SubLevels目录中

 

在创建的子关卡上右键,在弹出菜单执行Load来加载该关卡

注:打开World Composition的地图,默认所有子关卡都是不加载的

 

将子关卡设为当前关卡,并创建地形

 

World Composition面板上就可以看到该地形的缩略图(以顶视图的方式)

注1:主关卡(Persistent Level)中地形Actor对象不会显示在World Composition面板上

注2:当前关卡也会显示在World Composition面板的右上角处

注3:子关卡是否加载,是否隐藏,都会在World Composition面板上显示出来

 

World Composition面板

面板相关操作说明:

操作

说明

左键单击

拖曳鼠标左键拉框

选择地块
拖曳鼠标右键 Pan
鼠标滚轮 放大缩小

 

 

在World Composition面板中移动地块

选择地块后,就可以拖动鼠标左键来移动地块的位置了

注1:按住Ctrl键来移动关卡,会使用关卡编辑器的对齐设置。

注2:为了精确匹配相邻关卡的无缝拼贴,必须将关卡的边界值设置为整数。

注3:默认情况下,ALevelBounds(关卡边界Actor)会自动调整大小,以包含存在于关卡中的所有Actor。

         但是,某些 Actor(如天空盒)的边界框可能会非常大,这会导致世界场景小地图中的关卡拼贴变得非常大。

         如果有此类Actor且不希望包含在关卡边界计算中,可以禁用自动关卡边界计算,为ALevelBounds(关卡边界Actor)设置固定的大小。

         

 

在World Composition面板中创建地块

 

 

 

注:可将子关卡上设为当前关卡,来让其地形数据在World Composition面板上刷新

 

运行时的World Composition

 

使用图层(Layer)来管理关卡的流送距离

图层有流送距离相关信息,把关卡移动到指定图层,意味该关卡的加载距离设置为该图层的流送距离。注:当前视点与关卡LevelBounds最近边界的距离小于该流送距离,就会加载该关卡

每个关卡只能放置在一个图层中。默认情况下,所有关卡被分配给 未分类(Uncategorized) 图层,其加载距离为50000uu(即:500米)。

图层无法删除或编辑,因此如果想更改流送距离设置,可创建具有所需设置的新图层并为其分配对应的关卡。 下次打开关卡时,会自动删除未分配关卡的图层。

注:切到Top视图,拖动中键来测量地块的大小

 

创建自定义图层(Layer)

点+按钮,来创建名为MyLayer的自定义图层,并将其流送距离设为25000uu

 

查看关卡WorldLevel1所在的图层和流送距离

注:如果Extent:24000,30000,则表示该关卡的LevelBounds的x方向的半长为24000,y方向的半长为30000

 

将关卡WorldLevel1移动的MyLayer图层

 

关卡WorldLevel1移到MyLayer图层后

 

选中图层来显示隐藏关卡

选中MyLayer图层,在World Composition面板中仅显示放入该图层的关卡       注:按住Ctrl点击,可选中多个图层

 

运行时关卡Streaming过程

当关卡(ALevelBounds)与摄像机距离超过其流送距离时,会自动卸载关卡

 

 当关卡(ALevelBounds)与摄像机距离小于等于其流送距离时,会自动加载关卡

 

参考

Unreal丨大型世界场景的优化

Getting Started with World Composition | Live Training | Unreal Engine

 

posted on 2023-12-13 23:36  可可西  阅读(706)  评论(0编辑  收藏  举报

导航