1 创建和编辑地形
在菜单右键Create->3D Object->Terrain创建地形,会生成一个平面。可以通过Inspector 面板提供的工具调整地形参数,制作出山峰、山谷、平原、峭壁等地形。 
1.1 地形系统使用
1.1.1 Create Neighbor Terrains(添加相邻地形)
 选中创建邻近地形,在Scene面板中点击四周绿色的线框可以在线框处创建另一块地形(新地形被创建出来后与模板地形不处于同一块地形中),并新建一个新的TerrainData资源,编辑器会默认将新创建的地形区块放在与其邻近地形区块所在的那个组中,并复制邻近区块的设置给新的地形。 当勾选Fill Heightmap Using Neighbors时表示使用已经存在且与其相邻的地形高度图交叉混合来填充新地形的高度贴图。Fill Heightmap Address Mode表示选择交叉混合地形高度图的模式。
- Clamp
使用Clamp生成的新区块的高度图只与其相邻地形区块的边缘高度有关 - Mirror
使用Mirror生成的新区块的高度图与每一个与其相邻的地形区块的高度图有关。因为Unity会先为每个相邻地形区块生成镜像,并对这些区块的高度贴图进行交叉混合以生成新区块的高度贴图。

Unity在生成的地形区块的Terrain Settings中默认勾选Auto Connect。启用Auto Connect后地形系统会自动管理相邻地形区块之间的连接,并且区块会自动连接到具有相同Grouping ID的所有邻居。
如果更改地形区块的Grouping ID属性,或者禁用具有同一个Grouping ID的区块的Auto Connect属性,可能会丢失区块之间的连接。断开连接的两个相邻区块,若具有相同的Grouping ID 且都启用了Auto Connect 的情况下,可使用Reconnect按钮重新创建地形区块之间的连接。 
启用Auto Connect后修改相邻区块之间的区域,两块相邻的地形区块会无缝修改,不会发生边沿“断开”的情况,关闭Auto Connect后修改相邻部分会发生边缘部分断裂。 
1.1.2 Paint Terrain(绘制地形)
使用这个工具修改地形的高度、纹理,设置地形高度、平滑高度及柔化地图特征等,还能标记画笔形状。 
1.1.2.1 Raise or Lower Terrain(升高或降低地形)
使用笔刷工具将地形升高或降低,用来建造地形的整体走向,包括凸起的山峰,凹陷的山谷等,都由这个工具构建。注意:地形高度最低为0,不能降到负数,要建造山谷需要将地形整体高度升高后,在山谷的位置使用笔刷工具降低高度。
操作方式:单击鼠标左键并在地形对象上拖动光标以提高其高度,按住 Shift 键的同时单击并拖动可降低地形高度。
在Brushes选项中选择要使用的笔刷形状。使用 Brush Size 滑动条修改画笔的覆盖范围,大范围用于地形基础形状的构建,小范围用于细节的刻画。使用Opacity 滑动条修改将画笔应用于地形时的强度,Opacity 值为 100 表示将画笔设置为全强度,值越高改变速度越快,幅度越大。  使用不同的画笔可创建各种效果。例如,可使用软边画笔增加高度,创建连绵起伏的山丘,然后使用硬边画笔降低一些区域的高度,切割出陡峭的悬崖和山谷。  还可以使用高度贴图来修改地形的形状、高度等,具体内容在导入和导出高度贴图中。
1.1.2.2 Paint Holes(挖洞)
使用Paint Holes 工具可以在地形区块中挖一个洞出来,洞的形状、大小由自己使用笔刷工具去抠,适用于在地形中绘制洞口、悬崖等。  操作方式:选择笔刷后,在地形上单击并拖动鼠标挖洞,在按住 Shift 键的同时单击并拖动可从地形中抹去孔洞。可通过修改笔刷工具的大小和强度来调整挖洞的速度。(不知道怎么去除边缘锯齿)  在使用光照、物理和导航网格(NavMesh)烘焙地形时,Unity会丢弃洞所在区域的地形信息,不影响光照、地形碰撞体和烘焙导航网格的准确性。
为了支持物理碰撞体,孔洞的遮罩纹理的分辨率等于地形高度贴图的分辨率 - 1。
1.1.2.3 Paint Texture(绘制纹理)
可使用笔刷工具将选定纹理(如草、雪、沙等)绘制到地形。如草地、岩石等纹理。但如果地形中不存在Terrain Layer,Paint Texture工具将没有效果,因为没有可选中的纹理,使用笔刷工具绘制时使用的是Unity默认的纹理。要想将纹理绘制到地形上,首先得将纹理添加到地形中作为Terrain Layer,然后才能使用笔刷工具进行纹理绘制。  操作方式: 要绘制地形图层到地形,需要先选择要用于绘制的画笔及要绘制的纹理,然后调整画笔的 Brush Size(尺寸) 和 Opacity(应用效果的强度)。最后,在地形上单击并拖动来绘制纹理。可将画笔的Opacity 减小后在区块边界上进行绘制,使相邻区域的边界过度更自然。但地形系统会将选定的地形图层添加到绘制的任何地形,因此可能会影响上述性能。 
1.1.2.3.1添加Terrain Layer(地形图层)
在Terrain Layer中处于首位的将会默认填充整个地形。一个Terrain对象可添加多个地形图层。但是,每个区块支持的地形图层数取决于具体渲染管线。
添加Terrain Layer有以下三种方法:
-
选择Edit Terrain Layers->Create Layer,选择一张纹理图片后即会添加一个Terrain Layer到资源面板,纹理名称及路径可修改。  -
在Assets面板创建一个Terrain Layer并修改名称,在Inspector面板修改其Diffuse(默认显示图片),normal Map(法线贴图)及其它配置(也可添加后修改),在Edit Terrain Layers->AddLayer中选择新创建的Terrain Layer即可将其添加到纹理面板中。 -
添加已有纹理到纹理面板 Edit Terrain Layers->AddLayer,选择已有的纹理即可。 
Terrain Layer(地形图层)参数调节
每个Terrain Layer(地形图层)都可以在其Inspector面板或其添加到的地形对象的Inspector面板中调节相应参数。
-
Inspector面板中  -
其添加到的地形对象的Inspector面板中,选中要调节参数的地形图层,选择下拉三角形,打开参数调节面板。  参数 -
Diffuse 表示地形图层的显示纹理。 -
Normal Map 法线贴图纹理 (Normal Map Texture) 包含地形图层的法线信息,Unity用于光照计算。法线纹理可以使纹理具有凹凸感,看起来不是一张图片贴上去的,更真实自然。 如果没有分配法线贴图纹理并启用实例化,地形将使用从地形高度贴图生成的法线。如果在地形上禁用实例化,则内置的地形材质使用从地形几何体生成的法线(即使在地形图层上分配了法线贴图纹理也是如此)。 -
Normal Scale 如果设置了法线贴图纹理,地形图层设置中将出现一个 Normal Scale字段 ,修改该字段的值可以修改法线贴图中的法线值的缩放因子,即可以修改显示纹理中的凹凸度、粗糙感。值为 0 时没有凹凸感,值为非0数时凹凸度都增加。区别在于,值为正数和负数时对应的凹凸方向发生改变。

