【推荐100个unity插件之26】Unity 地形Terrain的绘制和使用进阶内容 —— Terrain Tools和 Terrain Toolbox的使用

前言

本文算是基于之前的地形Terrain绘制和使用的进阶内容和补充。

【2023Unity游戏开发教程】零基础带你从小白到超神04——地形Terrain的绘制和基础使用介绍

一、Terrain Toolbox的使用

安装Terrain Tools

在这里插入图片描述

下载导入资产样本

从资产商店入库资产样本
在这里插入图片描述
在这里插入图片描述
下载导入Terrain Sample Asset Pack资产样本
在这里插入图片描述

打开选择Terrain Toolbox

在这里插入图片描述

创建地形

在这里插入图片描述
Tiles X Axis和Tiles Z Axis在x和z方向上分别被划分为多少个独立的terrain,勾选Replace Terrains,保证每次创建地形会先删除旧的地形
在这里插入图片描述

切割地形

如果像切割地形,除了修改前面的Tiles X Axis和Tiles Z Axis值,还可以通过Split切割地形
在这里插入图片描述

创建不同分组的地形

修改分组id
在这里插入图片描述

terrain group设置

下面这里可以对一个terrain group进行单独的设置
在这里插入图片描述

第一个pixel error是LOD精度,值越小精度越高,当然性能开销也就越大

那么让我们把镜头拉近一点
把pixel error的值设置为1,生成一下,可以看到Terrain在远近的外观下表现都很好
在这里插入图片描述

我们再把它的值设置为200,生成一下,可以看到此时远处的Terrain的模型已经面目全非了
在这里插入图片描述
总结:如果你希望玩家在远距离上观察Terrain时,获得较好的观感,可以将pixel error的值设置的小一点,但这样也会提高性能的开销

第二个base map distance是指在多近的距离上使用原解析度的terrain贴图,超过这个距离看terrain的话unity就会压缩贴图的精度

大家在很多游戏里应该见过,越远的地方各种模型和地表的精度就越差,3D模型般使用LOD系统来控制不同距离上的模型和贴图精度,大家可以理解这里的pixel error和base map distance就是terrain的LOD系统

在这里插入图片描述

第三个draw instance,勾选了的话就会为这个terrain group启用实例化渲染

在这里插入图片描述

第四个material override是让我们指定一个材质来渲染terrain

第五个heightmap resolution是高度图的精度,高度图的精度越大,我们生成成软的模型顶点数量就越多

在Terrain最终完成后会形成一个形状复杂的3D网格(Mesh)
在场景视图的这个位置选择wireframe观察网格
在这里插入图片描述
如果我们希望Terrain3D网格大小是33X33,那么我们就在这里选择33,选择不导入高度图,我们点击生成看
在这里插入图片描述

大家可以数一下,每个边的顶点其实并不是33,而是17,这是unity的一种优化,当地形没有起伏变化的时候,这些相邻的顶点之间的高度没有区别,那么unity就会压缩Terrain的3D网格精度,也就是减少顶点的数量

我们可以试着用高度图来生成terrain,可以看到现在每条边都有33个顶点了
在这里插入图片描述

通过高度图生成terrain

在前面我们生成的地图都是纯平的,其实unity也可以通过高度图直接生成复杂的地表,把这里的import heightmap勾选上,这里的第一个global(全局)表示这次生成的整个terrain group下的所有terrain会合在一起使用同一个高度图,我们就选择这一个
在这里插入图片描述

选择use RAW的话可以使用无损格式的图片,我们不需要,点击这里可以选择一张高度图
在这里插入图片描述

理论上单独的高度图应该是一张单通道的灰度图
不同于红绿蓝的RBG三通道符以及红绿蓝透明的RGBA四通道图
单通道的灰度图只有灰色的深浅变化
图片上每个像素的灰色深浅由唯一的那个通道上的对应值来表示
这个值越大那么这个像素就越白,值越小这个像素就越黑
unity会读取图片里每个像素的值,然后把这些值换算为terrain模型中每个顶点应该有的高度
像这里白色的纹路就应该代表了一座绵延的山脉
在这里插入图片描述

