地形材质设置
材质以用于地形地貌。
尽管任意 材质 都可用于 地形 Actor,但虚幻引擎4(UE4)中的材质系统同时提供了一些特定的地形材质节点,可帮助优化地形纹理。以下文档中将介绍此类节点的功能,以及如何在地形材质中使用它们。
层权重和排序
地形使用权重混合,而非Alpha混合,因此所有层在任何位置的混合系数最多累积到1.0。Alpha混合与顺序无关,可随时绘制任意层,因此十分有用。此外,在使用Alpha混合时,Alpha层的权重会增加,而其他现有层权重会减小。
但是,使用Alpha混合的一个弊端是层绘制达100%时,所有其他层的权重值将变为0%。此情况在使用[绘制]工具移除已100%的层时十分明显。由于其他层为0%,工具无法取代要移除的100%层,因此层好似并无变化。
地形特定材质节点
在材质编辑器中,可发现六个可用于地形系统的特殊节点。可在 地形 分类下的 控制板 菜单中找到所有这些节点。
地形层混合节点
利用 LandscapeLayerBlend 节点可混合多个纹理或材质网络,以便将其用作地形层。LandscapeLayerBlend使用阵列存储关于地形层的信息。要向该阵列添加层,选择加号图标。

将多个层添加到 LandscapeLayerBlend 节点时,层命名会被填入LandscapeLayerBlend节点。


下表详细说明了 层混合 节点的输入和输出。

混合层
使用层混合模式的特定组合时,地形上不同层交叉的位置将出现大量黑斑。将LB_HeightBlend模式用于多地形层时,此问题尤其常见。LB_HeightBlend的工作原理是使用指定权重值调制层的混合系数或权重。如区域上绘制有多个层,且均被设为LB_HeightBlend,则可能特定区域中绘制的所有层将同时拥有0高度值,因此各层的理想混合系数将变为0。
由于无隐式或显式排序,且无层对该区域有贡献,因此结果会产生黑斑。由于混合法线贴图会产生法线值(0,0,0),且该值无效,会导致照明渲染问题,因此混合法线贴图时情况会更糟。针对此问题的解决方案是对其中一个层使用 LB_AlphaBlend,如以下范例所示。
左图中所有层均为LB_HeightBlend,会导致部分区域变黑。在右图中,红色"1"层已改为使用LB_AlphaBlend,从而解决该问题。
以下是混合起来的所有层的 Landscape Layer Blend 节点属性范例。务必注意 土壤 层将其混合模式设为LB_AlphaBlend,而其他层则设为LB_HeightBlend。此设置旨在避免发生上文中的问题(层交汇处出现黑斑)。

如需删除层,点击层元素编号右侧的下拉箭头打开菜单,并选择 删除。

地形层坐标节点
LandscapeLayerCoords 节点生成UV坐标,可用于将材质网络映射到地形地貌。


地形层切换节点
特定层未对地形区域贡献时,利用 LandscapeLayerSwitch 节点可排除部分材质运算。特定层权重为0时,利用此操作可通过移除不必要的计算优化材质。
地形层权重节点
利用 LandscapeLayerWeight 表达式可根据地形材质中获取的关联层权重混合所有材质网络。该层的权重用作混合两个输入网络的Alpha值。
地形可视性遮罩节点
LandscapeVisibilityMask 节点移除地形的可见部分,以便在地形中创建洞进行如洞穴创建等操作。


地形层混合类型
地形 层混合 材质节点有三个不同混合模式可供选择。尝试得到不同结果时,使用不同 层混合 类型。

地形层混合技术信息
在后台,此类层节点的行为与静态切换参数节点类似,利用其可切换使用的材质部分。地形的各组件均包含主地形材质中创建的的 MaterialInstanceConstant,仅应用到此组件。如特定地形组件上未使用特定层,则连接到层的节点子树将被废弃。此项会降低总体材质复杂度,使应用于地形的材质包含任意数量的纹理取样,前提是单个组件上使用的样本量不超过着色器模型规格设置的最大数量(SM 3.0为16个)。
这意味可设置主材质包含地形任意位置上使用的所有纹理或网络。最终组成极度复杂的网络集合,同时在硬件支持的参数范围内,继续将最终材质应用到地形组件。
任何材质表达式网络都可连接到 Layer 输入,取代简单 TextureSample。如此便可得到更加复杂的效果,例如,根据所层被查看的距离,从细节纹理过渡到较大的宏纹理。
曲面细分和置换贴图
材质的 曲面细分乘数 和 场景置换贴图 通道可与地形地貌结合使用,以在地形靠近相机时提供更多细节和变形。其工作方式与其他标准材质相同,层混合可与之结合使用,与 底色、法线 或其他通道相同。地形也仅在最高细节级别(LOD)上渲染硬件曲面细分,其随着地形接近第二个LOD而逐渐淡出。后续LOD将不再启用曲面细分,在地形地貌上启用曲面细分替换时极大提高性能。
此类功能仅限启用DirectX 11时使用。因此,其应用于作二次润色效果,除非特别针对的是DirectX 11硬件。可查看[曲面细分乘数]页面,阅读在项目中启用和使用曲面细分的更多相关信息。