- Mask Map TerrainLit
着色器(这是高清渲染管线 (HDRP) 和通用渲染管线 (URP) 的一部分)使用此遮罩贴图纹理 (Mask Map Texture) 数据。自定义地形着色器也可能将此纹理用于用户自定义的目的,例如环境光遮挡或基于高度的混合。Specular 设置地形图层的镜面高光颜色。 - Metallic
Terrain Layer的金属度。 - Smoothness
Terrain Layer的总体平滑度。 - Tiling Settings
适用于地形图层使用的所有纹理的平铺设置。 - Size
地形空间中纹理的大小,以及纹理平铺的频率。  - Offset
Unity 应用于地形图层中每个纹理的采样位置的基本偏移。Offset中的X、Y对应世界坐标的X轴和Z轴。 
1.1.2.4 Set Height(设置高度)
选择该工具后,使用画笔工具可将地形上某个区域的高度调整为特定值。笔刷工具覆盖的区域中,低于该高度的会升高,而高的会降低。此工具可用于在场景中创建平坦的水平区域,例如平原、台阶、房顶等。 
-
Space 下拉菜单 从 Space 下拉菜单中选择一个属性指定高度偏移是相对于 Local 还是 World 空间。 World空间会将地形高度设置为Height值。注意:World空间可以设置Height为负数,但地形高度最低为0,就算将Height值设为负数,也只会将地形高度设为0。 Local空间会将地形告诉设置为Height值与地形本身的高度之和,例如,如果 Height 值为 100,则地形的高度则变为地形的变换位置 Y 坐标与 100 之和 (terrain.transform.position.y + 100)。Local空间输入的 Height 值必须是从 0 到地形设置中的 Terrain Height(地形最高值) 之间的值。 -
Height字段输入方式 (1)在 Height 字段中输入数值。 (2)使用 Height 属性滑动条。 (3)按 Shift 键并单击地形在光标位置采样高度,类似于在图像编辑器中使用“吸管”工具的方式。 -
Flatten Tile 按钮 将整个地形区块都调整到指定的高度。可用于设置地平线上方的山丘和下方的山谷。 -
Flatten All 按钮 将场景中的所有地形区块调平。 -
Brushes 笔刷工具 Brush Size 值确定要使用的画笔的大小,而 Opacity 值确定待绘制区域的高度达到设定目标高度的速度。
1.1.2.5 Smooth Height(平滑高度)
平滑高度贴图并柔化地形特征。可以平滑高度变化较大的区域,尤其像地形系统中拉起的“地刺”,减少类似突然出现的变化,不会显著升高或降低地形高度。  使用不平滑的笔刷形状进行绘制后,往往产生一些较尖锐的锯齿状边缘,或有除悬峭壁外的高度突变等,可以使用Smooth Height使这些粗糙外观柔化。
1.1.2.6 Stamp Terrain(标记地形)
如果想要将特定地质特征(例如山丘)按照比例绘制到地形上,可以使用该工具绘制。但是需要先使用需要绘制的特征纹理创建自定义画笔(具体内容看1.2自定义画笔)。  创建自定义画笔:选择New Brush后选择要绘制的纹理高度图,即可根据高度图创建一个画笔,这个画笔包含高度图的信息,例如,有一座山的高度图,根据此高度图创建的笔刷保存这座山的形状、高度、各丘陵的突起等信息。  使用 Stamp Terrain 工具可以选择现有画笔并只需单击即可应用画笔。每次单击都会以所选画笔的形状将地形升高到设置的 Stamp Height。移动 Opacity 滑动条将 Stamp Height 乘以一个百分比。例如,Stamp Height 为 200 且 Opacity 为 50% 时,每个标记的高度设置为 100。  Max <–> Add 滑动条用于选择最大高度,还是将标记的高度添加到地形的当前高度。
Max <–> Add 值 | 描述 |
---|
0 | Unity 会将标记的高度与标记区域的当前高度进行比较,并将最终高度设置为二者中较高的值。 | 1 | Unity 会将标记的高度与标记区域的当前高度相加,因此最终高度设置为两个值之和。 | 0~1之间 | Unity会计算出标记高度与Max <–> Add值的乘积,再将其加在最大高度上。 |
注意:在已经有地形的区域使用Stamp Height画笔,会将画笔覆盖区域的每一个像素都进行当前高度与标记高度的比较,从而确定每一个像素最终高度,而不是将整体纹理的最大高度设置为地形纹理的最大高度,例如:选择最大高度是指在标记高度和当前高度间选择较大的值
 原始地形:  使用Stamp Height笔刷后: 
