UE5 Landscape地形创建、基础知识与注意事项!
地形(Landscape) 系统使你能够为你的世界场景创建地形 - 山脉、山谷、起伏或倾斜的地面,甚至洞穴的开口 - 并通过使用一系列工具轻松修改其形状和外观地形工具模式
地形工具有三种模式,可以通过地形工具窗口顶部的图标访问管理模式(Manage mode)
使你能够创建新的地形,并修改地形组件。你也可在管理模式中使用地形小工具复制、粘贴、导入、导出部分地形。有关管理模式的更多信息,请参阅地形管理模式
雕刻模式(Sculpt mode)
让你可以通过选择和使用特定的工具,修改地形的形状。有关雕刻模式的更多信息,请参阅雕刻模式
绘制模式(Paint mode)
使你可以基于在地形材质中定义的图层,通过在地形上绘画纹理以修改部分地形的外观。有关绘制模式的更多信息,请参阅地形绘制模式。
今天我们主要看看地形的创建以及一些参数设置
首先我们创建一个地形对比以上参数在地形上所代表位置
numbers of Components里设置,如:5x5 (地形分成25个部分)sections per Component里设置如:2x2 (每个部分横竖均分为4个区域)section size里使用如:63x63quads (每个区域包括横竖各63个正方形)也是官方推荐参数
numbers of Components的大小与Cpu压力正相关section size与Gpu压力正相关,所以需要综合考量整个游戏的主要压力在cpu 还是 gpu来设置地形参数。除此之外numbers of Components的大小还关系到不同视距下地形渲染的LOD,远处的地形会选择更少的三角数渲染。当它设置为1x1时,LOD就会关闭
<09> 分段大小(Section Size)
地形会根据分段大小来设置LOD和剔除分段越小,LOD优化就越多,但相应的CPU开销更高分段越大,意味着更少的组件和更低的CPU开销使用较大的分段大小(相应的绘制顶点数也会变得更多)可减少CPU计算时间,但是因地形同时渲染数量过多的顶点时可能出现问题,这个问题在使用超大的地形区域时更为普遍,如果在移动设备上,这个问题的严重性会更加明显,因为移动端绘制调用的数量将受到硬件限制如果想要创建大型地形,则需要使用较大的section size,因为用较小的分段,然后缩放地形会加大CPU的开销【这是一个平衡性能问题】
我们通过官方建议的地形大小可以看到,在选择section size(四边形分段大小)须注意:在选择分段大小(Section Size) 时应该谨慎,因为随着组件数量的增加,构建时间和性能可能会受到严重影响。通常建议每个分段为 63x63 个四边形,因为这样可以提供良好的性能和大小
每个分段的大小(用顶点数表示)必须是值的二次方(最大为256x256),因此不同的LOD级别可以存储在纹理的mipmap中。这将导致每个方向上(x或y)地形组件中的四边形数是值的二次方减去1(如果每个地形组件1个分段),或者是值的二次方减去2(如果每个地形组件4个分段)
各个组件的高度数据存储在单个纹理中。因此,它的大小必须是顶点数的2次幂。沿着两个相邻组件边缘的共享顶点行被复制并存储在每个组件中。因此,考虑每个组件中的四边形数量是有意义的
# 官方建议的地形大小以下是建议的地形大小,不但可以将区域面积最大化,还可以将地形组件数降到最低地形尺寸
总体大小(顶点数)
四边形数/分段
分段数/组件
地形组件/尺寸
地形组件/总数
8129 x 8129
127
4 (2x2)254x2541024 (32x32)4033 x 403363
4 (2x2)126x1261024 (32x32)2017 x 2017634 (2x2)126x126256 (16x16)1009 x 1009634 (2x2)126x12664 (8x8)1009 x 100963163x63256 (16x16)505 x 505634 (2x2)126x12616 (4x4)505 x 50563163x6364 (8x8)253 x 253634 (2x2)126x1264 (2x2)253 x 25363
163x6316 (4x4)127 x 127634 (2x2)126x1261
127 x 12763163x634 (2x2)
<10> Sections Per Component:每个组件分段数
可以选择将组件划分成1个或4(2x2)个分段,以提高地形的分辨率。这些分段是地形LOD计算的基本单位。2 x 2个分段,这意味着一个组件一次可以渲染四个不同的LOD
如果使用相同大小的高度图,那么使用4(2x2)个分段时所产生的地形组件数是每个组件一个分段时的四倍,但使用更少的地形组件数可以获得更好的性能
下面是一个非常简单的地形(其轮廓为绿色),包含四个组件。每个组件由一个四边形组成。一个组件已经被分离,以显示组件相交处的顶点是如何重复的
下面的图示显示了单个地形组件(以绿色显示轮廓),包含四个地形组件。每个分段由9(3x3)个四边形组成。在这里仍然可以看到相邻分段的顶点重叠在一起
包含四个分段的地形组件
<11> Number of Components: 组件数设置地形大小和分段大小。其最大值被限制为32 x 32,因为每个组件都有与其关联的CPU开销。超过此限制将导致地形出现性能问题。
# Landscape内存使用对于创建大型地形,Landscape通常是比静态网格体(Static Mesh)更好的选择
对于顶点数据,Landscape为每个顶点使用4个字节。静态网格体(Static Mesh)以12字节矢量的形式存储位置,每个切线X和Z矢量封装为4个字节,并为每个顶点的共24或28个字节存储16位或32位浮点UV
这意味着,对于相同的顶点密度,静态网格体(Static Mesh)将使用6或7倍于Landscape的内存。Landscape还将它们的数据存储为纹理,并且可以为遥远的区域流送未使用的LOD关卡,并在你接近它们时从后台的磁盘加载它们。Landscape使用一个常规的高度场,因此其碰撞数据也能够比静态网格体(Static Mesh)的碰撞数据更高效地存储
# 静态渲染数据作为纹理存储在GPU内存中在大多数平台上,Landscape系统在GPU内存中以纹理的形式存储地形的渲染数据,允许在顶点着色器中查找数据。数据被打包成32位纹理,高度会占据16位(通过R、G和法线通道);或者保存为两个8位的数值(分别用于X和Y,占据B和A通道)。此外,如果使用了重新拓补 工具,另外一个32位纹理会保存X和Y偏移。
# 连续Geo-MipMap LODLandscape地形的LOD使用标准纹理mipmap进行处理。每个mipmap都是一个细节级别,可以使用"text2Dlod"HLSL指令指定要采样的mipmap。这不仅允许使用大量LOD,而且还能够实现平滑的LOD过渡,因为两种mip级别都可以采样,然后高度和X和Y偏移量可以内插到顶点着色器以创建一个干净利落的变换效果。
# 高度图和权重数据流送
由于数据存储在纹理中,因此虚幻引擎4中的标准纹理流送系统可以根据需要对mipmap进行流进放出操作。这不仅适用于高度图数据,也适用于纹理层的权重。只需要每个LOD所需的mipmap,就可以在任何时候最大程度减少要使用的内存量,从而增加由于内存被释放而可以创建的地形的大小
# 高分辨率LOD独立照明由于存储了地形的X和Y斜率,所以所有的高分辨率(非LOD)法线数据都可以用于照明计算
这允许为始终使用地形的最高分辨率执行逐像素照明,甚至在无LOD的遥远组件上也可如此
当这些高分辨率的法线数据与细节法线图结合在一起时,Landscape地形可以实现非常详细的照明,却只需要极少的系统开销
# 性能注意事项选择地形组件尺寸时,需要考虑地形组件总数,这是性能平衡的需要。较小的地形组件尺寸可以更快地进行LOD过渡和完成更多的地貌碰撞,但较小的尺寸也意味着需要更多的地形组件
每个地形组件都会产生渲染线程CPU处理成本,每个分段都是一次绘制调用,因此需要将该数量保持在最低水平。对于最大的地形,Epic推荐最多使用1024个地形组件
官方文档地址
https://docs.unrealengine.com/5.3/zh-CN/landscape-overview/
坚持与您“分享”最有价值“干货”内容本期分享就到这里,我们下期见!
探寻游戏细节:解析53种贴图的制作与用途以及对环境、角色的影响!<<游戏关卡>> 关卡设计中的空间通信<<游戏关卡>> 游戏光照是什么?如何为关卡进行照明 (灯光篇)
<<游戏关卡>> 如何自然地引导玩家使用关卡布局 (视觉引导篇)
你从未见过PCG这样做!官方超好用图表 | 基础案例总结运用演示
虚幻引擎5 BluePrint(蓝图)
UE5.2预览版PCG工具系列
Houdini基础入门系列 | Houdini大世界制作#更多详细文章分类知乎专栏 | 左侧文章目录便于查找https://zhuanlan.zhihu.com/p/659080390关注我们学习不止、不止学习
公众号小编
公众号
哔哩哔哩 不错,支持下楼主 好帖,来顶下 大哥就是强!
页:
[1]