移动地形材质
移动地形不再仅限于三个地形层。虽然三个为最优方案,但只要纹理取样器数量足够,就可支持任意数量的层。地形层分配现使用[特征等级切换材质节点],单个PC或主机地形材质也可具有移动版本。下图展示PC和主机版《堡垒之夜:大逃杀》中使用的地形在移动设备上的外观。

使用层混合
将多个纹理和材质网络混合为可绘制地形层的功能,是纹理化地形地貌的基础。为了将层混合起来,可使用多个 LandscapeLayerWeight 节点或一个到两个 LandscapeLayerBlend 节点,具体取决于是否使用法线贴图。
使用地形层权重节点
设置和使用 LandscapeLayerWeight 节点的过程非常简单,具体见下文所述。
所有层命名必须唯一,因此建议使用可表明层所含内容的描述性名称来命名层。此命名这可协助记忆层中的内容,以便更加快速地搜索层。
1.在 材质编辑器 中,向材质图表添加 LandscapeLayerWeight 节点。其默认的 参数命名 为"None"。

2.在 细节 面板中,将 参数命名 改为层的描述性命名,如"Rock"。在输入 参数命名 后,节点上将自行更新命名。

3.添加额外 LandscapeLayerWeight 节点,直到所需材质中的所有层都拥有此类节点为止。该范例中仅使用两个 LandscapeLayerWeight 节点。
4.添加 纹理取样 或其他材质网络表达式,并将其与 LandscapeLayerWeight 节点连接。
5.添加 LandscapeLayerCoords 节点,任意设置其UV标题,然后将其与 纹理取样 节点连接。
6.从各 层 节点的输出引脚连出引线,连接到下一层节点的 基本 引脚,使用引线将两者连接(不连接首个层节点的 基本 引脚)。
7.从最终 层 节点的输出引脚连出引线,连接到材质 基本 节点的 底色 输入。
完成后应可看到类似以下使用 LandscapeLayerWeight 节点的范例:

可通过更改 LandscapeLayerWeight 节点的 预览权重 属性,预览材质上不同权重的效果。
使用地形层混合节点
作为使用 LandscapeLayerWeight 节点手动混合层的替代方法,LandscapeLayerBlend 节点使用Alpha混合或带有基于高度偏移的Alpha混合来混合多个层。利用基于高度的偏移,层可根据高度图输入与其他层混合。
- 在材质编辑器中,添加 LandscapeLayerBlend 节点。
- 在 细节 面板中的 层 旁,点击加号图标
Plus Sign 添加层。
3.展开层查看其属性。
4.将 层命名 改为层的描述性命名,如"Snow"。
5.决定层是Alpha混合或高度混合,并设置相应的 混合类型。
6.按需添加地形材质的其他层数。重命名并设置相应的 混合类型。
7.将LandscapeLayerBlend节点输出连接到材质基本节点的 底色 输入。
添加纹理取样节点,将其主输出连接到 LandscapeLayerBlend 节点的 层 输入。或创建更复杂的材质网络,将其连接到地形层混合 层 输入。对于混合高度层,将纹理取样的Alpha输出连接到LandscapeLayerBlend的 高度 输入。

创建地形洞材质
在[管理模式]下可在地形上创建洞,但仅能通过删除整个地形组件进行操作。为避免此类操作,可使用地形洞材质来遮罩地形上特定位置的可视性和碰撞。如要在山脉侧面创建进入洞穴的入口,此操作将非常有用。
可使用地形材质和地形洞材质的相同材质,但注意:对比不使用不透明蒙版的材质,使用此类蒙版的材质对性能影响更大。因此可选择创建单独的地形洞材质。
1.打开材质编辑器,在 细节 面板中,将 混合模式 设为 遮罩。

2.接着将 LandscapeVisibilityMask 节点添加到材质图表,并将其输出连接到 不透明蒙版 输入。

3.编译材质后,将其指定到地形以便使用。该操作可在 细节 面板的 地形洞材质(Landscape Hole Material) 部分中完成。

4.现正常设置地形材质的其余部分,完成后应可得到类似下图的结果。

向地形指定材质
创建地形的材质后,需将材质指定到关卡中的地形Actor,以使用该材质。
-
在 内容浏览器 中找到要使用的地形材质。
-
在视口或在 世界大纲视图 中选择地形。
-
在关卡编辑器的地形 细节 面板中,点击 地形 部分中 地形材质 旁的"指定"箭头
Assign arrow 指定选中材质。
向地形指定地形洞材质
可指定不同材质为 地形洞材质,其为拥有特定不透明度设置的材质。
-
在 内容浏览器 中找到要使用的地形洞材质并选中。
-
在视口或在 世界大纲视图 中选择地形。
-
导航到关卡编辑器 细节 > 地形 > 地形洞材质。选择箭头
Assign arrow 指定选中材质。
——————————————————————————————————————————————————————————————————
地形简易材质制作过程:




++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



















网友评论