地形系统主要由地形actor和地形模式组成,添加了地形actor之后就可以用各种工具调整地形的形态。也可以从外部导入高度图来定义地形。
得到地形高度图后我们就可以为地形创建材质,在材质编辑器中通过地形层混合节点添加地形层信息,并将材质指定给地形actor后,就可以在地形模式下为地形actor创建层信息,一共有两种模式。
权重混合层:这种方式可以在绘制某一权重的同时,影响其它权重混合层的权重,因此随时可以用任意层覆盖其它层。
非权重混合层:这种层一旦绘制后不会影响其它层的权重,可以确保该层的权重对整体地形材质效果的影响是固定的。
此外在地形actor中启用编辑图层属性,我们还可以非破坏性的对地形进行编辑。例如我们可以新建多个编辑图层,分别进行雕刻和材质绘制后,可以随时对任意编辑图层显示或隐藏,或者调整各图层的alpha值来控制混合,这样可以为我们的地形设计带来更高的灵活度。
植被模式可以通过笔刷快速生成大量植被。
UE还有程序化植被体积,可以方便我们在场景中创建一个体积设置好植物种类和分布规则。一键生成大量的植物对象。
新建地形草资产,并指定草的静态网格体,在地形材质中添加一个地形草输出节点。指定所属地形层,和引用的草类型资产即可。
材质编译后就可以看到在场景对象的特定地形层自动铺满了地形草中指定的静态网格体。
为了在场景地表上添加更为贴合表面的细节。我们还需要用到延迟贴花功能。
具体操作:
创建一个材质,设置好材质效果后,将材质域设置好延迟贴花,然后在场景中新建延迟贴花actor,指定这个材质就可以使用了。
延迟贴花的优势在于可以在关卡里,灵活的创建横跨地形或者多个场景物体的贴合表面的叠加材质细节。
使用时也要注意延迟贴花带来的实时性能消耗。因此同屏贴花数量不应该过多,面积也不应该过大。
针对面积庞大同时又需要横跨地形的场景物体表面细节效果,我们还可以用UE的运行时虚拟纹理(RVT)。
我们只要在项目设置里启动虚拟纹理,创建RVT资产,然后再创建两个材质分别用来采样和输出RVT。
比如我们可以在地形材质中添加一个RVT输出节点,把当前地形材质的最终输出效果输出到RVT中。
然后创建另外一个材质,添加RVT采样节点,用来定义RVT最终如何使用。
然后就可以在场景中添加RVT体积,指定这个RVT资产。再设置边界为地形,并且设置地形actor在虚拟纹理中绘制属性为当前的RVT资产。
通过这种方式就可以让场景中的物体和当前地形材质最终效果进行实时混合。
相对于延迟贴花,更适合对大范围地表材质进行实时混合。
注意:
RVT的绘制方式本身是投射,而投射方向是由RVT体积决定的。因此RVT通常用来投射到大面积的平面上。如果是投射方向各不相同的局部细节需求,还是更适合用延迟贴花来实现。
启动虚拟高度场网格插件后,就可以通过一张高度RVT为地形增加实时动态的高度细节,实现类似致幻的效果。
我们可以通过虚拟高度场模型蓝图的属性来控制细分层级切换距离等,可以在影视动画中带来一种快速得到地表高度细节的方法。
可以在场景中针对单个静态网格体对象进行顶点色绘制,主要用于手动为场景中的特定物体添加场景相关的材质混合效果。
绘制后的顶点色信息默认保存在关卡中,因为针对的是静态网格体实例。如果想应用到网格体资产,只需要点击应用按钮,这样它在场景中的实例都会有统一的顶点色效果。
此外为了让网格体呈现出绘制后的混合效果,我们需要在其材质中添加顶点色节点,来读取网格体对象的顶点色信息并用来混合不同的材质分支。
地形效果方案选择参考
BSP几何体可以在场景中快速的搭建模型原型,我们可以在笔刷编辑模式中,对BSP几何体进行基本的形态编辑,确定形态后可以转换成静态网格体资产。
建模模式提供了完整,强大的模型编辑功能。
场景中会经常出现类似藤蔓,栅栏,道路等曲线形态的模型。
这时我们就可以在蓝图中使用UE的样条线组件,结合静态网格体组件或者样条线网格体模型组件制作一个可以在场景中灵活编辑的样条线模型蓝图。其中,样条线网格体可以跟随样条线进行弯曲变形,因此指定的静态网格体资产要有足够的细分。然后我们就可以很方便的对场景中对样条线节点进行添加,移除修改曲线等。同样经过简单的蓝图编写。我们可以对样条线上不同的分段设置不同的静态网格体资产。
选取一些网格体进行模拟,得到合理的形态后点击鼠标右键,选择保留模拟变更,或者选中后按K就可以保存当前模拟状态。
然后我们选择这些actor 选择编辑器菜单中的actor>合并acotr,将它们合并为一个蓝图资产或者整体静态网格体。
此外我们还可以用Chaos,来模拟物理的破碎,来获得这类网格体资产。
LOD(细节分级)是优化手段,提高系统流畅度。
UE5新的功能与Lumen结合度高
默认的雾效是基于整个屏幕进行模拟的,如果想体现出雾的体积感,只需要勾选高度雾的体积雾选项,就可以得到基于物理的能够较为准确的反应区域变化的体积雾效。
云层的细节形态靠云的体积材质来调整。
例如:启动Volmetrics插件后,我们可以在内容浏览器中显示引擎内容和插件内容。
找到Plugins>Volumetrics内容>Content>Sky>Materials下可以替换多种云材质。
除了材质控制云的形态外,我们还可以使用Plugins>Volumetrics内容>Tools>CloudCompositing>Blueprints的BP_CloudMask_Object和BP_CloudMaskGenerator这两个蓝图,通过把它们拖到场景中并且添加一个体积云actor指定支持Mask方式的云材质(例如M_VolumetricCloud_02_Profiles_PaintClouds_Small材质),把BP_CloudMask_Object对象放置到较远的位置,然后调整一下尺寸,我们就可以通过它来控制一片区域云层的位置。非常便于在特定的镜头里控制局部的体积云效果。
此外我们还可以找到Plugins>Volumetrics内容>Tools>CloudCompositing>Blueprints下的BP_PaintClouds蓝图放置到场景中,给体积云actor设置一个支持云层绘制的材质(例如M_VolumetricCloud_02_Profiles_PaintClouds_Morning)。
再设置一下世界场景设置下游戏模式的游戏模式重载为VolumetricPaintingGameMode,点击运行游戏后我么就可以用笔刷在天空中绘制云了。
无论是之前的放置局部蓝图还是用笔刷本质上我们都是在绘制一张渲染纹理,然后用这张纹理作为遮罩去影响云层的渲染。
然后将Sunsky这个蓝图actor放置到空场景中,蓝图中已有各调控组件。然后添加一个全局后处理体积调整好曝光参数。然后就可以输入时间(月,日等)和地理信息(经纬度)自动计算出当前主方向光的方向。
天气现象(风,雨,雪,雷电)
水系统
可以在关卡管理器中在当前关卡之下添加对其它关卡的引用,形成多个子关卡。可以方便我们将整个复杂关卡按场景类型拆分。这样方便分工协作。
可以通过关卡流送的方式在渲染输出时,通过蓝图或者关卡流送体积动态加载或者卸载关卡。以此节省内存占用。
注意事项
主关卡对同一个子关卡同时只能有一次引用,而且只能引用子关卡中直接引用的场景对象,不能嵌套引用子关卡中本身引用的子关卡中的场景对象。
UE4中可以通关蓝图加载和卸载关卡实例,到当前关卡。
UE5中我么还可以通过场景实例Actor非常直观的引用其它关卡的内容到当前关卡。
与子关卡不同,引用同一个关卡的关卡实例actor对象可以同时存在多个,还可以多层嵌套引用。
此外关卡实例actor还支持在场景中修改并提交内容。
UE4世界构成的替代。
世界分区启用后只要在主关卡中编辑整个开放世界场景需要的所有地形和场景物体对象。世界分区系统会自动将它们分到不同的区块。点击运行后世界分区就会根据当前相机位置动态加载可视范围内的分区,卸载远离的分区。这些分区内的actor对象会被自动管理。不再需要我们手当放置在不同的子关卡中。这样在编辑和输出时都能得到较为彻底的性能优化。普通关卡可以转换为世界关卡。
在世界分区关卡中我们还可以使用Datalayer数据层来管理关卡中的场景对象,操作逻辑和场景图层相似。新建数据层,再创建一个数据层资产后,选中场景中的特定对对象后,右键添加到数据层即可。
不同于图层数据层对场景对象的管理并不是隐藏或显示,而是加载或卸载,这对于管理大规模复杂场景提供了更好的内存优化。
除了通过蓝图中的子系统来动态管理数据层之外。我们现在还可以在Sequencer中添加数据层轨道,通过非常直观的方式来管理场景对象的加载或卸载。
指的是场景中的对象属性不在保存在关卡中,而是针对每个对象创建一个外部文件来记录这些对象在场景中的数据。如果使用了世界分区OFPA系统会自动启用,这可以大大提升团队协作效率。
启用多用户编辑插件后,就可以选择一台设备作为主机,建立链接,其它电脑搜索大链接即可加入,实现多人同时在主机上实现场景编辑的目的。编辑后的结果只会保存在主机上,需要通过版本管理软件再把成果同步给其他电脑。
整体思路在于在场景不同角度设置相机,然后通过定制的Sequencer在相机之间跳跃,并使用UE自带的各类优化工具,采集性能数据时刻关注场景性能状态,法线特定角度的性能问题,并有针对性的进行调整。
《中世纪环境》官方案例设计和制作过程简介
整个过程分为三个阶段
具体操作按学习视频
地址