为了在__地形__上创建颜色和细节,可在其表面添加纹理。由于地形对象一般很大,因此标准做法是使用无缝重复的纹理并将其平铺在表面上。从靠近地面的角色视角来看,重复纹理通常不容易察觉。
虽然一个纹理始终充当地形上的背景层,但也可以绘制具有不同纹理的区域来模拟不同的地面,如草地、沙漠和雪地。例如,应用具有可变透明度的纹理,在草木繁茂的乡村和沙滩之间创建一个渐进过渡。
__地形图层__是一种信息容器,其中的信息可为地形定义一个给定表面。它保存由地形材质用于渲染地形表面的数据(如纹理和其他属性)。因为地形图层是__资源__,所以很容易将其重复用于多种地形区块。
要直接从 Terrain Inspector 中创建地形图层,请单击 Terrain Inspector 顶部工具栏中的画笔图标,然后从下拉菜单中选择 Paint Texture。在 Terrain Layers 部分底部,单击 Edit Terrain Layers 按钮,然后选择 Create Layer。
单击 Create Layer 将打开 Select Texture2D 窗口,可以在其中选择要用作地形图层__漫射 (Diffuse)__ 通道的图像。要将__法线贴图 (Normal Map)__ 或__遮罩贴图 (Mask Map)__ 纹理分配到地形图层,请在 Project 视图中选择相应的地形图层,并使用其 Inspector 窗口。
或者,若要创建地形图层资源,请右键单击 Project 窗口,然后从上下文菜单中选择 Create > Terrain Layer。然后,在 Inspector 窗口中,为新地形图层配置各种设置。
请参阅性能以了解有关地形图层数量如何影响渲染性能的信息。即使分配的地形图层并没有在地形区块上实际绘制,也可能影响渲染性能。
最初不会为地形指定地形图层。默认情况下,在添加地形图层之前会使用棋盘纹理。
在项目中创建地形图层后,单击 Edit Terrain Layers 按钮,然后选择 Add Layer 以显示 Select TerrainLayer 窗口。双击此窗口中的地形图层,将其添加到您的地形。
根据在地形设置 (Terrain Settings) 中设置的材质,以及当前使用的渲染管线,您可能在此处看到不同的选项、设置和 UI。
内置渲染器 (Built-in Renderer) 和地形材质 (Terrain Material) 的可用选项包括:
Diffuse 纹理表示地形图层的基色纹理/通道。
Normal Map 纹理包含地形图层的法线信息,而 Unity 使用这些信息来进行光照计算。如果在地形设置 (Terrain Settings) 中没有分配法线贴图 (Normal Map) 纹理并启用实例化,地形将使用从地形高度贴图生成的法线。如果分配了法线贴图纹理并启用实例化,Unity 将使用法线贴图纹理而不是从高度贴图生成的法线。如果在地形上禁用实例化,则内置的地形材质使用从地形几何体生成的法线(即使在地形图层上分配了法线贴图纹理也是如此)。
如果分配了 Normal Map 纹理,地形图层设置中将显示一个称为 Normal Scale 的新字段。该字段值用作法线贴图中的法线值的缩放因子。值为 0 意味着法线贴图中存储的法线的缩放比例为 0,而值为 1 意味着法线处于完整缩放比例或发挥完整影响。
TerrainLit 着色器(这是高清渲染管线 (HDRP) 的一部分)使用此 Mask Map 纹理数据。自定义地形着色器也可能将此纹理用于用户定义的目的。
对于 HDRP TerrainLit 着色器,Mask Map 纹理的 RGBA 通道对应于:
如果分配 Mask Map 纹理,将显示 Channel Remapping。单击 Channel Remapping 旁边的三角形可展开菜单,这样将显示 Mask Map RGBA 通道的 Min 值和 Max 值。Unity 使用这些范围值来重新映射 Mask Map 纹理的每个通道中的值。
地形图层的镜面高光颜色。
地形图层的总体金属性值,范围从 0 到 1。
地形图层的总体平滑度值,范围从 0 到 1。
适用于地形图层使用的所有纹理的平铺设置:
Unity 将您添加的第一个地形图层应用于整个地形。如果添加多个地形图层,请使用 Paint Texture 工具将后续纹理应用于地形。
如果您添加一个没有任何地形图层的新地形区块,并在此区块上进行绘制,系统会自动将所选地形图层添加到新的地形区块。由于这是第一个添加的地形图层,因此该纹理成为基础图层,并填充整个地形区块。
在 Terrain Inspector 中的 Brushes 下,有一个框中会显示可用的画笔,而且其下还有 Brush Size 和 Opacity 选项。请参阅创建和编辑地形以了解关于这些工具的更多信息。
分配给一个地形区块的地形图层数可能会影响渲染器的性能。
内置渲染器和轻量级渲染管线均支持每个纹理通道有四个地形图层,对通道的数量则没有限制。这意味着,虽然可以使用任意数量的地形图层,但是每个通道都会增加渲染地形所用的时间。为了实现性能最大化,请将每个地形区块都限制为四个地形图层。
如果使用高清渲染管线,则可以为每个地形区块添加最多八个地形图层,且系统会在单个通道中渲染这些图层。无法添加更多通道。如果添加的地形图层超过八个,它们会显示在 Unity Editor 中,但在运行时会被忽略。
2019–01–29 页面已修订并进行了编辑审查
在 2018.3 版中更新了功能