- Subtract 复选框
将高度设置从加变为减,即从标记区域的现有高度中减去应用于地形的所有标记的高度。不过仅当 Max <–> Add 值大于零时,Subtract才有效。如果标记高度超过标记区域的当前高度,由于地形高度最低只能为0,系统会将地形高度调为0。
1.1.3 Paint trees(添加树)
地形中最初没有树,需要先添加树原型后才能使用,能添加多个树原型。  操作方式:可以使用笔刷工具将定义到地形中的树刷到地形区块中。添加树后,单击并拖动添加树,Shift+单击并拖动擦除画笔覆盖区域的所有树,Ctrl+点击并拖动擦除画笔覆盖区域内当前选中的树类型。
1.1.3.1 添加树原型
Add Tree(添加树) 点击Edit Trees->Add tree->预制体选择。  在弹出的界面中选择树模型,如果所导入的树预制件支持 Bend Factor,Add Tree 窗口将显示用于调整风响应性的 Bend Factor 属性。再点击右下角的Add即可将树模型添加到地形预制中。  Edit Tree(编辑树预制体参数) 已经添加到地形中的树想快速修改成另一个树模型,或此模型用不上的时候,选择要修改的树,选择Edit Trees->Edit Tree打开编辑界面,可以修改已经添加到地形中的树模型。 
树原型笔刷参数设置 选择要放置的树后,可调整其设置以便自定义树的位置和特征。 
参数 | 作用 |
---|
Mass Place Trees | 创建一批整体覆盖的树,但不绘制在整个地形上。批量放置树后,仍然可以使用绘制功能来添加或移除树,从而创建更密集或更稀疏的区域。 | Brush Size | 笔刷大小。 | Tree Density | 树的密度。 | Tree Height | 树的高度,勾选Random并修改Random后的滑动条时,树的高度会在滑动条范围内随机。 | Lock Width to Height | 勾选这个选项会将树的高宽比锁定,当树的高度随机时,树的高宽比会保持和预制体一样。 | Tree Width | 树的宽度,勾选Random并修改滑动条后随机,只有当取消勾选Lock Width to Height 时有效。 | Random Tree Rotation | 树的旋转,只有当选中的树有LOD组时才支持旋转,否则将使用默认的视点替用特效系统,并且不支持旋转。 | Color Variation | 树的颜色变化,值越大区域内树的颜色变化越大 | Tree Contribute Global Illumination | 启用此复选框可向 Unity 指示树影响全局光照计算。 |
刷树 要想在地区块形中添加树有两种方式,一种是在地形中定义添加树后用画笔工具刷,一种是直接将树模型添加到地形下作为树的子物体,区别在于,用画笔刷树更快捷,调整笔刷大小和Tree Density的值可以调整区域内树的密度,当地形变化时,树相对于地形的位置不会发生变化,但用画笔刷出来的树无法更改位置;把树作为地形的子物体速度较慢,可以更改位置,但是当地形变化时树的位置需要自己调整。  
1.1.3.2 创建树(还没学)
1.1.3.3 将碰撞体用于树
在树的预制体中添加碰撞体(如胶囊碰撞体Capsule Collider)后,在Terrain Collider组件中启用Enable Tree Colliders即可将碰撞体用于树。
1.1.3.4 让树在风中弯曲
用画笔工具刷出来的树,且树原型的Bend Factor参数设置为1时,风区可以模拟风实现弯曲树木、摇动树叶的效果。
选择GameObject->3D->Wind Zone新建风区。或将 Wind Zone 组件添加到场景中任何适当的游戏对象上。 
-
Mode Directional:风区位置随意,风力在一个方向上影响整个场景。使用方式类似平行光。 Spherical: 风区的Radius必须与树区域的半径重叠,风区仅在半径内有效果,风力从中心到边缘衰减。 -
Radius 球形风区 (Spherical Wind Zone) 的半径(仅在模式设置为 Spherical 时才有效)。 -
Main Main值表示施加到受风区影响的所有对象上的主风力,可影响树的弯曲,如果树干彻底弯向一侧,应减小 Main 值,可使用 Turbulence 带来一些随机变化。 -
Turbulence Turbulence值表示风的噪声,影响风在主风力上的震动,风以脉冲方式吹过树,从而产生更自然的效果。主要用于控制树叶的飘动,值越大风向的变化越大,值越小飘动特效越流畅,如果树枝过度弯曲或伸展,应减小 Turbulence 值。 -
Pulse Magnitude / Pulse Frequency Pulse Magnitude 定义风脉冲强度乘数,可用于控制脉冲强度,并使用 Pulse Frequency 设置脉冲之间的时间间隔。即用于控制风强度及每一阵风之间的时间间隔。
1.1.4 Paint details(添加花草、石头等)
可以在地形上添加草丛、岩石等其它小对象,但当前仅在内置渲染管线和通用渲染管线 (URP) 中有效。Unity提供两种添加细节的方式,一种是以Texture 2D(纹理)的方式渲染,一种是以Mesh(网格) 的方式渲染。具体取决于需要的细节级别和性能。 
1.1.4.1 Add Grass Texture(添加纹理)
虽然标题是添加草纹理,但是只要是细节类的小对象,都可以使用添加Texture或添加Mesh的方式。 在Terrain Inspector中选择Edit Details->Add Grass Texture。  在Add Grass Texture窗口中选择添加细节纹理后,在弹出的窗口中选择要添加的纹理图片。  Noise Spread 值控制着裸露与草丛斑块的近似大小,值越高表示给定区域内的变化越大。
-
Healthy Color / Dry Color Healthy Color中设置的颜色表示草丛的正常颜色 Dry Color中设置的颜色表示草丛干枯的颜色 在用笔刷工具时草丛颜色会随机出现,类似春天和秋天草丛的颜色变化。 -
Billboard 当启用 Billboard 选项时,在Scene视图或Game视图中旋转摄像机视角,Unity会控制草丛的图像始终面向摄像机。因为草丛使用的Texture纹理本质上是一张图片,是二维的,不能从侧面看到,为了避免出现侧面观察草丛时纹理消失的情况,可以使用勾选此选项将草丛的图像始终面向摄像机。建议在密集的草丛中使用,在稀疏的草丛中使用旋转会比较奇怪,因为无论什么角度看到的草丛都是一样的。 
1.1.4.2 Add Detail Mesh(添加Mesh网格)
在Terrain Inspector中选择Edit Details->Add Detail Mesh。使用 Add Detail Mesh 可从项目中选择预制件。Unity 在 Min Width 和 Max Width 值以及 Min Height 和 Max Height 值之间对其随机缩放。Unity 对 x 轴和 z 轴使用宽度缩放,而对 y 轴使用高度缩放。Noise Spread、Healthy Color 和 Dry Color 值的作用与它们对草的作用相同。 
- Render Mode
在 Vertex Lit 模式中,Unity 将细节对象渲染为场景中的实体顶点光照游戏对象。 在 Grass 模式中,Unity 以类似草的方式使用光照渲染场景中细节对象的实例。
注意 使用Add Detail Mesh 添加的预制物体会比Add Grass Texture添加的更为逼真,效果更好,但也意味着需要消耗更多的性能。
1.1.5 Terrain Setting(更改所选地形的常规设置的选项)