height remap

选择完图片后要选择这里的height remap,
这里的min的意思是高度图中最黑的部分,也就是像素值为0的部分,在terrain上应该表现为多高
而max的意思就是最白的地方,对于8-bt位图来说像素值就是255的地方应该表现为多高

在这里插入图片描述
我们先设置为0到600,然后点击这里的create生成一下,可以看到生成的有点太夸张了
在这里插入图片描述
我们再设置height remap为100到200,然后点击这里的create生成一下,现在就正常多了
在这里插入图片描述

Flip Axis翻转高度图

下面Flip Axis这里是翻转高度图,我们可以垂直翻转或者水平翻转高度图,如果报错,记得把图片的可读写给勾选上
在这里插入图片描述
可以看到高度图和地形都发生了对应的翻转
在这里插入图片描述

Options(选项)

在这里插入图片描述

TerrainData Directory

第一个是Terrain资源文件的存放路径
我们每生成一个Terrain,它的数据都会以资源文件的形式保存下来
下面这些就是Terrain的资源文件
在这里插入图片描述

enable GUID

下面这个enable GUID的意思是为每个Terrain取一个不会重复的名字
这里的GUD指的是“全局唯一标识符”
我们在Terrain的名字后面看到的这一串字符就是GUID
它们是系统自动生成的,绝对不会重复
在这里插入图片描述

enable auto generate lighting(自动进行光照烘焙)

就是自动进行光照烘焙,最好不要打开,这会严重影响你的电脑性能

二、地形Terrain的绘制和基础使用介绍

参考:【2023Unity游戏开发教程】零基础带你从小白到超神04——地形Terrain的绘制和基础使用介绍

在这里插入图片描述

在Terrain组件的最上面,我们可以看见五个按钮
在这里插入图片描述
它们分别对应Terrain的五个主要工具
第一个是相邻Terrain的生成工具
第二个是Terrain的绘制工具
这里的绘制指的是地形的雕刻和地表纹理绘制
第三个是树木的绘制工具
第四个是细节绘制工具,比如草丛,石块之类的都属于石快之类的都属于细节绘制
第五个是Terrain的基本设置

创建相邻的Terrain

在场景视图里点选Terrain周围的浅色方框,可以创建相邻的Terrain
在这里插入图片描述

勾选第一个fill height map using neighbors
会用已经存在的Terrain调整高度来影响新生成的Terrain调整高度
不勾选的话,新生成的车轮会被放置在高度为0的位置地表为纯平
在这里插入图片描述
在勾选了它之后下面会有两种高度的连接方式
第一种clamp(钳制),新Terrain会参考相Terrain“连接线”位置的高度
然后以此为基准设置自己“连接线”处的高度
离连接线越远的地方受相邻Terrain影响的程度就越低
在这里插入图片描述

第二种mirror,新Terrain会参考相邻Terrain的整体高度,然后镜像一份
和上面相同,离连接线越远的地方受影响的程度越低
在这里插入图片描述

开始绘制,升降地表及笔刷和笔触的设置

我们先来看看这个rise or lower terrain,也就是调整地形的高低

我们选择完之后,可以在这里看见很多的笔刷
其中有一些资源是unity terrain toolbox的示例资源包里提供的
在这里插入图片描述

我们选中笔刷之后就可以在Terrain上按住鼠标左键滑动调整高度了
在这里插入图片描述

在下面的stroke这里可以调整笔刷的笔刷
在brush strength这里我们可以调整笔刷的强度
Brush Size笔刷的大小
Brush Rotation笔刷的角度

