-
Notifications
You must be signed in to change notification settings - Fork 4
Description
一、什么是地形
地形是地表各种各样的形态,具体指地表以上分布的固定性物体共同呈现出的高低起伏的各种状态。Unity中的地形还包括地面上的树木、草地等物体。
Unity中的地形系统提供了创建地形的一系列高效的工具,并且地形系统在运行时为渲染效率做了高度的优化。
二、如何制作地形
- 创建地形:创建地形可以通过菜单栏GameObject › 3D Object › Terrain 进行创建,也可以通过Hierarchy的右键菜单创建。创建地形的同时,你的Project中会多出一个Terrain的资源,因为Terrain中包含了大量数据,Unity并没有把Terrain的信息直接保存在Scene场景文件中。

在场景中创建Terrain的同时创建了一个New Terrain的资源文件
Project中的这个资源文件默认会放在Assets目录下,默认文件名是New Terrain。你可以根据需要重命名并且按照你的目录组织,将这个文件移动到对应的目录下。
刚创建出来的时候,地形并且没有任何颜色和贴图,所以就是一个白色的大平面。

在Hierarchy中选中地形,在Inspector中会显示地形编辑工具,提供了多种工具来创建地形的细节。

你也能看到地形默认设置成了Static的物体,并且Scale In Lightmap的值很低,Lightmap Parameters用的是默认的VeryLowResolution(非常低的分辨率),都是为了优化光照。 - 编辑地形

新场景的Lighting窗口的Auto Generate是默认勾选的,在编辑地形时会自动烘焙光影,会造成编辑器的卡顿,可以将Auto Generate关掉。
快捷键
• F1-F6可以选择工具1-6
• 逗号(,)和句号(.)可以切换画刷
• Shift+逗号(,)和Shift+句号(.)可以在不同的物体之间切换。
• F,选中地形时,F键和之前(聚焦所选的物体)有一些区别,Scene窗口的相机会拉近到光标所在地形上的位置。
2.1 地面升降工具

左键点击可以让地面上升,Shift+左键点击可以让地面下降。
- Brushes 画刷工具,类似绘图工具中不同类型的画刷。其实刷地形和绘图类似,都是在一个平面上绘制出细节。
- Brush Size 画刷的大小。
- Opacity 不透明度。不透明度决定了点击一下地形变化的程度。
2.2 高度绘制工具

使用高度绘制工具的方式和第1个升降工具类似,但是多了一个属性Height。你可以手动设置Height的值,再去绘制时,地形上高于这个高度的地方会下降,低于这个高度的地方会上升,直到绘制到这个高度为止。
Flatten按钮可以将整个地形设置为Height的高度。注意一定要小心,点击完这个意味着你绘制好的高低起伏都会变为平地。
默认创建出来的地形高度为0,这时地形是没办法下降的。比如你想挖个湖泊或者河道是不行的。需要先将地形的高度提高才行,可以通过升降工具将提高或者通过Flatten按钮一键将整个地形提高。
一般在绘制地形之前,会先设置地形的整体高度到非0的值。
2.3 平滑工具

平滑工具的用法和前两个工具类似,作用是将高度进行平滑处理。
在使用前两个工具绘制地形时可能出现特别突兀的地方,但是使用前两个工具又没办法很好的进行修改,这就需要用到平滑工具。
2.4 贴图绘制工具

一个地形地表的颜色、纹理都需要靠贴图绘制工具来绘制,可以让地面看起来更真实。
由于地形尺寸很大,通常做法是使用无缝贴图(可以想象成瓷砖,瓷砖的图案边缘是有联系的,将两个瓷砖拼起来看不出来缝隙)重复绘制到地面上,这种重复从角色的高度觉察不出来。
第一张贴图会作为整个地形的背景贴图,你可以在背景的基础上绘制其他贴图进行混合。比如背景贴图是草地,你还可以在不同的区域绘制沙地、岩石、泥地等等。贴图绘制时可以设置不同的透明度,用来和其他贴图混合。

新创建的地形上是没有关联贴图的,我们需要手动添加。点击Edit Textures › Add Texture会弹出Add Terrain Texture窗口。

贴图默认使用的是Unity内置的Standard Shader,但是也可以在地形设置中修改,不同的Shader对应添加地形贴图时的贴图种类也不同。
Size是以米为单位的,如果设置为15,15即代表这一张贴图用于15x15的区域大小。
Offset也是以米为单位,可以设置贴图的偏移量。
其中Albedo贴图是必选的,法线贴图可以根据需要设置。设置后点击Add按钮可以将贴图添加。
Unity的Standard Assets中的Environment包中有几种地形贴图可以使用,Asset Store中也有很多免费和付费的地形。

第一张贴图会作为整个地形的背景图,你会看到整个地形都会贴上这个贴图。你可以继续添加其他贴图,添加后选中贴图在地形上绘制即可,和前面绘制高度的操作类似。

Opacity 不透明度。作用是每绘制一次,该区域贴图增加的不透明度。
Target Strength 指定贴图的最大不透明度。即使画刷重复在一个地方绘制,如果不透明度没有设置到100,该贴图的不透明度也不会到100。

Target Strengh为0.5和1时的区别