1.1.5.1 Basic Terrain(基础设置)
地形基础参数设置: 
属性 | 功能 |
---|
Grouping ID | Auto connect 功能的分组 ID。 | Auto Connect | 选中此复选框可自动将当前地形区块连接到具有相同 Grouping ID 的相邻区块。 | Reconnect | 在极少情况下,如果更改 Grouping ID,或者为一个或多个地形区块禁用 Auto connect,则可能会丢失区块之间的连接。单击 Reconnect 按钮可重新创建区块之间的连接。仅当两个相邻的区块具有相同的 Grouping ID 以及两个区块都启用了 Auto Connect 的情况下,Reconnect 才会连接这两个瓦片。 | Draw | 选中此复选框可启用地形渲染。 | Draw Instanced | 选中此复选框可禁用实例化渲染。 | Pixel Error | 地形贴图(如高度贴图和纹理)与生成的地形之间的映射精度。值越高表示精度越低,但渲染开销也越低。 | Base Map Dist. | Unity 以全分辨率显示地形纹理的最大距离。超过此距离后,系统将使用较低分辨率的合成图像来提高效率。 | Cast Shadows | 使用此属性来定义地形如何将阴影投射到场景中的其他对象上。Rendering.ShadowCastingMode 控制地形阴影与场景对象的交互方式。 | | Off 地形不会投射阴影。 | | On 地形会投射阴影。 | | Two Sided 从地形任一侧投射双面阴影。Enlighten 和渐进光照贴图 (Progressive Lightmapper) 不支持双面阴影。 | | Shadows Only 地形的阴影可见,但地形本身不可见。 | Reflection Probes | 使用此属性可设置 Unity 在地形上使用反射探针的方式。此设置仅在 Material 设置为 Built In Standard 时,或在使用支持反射渲染的自定义材质(Material 设置为 Custom)时有效。 | | Off 禁用反射探针,并使用天空盒进行反射。 | | Blend Probes 启用反射探针。混合仅在两个探针之间发生。如果附近没有反射探针,则使用默认反射,但默认反射和探针之间不会发生混合 | | Blend Probes And Skybox启用反射探针。混合发生在探针之间或探针与默认反射之间。 | | Simple启用反射探针,但当存在两个重叠的探针体积时,探针之间不发生混合。 | Material | 指定要用于渲染地形的材质。 | | Create 仅当选择默认地形材质时,才会出现 Create 按钮。选择自定义材质时,该按钮不会出现。单击 Create 时,Unity 会在 Project 文件夹中创建材质的副本(可以对其进行修改),然后自动选择该新副本。 |
1.1.5.2 Tree & Detail Objects(树、细节对象设置)
树、细节对象设置: 
参数 | 描述 |
---|
Draw | 选中此复选框可绘制树、草和细节。 | Bake Light Probes For Trees | 如果选中此复选框,Unity 将在每棵树的位置创建内部光照探针,并将它们应用于树渲染器以便渲染光照。这些探针是内部探针,不会影响场景中的其他渲染器。 | | 如果不选中此复选框,树仍受光照探针组的影响。此选项仅对在原型预制件上启用了光照探针的树有效。 | Remove Light Probe Ringing | 如果选中此复选框,Unity 将消除可见的过冲(通常在受强光照射影响的游戏对象上表现为振铃)。此设置可降低对比度,并依赖于“Bake Light Probes for Trees”设置。 | Preserve Tree Prototype Layers | 选中此复选框使树实例采用其原型预制件的层值而非地形游戏对象的层值。 | Detail Distance | 超过此距离(相对于摄像机)将剔除细节。 | Detail Density | 给定单位面积内的细节/草对象数量。将此值设置得较低可以减少渲染开销。 | Tree Distance | 超过此距离(相对于摄像机)将剔除树。 | Billboard Start | 位于此距离(相对于摄像机)的 3D 树对象将由公告牌图像取代。 | Fade Length | 树在 3D 对象和公告牌之间过渡的距离。 | Max Mesh Trees | 表示为实体 3D 网格的可见树的最大数量。超出此限制时,树将被公告牌取代。 |
1.1.5.3 Wind Setting for Grass(On Terrain Data)
地形中的草被风吹过时的参数: 
属性 | 功能 |
---|
Speed | 风吹过草时的速度。 | Size | 风吹过草地时出现的波纹大小。 | Bending | 草对象被风吹弯的程度。 | Grass Tint | 应用于草对象的整体颜色色调。 |
1.1.5.4 Mesh Resolution(On Terrain Data)
修改地形中Mesh的参数: 
属性 | 功能 |
---|
Terrain Width | 地形游戏对象在 X 轴上的大小(以世界单位表示)。 | Terrain Length | 地形游戏对象在 Z 轴上的大小(以世界单位表示)。 | Terrain Height | 最低可能高度贴图值与最高值之间的 Y 坐标差异(以世界单位表示)。 | Detail Resolution Per Patch | 单个面片(网格)中的单元格数量。该值经过平方后形成单元格网格,且必须是细节分辨率的除数。 | Detail Resolution | 可用于将细节放置到地形区块上的单元数。此值在经过平方后生成单元格网格。 |
1.1.5.5 Holes Settings(On Terrain Data)
编辑地形中的洞,如果勾选此选项框,则在运行时期间,Unity 会在播放器中将 Terrain Holes Texture 压缩为 DXT1 图形格式。如果不选中此框,则 Unity 不会压缩纹理。 
1.1.5.6 Texture Resolutions(On Terrain Data)
此选项卡用于修改地形数据中纹理的分辨率,或导入、导出地形高度图。在更改此选项卡的属性时,Editor 会将地形区块的内容调整为指定的新大小,这可能会影响内容的质量。 
属性 | 功能 |
---|
Heightmap Resolution | 地形高度贴图的像素分辨率。此值必须是 2 的幂再加 1,例如 513,即 512 + 1。 | Control Texture Resolution | 控制不同地形纹理之间混合的“泼溅贴图”(splatmap) 的分辨率。 | Base Texture Resolution | 在地形上使用的复合纹理从大于 Basemap Distance 的距离查看时的分辨率。 | Import Raw按钮 | 导入RAW 灰度格式的图像文件作为地形的高度贴图。 | Export Raw按钮 | 将地形的高度贴图导出为 RAW 灰度格式的图像文件。可在第三方地形编辑工具(如 Bryce)中创建 RAW 格式文件,然后可在 Photoshop 中打开、编辑和保存这些文件。因此可在 Unity 之外以复杂的方式生成和编辑地形。 |
1.1.5.7 Lighting
在此选项卡可修改光照参数: 
属性 | 功能 |
---|
Contribute Global Illumination | 启用此复选框可向 Unity 指示地形影响全局光照计算。启用此属性时,将显示 Lightmapping 属性。 | Receive Global Illumination | 只有启用了上面的 Contribute Global Illumination 后,才能配置此选项。如果未启用 Contribute Global Illumination,则地形会注册为非静态,并从光照探针接收全局光照。 |
1.1.5.8 Lightmapping(光照贴图)

