记录学习Terrain过程
一、前期准备
本次学习基于以下两个B站视频进行学习整理
使用 unity Terrain Tools 创建漂亮的地形_哔哩哔哩_bilibili
【为游戏制作户外场景】保姆级Unity Terrain教程 01: 安装Terrain Toolbox_单机游戏热门视频 (bilibili.com)
1.1 Terrain Tools
Unity自带Terrain Editor模块,创建Terrain可在Hierarchy面板中右键→3D Object→Terrain,但是如若想有更好的控制并创造更好的地形效果,Unity 2019.1以上可在Package Manager中导入Terrain Tools包。
导入Terrain Tools前,Paint Terrain 子模块仅有如下几个子功能
当导入Terrain Tools包后,相应面板功能增多。
1.2 Terrain Sample Asset Pack
地形工具样本资源包 (Terrain Tools Sample Asset Pack) 包含一系列资源,可帮助有兴趣利用 Unity 不断扩大的地形系统的用户进行开发。其中包括 35 种地形笔刷和多种优质地形功能,如非常适合冲压的峡谷、山脊和山脉。还有 6 种具有高质量 PBR 即用纹理的地形层,可将泥土、苔藓、岩石、沙子、碎石堆和雪绘制到地形上。
资源导入后,整个资源按文件夹分类。文件中含有一份PDF的ReadMe文档,用于资源的学习。
Prefab为花草树木的预制体,Material 和Model主要存放Prefab用到的模型网格和材质球。Terrain Brush为在手动Paint Terrain时会用到的笔刷。Terrain Layers中存放已经设置好的.terrain layer文件,每个layer中包含了用到的Diffuse、Normal、Mask贴图。Textures文件夹则包含了整个资源中用到的材质如花草树木、Terrain layer、高度贴图等用到的所有贴图文件。
该资源包会有一些依赖,例如Shader Gragph,当导入后可能会有Error报错,可在Package Manager中手动添加。
二、使用过程
2.1 Terrain Toolbox
在Window →Terrain→ Terrain Toolbox中打开地形工具箱面板,将面板吸附至右侧面板
Create New Terrain 栏目下个人比较关心的几个参数
1.Grouping ID
当勾选下方Replace Terrains时,每次点击Create,相同Grouping ID的会被新生成的覆盖,只有改变Grouping ID时才会在Hierarchy栏中新生成一个Object。
2.Import Heightmap
利用Texture →Hightmaps文件夹中的Hightmap直接生成地形,Hightmap为单通道的灰度图,越白的位置表明地形高度越高,因为是单通道图所以在Unity中仅占用R通道显示为红色。
2.Hightmap Resolution
这个指生成Terrain的单边顶点数,将窗口的Draw Mode 切换成WireFrame可以看出这个区别,当Resolution为33时,绘制地形过程中单边顶点数不会超过33,而切换为129时单边细分更多,地图也能显示出更多细节。图中展示的是利用Height map直接生成地形时分辨率的影响,对于用笔刷画地形也同样,当此处设置的分辨率较小时,笔刷Raise or Lower Terrain所绘制出的地形像素化严重,因此需要提前确定好Resolution
2.2 Terrain组件五个基本工具
1.Creatro Neighbor Terrains
生成已有Terrain的相邻块
2.Paint Terrain
a.Raise or Lower Terrain
最常用的Raise or Lower Terrain,笔刷除默认外下载的资源包中Brush文件夹中也提供不少
相比于未加载Terrain Tools,此时面板中多了对于笔刷强度(Strength)、大小(Size)、旋转(Rotation)、间隔(Spacing)等的详细控制,每个控制下有Jitter(抖动)来实现该项的随机性控制。
快捷键强度(A)、大小(S)、旋转(D)、间隔(Spacing)、平滑(Shift,按住),如下所示为平滑后、反向(Ctrl,按住)。
b.Sculpt→Noise
切换到Sculpt→Noise,选取噪声的模式,可在Terrain上绘制一些噪声细节,效果如图,可以调节笔刷强度控制其噪声强度效果。
c.Paint Texture
在Terrain Layer文件夹中选择相应的layer文件,每个Layer主要包含三张贴图,分别为Diffuse、Normal以及Mask。同时注意调整Tilling Size,这样才能在地图上看到Texture相应的细节。对于Mask贴图,RGBA中分别包含了不同的信息。
3. Paint Tree
种树可以通过两种方式,方式一:Mass Place Trees,通过给定树的数量进行自动分布;方式二:通过笔刷在需要的地方绘制。
但项目中下载的Terrain Sample Asset Pack中并没有给出树木的预制体,草类的预制体因为material 中shader不符无法在Paint Tree模块使用。
通过导入下载的Terrain Assest Package,里面有预制好的14种树木,
通过Mass Place Tree放置后如下
当添加完成后可以通过笔刷在需要的位置添加,在不需要的位置进行减去操作。
4. Paint Details
细节可以通过两种方式绘制,一种为贴图, 一种为网格。不仅可以补充草的细节,也可以通过Detail Mesh导入一些岩石之类的物体。同时注意修改镜头距离和草的尺寸,否则无法看到这些细节的生成