这里的min和max是用来设置这个滑动条的最大和最小值
下面的jitter可以为强度绘制提供一定的随机量
在这里插入图片描述
Brush Spacing 绘制间隔,在笔刷移动多远的距离才可以绘制
在这里插入图片描述

Brush Scatter 绘制添加一定的偏移量
在这里插入图片描述

快捷键

通过键盘上的逗号和句号键可以在笔刷间进行切换
在这里插入图片描述
按住“A”键左右移动鼠标,可以调整笔刷的强度
在这里插入图片描述

按住“S”键左右移动鼠标可以调整笔刷的大小
在这里插入图片描述
按住“D”键转动鼠标可以调整笔刷的角度
在这里插入图片描述
按住ctrl键可以下降高度
在这里插入图片描述
按住shift平滑地表
在这里插入图片描述

设置地形高度

可以通过设置Terran Toolbox的Height Remap实现
在这里插入图片描述
也可以通过Set Height绘制,展平瓦片就是近对当前瓦片设置高度,Flatten all就是设置所有瓦片的高度
在这里插入图片描述

雕刻工具Sculpt

在这里插入图片描述

bridge制作路桥的

按住Ctrl点击鼠标左键可以选择bridge的起点,松开鼠标左键点击选择oridge的终点
它会在两点间拉出一条明显的通道
再次点击鼠标左键可以拉出另一条通道
在这里插入图片描述
需要更换bridg的起点的话就再次按住control点击鼠标左键
在这里插入图片描述
这条通道的参数可以在下面的bridge tool controls这里配置,我们可以在这里调整宽度曲线高度曲线、力度曲线和水平偏移曲线(不过我试了是没有效果的,原因未知,可能是unity的bug)

Clone复制地形

选择一个笔刷,看提示按住Ctrl点击鼠标左键选择你要复制的区域,松开Ctl再使用鼠标左键就可以复制这块区域了
在这里插入图片描述
要注意的是下面这里的clone brush controls
在这里插入图片描述

  • 第一个是让你选择要复制的是地图上的纹理还是高度
    在这里插入图片描述

  • 下面这里有四种克隆模式可以选择
    在这里插入图片描述
    第一个follow always,.被复制的区域会跟随复制区域移动,按住鼠标左键可以复制出一片连续的区域
    第三个snap,被复制的区域也会跟随复制区域移动,但是在复制结束后松开鼠标左键时,被复制区域的笔刷会回到原始地点
    第三个follow on paint,正常移动鼠标时被复制区域是不会移动的,只有在按下鼠标左键实际开始复制时被复制的区域才会移动
    第四个fiⅸed被复制的区域永远不动

  • height offset就是高度偏移,这里如果是正值就会把复制出的区域拉高,负值就会降低
    在这里插入图片描述

nose噪声

这是一个比较常用的功能,它会给你的笔刷增加一定的随机性
可以看到噪音其实也是一张灰度图,使用鼠标滚轮可以放大或者缩小这张噪声灰度图
在这里插入图片描述
下面的属性这里,noise type选择Perlin就好
如果你觉得这里的Perlin噪声还不够自然的话,可以选择这里的Perlin分形噪声(Fbm),通过修改Octives(倍率)来增加不同频率的噪声
在这里插入图片描述

可以看出其实这里Perlin分形噪声的默认值就可以提供足够自然的地表变化了
在这里插入图片描述

Terrace坡度变成梯田

在这里插入图片描述
在terrace controls这里第一项是梯田的层级数量数量越高层级越密集
第二个jitter是为层级数量提供一定的抖动
第三个是内倒角的权重,数值越高内倒角就越接近于原始地貌
当数值为0时,内角这里近乎垂直,并没有内倒角
在这里插入图片描述

数值为1,这里出现了很明显的内倒角,而且这个内倒角的角度与原本山体的角度基本一致

在这里插入图片描述

参考

https://www.bilibili.com/video/BV1fM4y1c72Z/

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36303853/article/details/141286382