属性 | 功能 |
---|
Scale in Lightmap | 指定对象的 UV 在光照贴图中的相对大小。如果将此值设置为零,则对象不进行光照贴图,但仍然会影响场景中其他对象的光照。大于 1.0 的值会增加用于此游戏对象的像素数(光照贴图分辨率),而小于 1.0 的值会减小该像素数。 | Lightmap Parameters | 调整高级参数,这些参数会影响使用全局光照为对象生成光照贴图的过程。 | Rendering Layer Mask | 确定该地形所在的渲染层。使用可编程渲染管线时,可以额外指定一个特定于渲染的层遮罩。这将根据渲染器具有的遮罩和传递给 DrawRenderers 命令的遮罩筛选渲染器。 |
1.2 自定义画笔
可根据需要创建具有独特形状或特定参数的自定义画笔。例如,使用特定地质特征的高度贴图纹理来定义画笔,然后使用地形图章 (Stamp Terrain) 工具将该特征放置在地形上。 创建新画笔:
- 单击 Terrain 的Inspector 窗口中的 New Brush 按钮后选择一个纹理以定义新画笔的形状,然后在 Brush 的Inspector 面板中调整 Falloff 和 Radius Scale 值。
 - 或者,在 Project 窗口中单击鼠标右键,然后选择 Create > Brush 以创建新画笔。默认画笔显示一个由白色 Mask Texture、Falloff 曲线和值为 1 的 Radius Scale 定义的简单圆圈。
 使用 Brush Inspector 可更改这些值,或设置纹理以定义画笔的形状。还可以使用 Remap 滑动条和 Invert Remap Range 选项来进一步修改画笔纹理的灰度值。
