地形快速入门指南
利用虚幻引擎中的地形系统基础知识设置和运行。
《虚幻编辑器地形快速入门指南》将对新建地形、塑造地形,新建地形材质,及在地形上绘制此类材质进行讲解。
1 - 使用地形工具
虚幻引擎4(UE4)内置的 地形(Landscape) 系统是一个工具合集,可帮助你创建 庞大的户外环境。但在深入讲解创建首个地形前,先来熟悉与地形系统互动时的最常用工具和键盘输入。
打开地形工具并使用模式
用于与地形系统交互的所有工具均可在 模式 下拉菜单 中的 地形 选项下找到。要启用地形工具,点击模式下拉菜单并从菜单中选择对应选项即可。
地形工具共有三种模式:管理(Manage)、造型(Sculpt) 和 绘制(Paint),点击地形工具栏窗口顶部的图标即可进行访问。利用此类模式可以不同方式与地形互动。以下是各模式支持操作的概览。与地形工具互动
虽然地形工具中的三种模式可让你分别以不同的方式与地形互动,但其所用的键盘和鼠标按键却非常相似。以下为使用地形工具时最常使用的按键、按键组合和鼠标按钮的概览。潜在问题和解决方法
开始绘制地形时,可能会遇到如基本材质消失或变黑等问题,如下图所示:
发生此类情况是由于开始绘制时,地形上没有绘制图层数据。要解决此问题,需继续绘制地形,操作以生成绘制图层数据。如要填充整个地形,首先选择大型笔刷尺寸,例如8192.0,选取要用作基础的图层,然后在整个地形上绘制一次。此操作可创建绘制图层数据,以便继续进行绘制,而材质不会变黑。
另一个潜在问题是地形上使用的纹理缩放过大或过小。要解决此问题,需要打开地形材质,然后选择 Landscape Coords 节点。选中后,调整 细节 面板中的 映射缩放(Mapping Scale) 并保存材质。编译后,在视口中检查缩放。如对缩放效果不满意,重复上述过程直到获得理想效果。
6 - 地形提示和技巧
以上快速入门教程已对设置和运行地形的基础知识进行了讲解,但对地形工具的介绍却十分浅显。此章节旨在展示部分地形工具的使用提示和技巧,及生成地形所需外部工具。
提示和技巧
1.使用 绘制工具 时,相较使用 Shift + 鼠标左键 进行擦除,直接对要擦除的区域进行整体绘制将更为简单。
2.使用 Alpha笔刷 时,记住可从 纹理通道(Texture Channel) 下拉菜单中选择其他RGB通道来更改笔刷图案。可将最多三种不同Alpha图案打包到单个纹理中,因此此操作将十分方便。
3.地形根据组件上绘制的图层,分别编译各组件的着色器。因此,假设拥有之上有泥土图层的组件,但该组件上并未绘制草地图层,该组件的材质将忽略草地图层的纹理,从而降低渲染开销。因此进行优化时,可检查地形,寻找并移除只有少量给定图层的组件,降低材质复杂度。
4.绘制图层时还需注意另一问题:避免在同一组件上绘制过多纹理。材质编辑器统计数字显示允许使用的纹理样本数量限制。但对地形材质而言,每层的遮罩也将被视为纹理取样而不会在统计数据中体现。如在组件上绘制新图层时出现默认纹理(灰色方块),原因可能是超过了纹理样本的数量限制、需要移除一个图层、或需要对材质进行优化(使用更少的纹理)。
5.可更改单个地形组件的LOD距离因子,以便其在较近或较远的距离阈值中进行简化。逐渐远离山顶或其他拥有独特轮廓的地形时,将对最明显的区域进行LOD,因此可减少这些组件的LOD偏差,保留其形状。也可增加低精度区域(如平原等在拥有较少曲面细分时也不会存在较大差别的区域)的LOD偏差。
世界场景构成
在虚幻引擎4(UE4)中,可使用 世界场景构成(World Composition) 工具对地形进行简单管理,并创建巨大的世界场景。世界场景构成的设计理念是为简化大型世界场景(尤其是使用地形系统创建的世界场景)的管理。欲了解世界场景构成工具的更多信息,请留意后期更新!
外部创建工具
虽然默认地形工具可以满足造型和绘制的所有需求,但有时需要对地形外观和风格进行更深入的调整。可以使用以下软件包实现地形工具无法达到的效果。
地形UI参考
地形技术指南地形的技术设置。
为了使地形系统发挥最佳性能,必须遵守一定的技术限制。以下文档旨在提醒您注意这些限制,并为您提供有价值的信息,以便您能够在地形的美观和性能之间达到最佳平衡。
技术细节
[图片上传中...(Snipaste_2021-05-18_00-06-29.jpg-a75d1d-1621267596125-0)]
刚开始时,地形高度图的有效维度并不总是立即会显示出来。要确定高度图的哪些维度是有效的,以及除此之外哪些维度是最佳的,还需要对地形的底层架构有一个全面的了解。为了创建一个允许使用巨大地形但又能继续高效利用内存和性能的系统,架构隐式地对高度图的维度进行了限制,这意味着某些维度是有效的,而其他维度则无效。在虚幻引擎中先前的地形系统中,没有任何限制(即任何维度都是有效可行的)或限制相当简单(即只允许两个高度图的平方幂)。地形高度图的限制更加复杂和严格。
地形Actor是采用颜色编码,这样更容易说明每个部分发挥什么作用。地形的边缘用黄色突出显示,每个组件的边缘用浅绿色显示,分段边缘(如果设置为2x2分段)用中绿色显示,单独的地形四边形用深绿色显示。
地形组件
地形分为多个组件,它们是虚幻的基本渲染单元、可视性计算单元和碰撞单元。地形中的组件都具有相同的大小,并且总是呈现为正方形。地形组件的大小是在创建地形时决定的,而选择取决于您希望创建的地形的大小和细节。
各个组件的高度数据存储在单个纹理中。因此,它的大小必须是顶点数的2次幂。沿着两个相邻组件边缘的共享顶点行被复制并存储在每个组件中。因此,考虑每个组件中的四边形数量是有意义的。
下面是一个非常简单的地形(其轮廓为绿色),包含四个组件。每个组件由一个四边形组成。一个组件已经被分离,以显示组件相交处的顶点是如何重复的。
组件分段
组件可以分为1或4(2x2)个子分段。这些分段是地形LOD计算的基本单元。
使用4(2x2)子分段选项可以得到与使用四倍组件(每个组件只有一个子分段)相同大小的高度图,但是使用更少的组件通常可以获得更好的性能。
每个分段的大小(以顶点数量计)必须是2的幂(最大为256x256)。这样,不同的LOD级别可以存储在纹理的mipmap中。这将导致一个组件中各个方向(x或y)的四边形的数量要么是2的幂减1(如果每个组件有1个分段),要么是2的幂减2(如果每个组件有4个分段)。
下面是一个单独的组件(其轮廓为绿色),包含四个分段。每个分段由9(3x3)个四边形组成。同样,您可以看到这些分段相交的顶点都是重复的。
性能注意事项
组件大小与组件总数的选择是一种性能上的权衡。较小的组件大小可实现更快的LOD过渡,也可实现更多地形的遮挡,但是组件越小,需要的组件越多。
每个组件都有一个渲染线程CPU处理成本,每个分段都是一个绘制调用,所以尽量将这些数字保持在最小值。对于最大的地形,Epic建议最多使用1024个组件。
计算高度图维度
正如您所看到的,地形的维度是基于每个分段中的四边形数量、每个组件中的分段数量以及地形中呈现的组件数量。一旦确定了组件数量和每个组件的分辨率,计算整个地形的维度就变得非常简单。
以下是一些示例场景:
示例1
如果我们从包含64x64个顶点的单个分段组成的组件开始,那么组件的大小就是63x63个四边形。假设我们有一个由10x10个这些组件组成的地形,那么地形中总共有630x630个四边形。现在,如果我们想要导入这样一个地形的高度,我们必须有一个有631x631个顶点的高度图,因为存在的顶点总是比四边形多一行(想象一个1x1四边形 - 它需要4个顶点)。因此631x631是一个有效的地形大小。
示例2
如果某个组件可分成4个子分段,且每个子分段由64x64个顶点组成。这样每个分段就有63x63个四边形,每个组件就有126x126个四边形。如果我们有32x32个这样的组件,我们在每个方向上得到共计126 * 32 = 4032个四边形。因此整个地形将有4033x4033个顶点。
上述例子都以正方形地形为探讨对象。但是,您可以创建非正方形的地形。例如,在第一个例子中,10x10并不特殊。假设每个组件有63个四边形,您可以得到由AxB个组件组成,且总大小为(A63+1 , B63+1)个顶点的任意地形。
计算高度图Z缩放
虚幻引擎4在计算地形高度时,读取的数值范围在-256到255.992之间,使用的精度为16位。然后,这个数值会和你在导入高度图时使用的Z缩放值相乘。假如,如果Z缩放值是1,则最大高度大约是256厘米,而最大深度约是-256厘米。因此,当Z缩放值的默认值为100时,高度值的范围在256米(m)到-256米(m)之间。
为了计算自定义高度,你需要使用一个比例值,把你的自定义高度的范围转换成虚幻引擎使用的-256到256的范围。由于高度范围总计有512个单位(-256到0是256个单位,0到256是256个单位),所以比例是1/512,也就是0.001953125。让我们首先把测量单位换算成厘米,然后乘以这个比例。下面是一个例子:
假设你希望在虚幻引擎中表现夏威夷的最高峰莫纳克亚峰(海拔4207米):
首先让4270乘以100,将高度单位转换为厘米。结果是420700厘米。
1..接着,将转换后的高度乘以比例:420700厘米乘以0.001953125等于821.6796875。
2.于是算出Z缩放值是821.6796875,计算出的高度值范围在-210.350厘米到210.350厘米之间。
3.导入高度图文件后,在"Z缩放"属性中调整数值会改变地形在视口中的预览效果。
通过这种方法,你可以获得山脉的精确高度,但该高度不包含山脉在海平面以下的深度。假如你想在地形高度有上增加一些额外空间,你可以相应地调整你的初始高度。举个例子,莫纳克亚山会在海平面以下继续延申5761米,因此初始总高度应该是9968米。
建议地形大小
为了让事情变得更简单,这里有一些尺寸可以用于在最大化面积的同时最小化地形组件的数量。
图层调试模式
图层调试(Layer Debug) 模式允许在视口中将特定图层的权重显示在地形上。您可以在视口的视图(View)菜单下的 地形查看器(Landscape Visualizers) 下启用图层调试模式。
启用图层调试模式后,将显示可用于选择单独颜色信道的单选按钮,且目标图层将包含在列表中。
选择一个信道将对地形应用一个着色器,该着色器显示所选目标图层的信道所覆盖的区域。
网友评论