为了在__地形__上创建颜色和细节,可在其表面添加纹理。由于地形对象一般很大,因此标准做法是使用无缝重复的纹理并将其平铺在表面上。从靠近地面的角色视角来看,重复纹理通常不容易察觉。
虽然一个纹理始终充当地形上的背景层,但也可以绘制具有不同纹理的区域来模拟不同的地面,如草地、沙漠和雪地。例如,应用具有可变透明度的纹理,在草木繁茂的乡村和沙滩之间创建一个渐进过渡。
__地形图层__是一种信息容器,其中的信息可为地形定义一个给定表面。它保存由地形材质用于渲染地形表面的数据(如纹理和其他属性)。因为地形图层是__资源__,所以很容易将其重复用于多种地形区块。
要直接从 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 版中更新了功能
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.