画笔设置
属性 | 设置 |
---|
Mask Texture | 定义画笔的形状和强度。在项目中选择纹理,系统将根据纹理创建灰度遮罩。如果所选纹理具有多个颜色通道,则画笔将使用红色通道作为其源。 | Remap | 应用衰减 (Falloff) 曲线后重新映射画笔遮罩的灰度值。Editor 将画笔遮罩中的黑色值重新映射到您使用滑动条左侧选择的值,并将画笔遮罩中的白色值重新映射到使用滑动条右侧选择的值。 | Invert Remap Range | 反转 Remap 滑动条的左侧和右侧,本质上是反转整个遮罩的值。 | Falloff | 定义以圆形方式影响画笔强度的曲线。单击衰减 (Falloff) 曲线可打开 Unity 曲线编辑器 (Curve Editor),然后可以在其中编辑该曲线以创建平滑淡入淡出和锐利边缘等各种效果。 | Radius Scale | 影响衰减曲线的比例。使用此选项可增大或减小曲线的半径。 |
1.3 Terrain Collider组件

- Material
填充物理材质,用来设置地形的物理特性 - Terrain Data
地形数据存储文件 - Enable Tree Colliders
是否打开地形中树的Collider,如果地形中的树本身包含Collider打开此选项才会有效。
2 导入和导出高度贴图
影响高度的地形工具(如 Raise or Lower Terrain 和 Set Height)使用称为高度贴图的灰度纹理。Unity 将地形上每个点的高度表示为矩形数组中的值。此数组用灰度高度贴图来表示。高度贴图内置于地形中,并且高度贴图中存储的值用于定义地形上每个点或顶点的高度。  可在 Unity Editor 中导入和导出高度贴图。要使用真实世界的高度数据来复制地标(例如珠穆朗玛峰)或在外部编辑器(例如 PS)中处理高度贴图图像时,此功能很有用。还可以使用 3D 建模应用程序(例如 Houdini 和 World Machine)来生成地形,然后将地形作为高度贴图导入到 Unity 中。
最好将高度贴图存储为 RAW 文件。RAW 文件使用与大多数图像和景观编辑器兼容的 16 位灰度格式。Unity Editor 可以为地形导入和导出 RAW 高度贴图文件。
2.1 导入高度贴图
可使用导入高度贴图的方式生成地形(例如已有高度图的珠穆朗玛峰等)。选中地形Terrain,在Inspector面板中选择 Terrain 组件,然后单击 Terrain Settings 按钮(工具栏中的齿轮图标)。  在Texture Resolutions中选择Import Raw HeightMap,可将有定义的高度贴图导入地形数据中。 高度贴图参数设置 
-
Depth 确定 Unity 在导入或导出的高度贴图中每个像素使用的位数。 Bit 16:使用 16 位(2 个字节) Bit 8:使用 8 位(1 个字节) -
Resolution 所导入的高度贴图的纹理分辨率(宽度和高度)。 -
Byte Order 确定 Unity 如何为导入或导出的高度贴图中的每个像素进行字节排序。这主要适用于 16 位深度高度贴图,与平台有关。 -
Flip Vertically 确定 Unity 是否沿 x 轴垂直翻转导出的高度贴图。 -
Terrain Size 将导入高度贴图应用到的地形的大小。
2.2 导出高度贴图
在Texture Resolutions中选择Export Raw HeightMap,可将选中地形的高度信息导出为.raw文件。参数效果与导入相同。 
|