文章目录
- 前言
- 一、Terrain Toolbox的使用
- 安装Terrain Tools
- 下载导入资产样本
- 打开选择Terrain Toolbox
- 创建地形
- 切割地形
- 创建不同分组的地形
- terrain group设置
- 第一个`pixel error`是LOD精度,值越小精度越高,当然性能开销也就越大
- 第二个`base map distance`是指在多近的距离上使用原解析度的terrain贴图,超过这个距离看terrain的话unity就会压缩贴图的精度
- 第三个`draw instance`,勾选了的话就会为这个terrain group启用实例化渲染
- 第四个`material override`是让我们指定一个材质来渲染terrain
- 第五个`heightmap resolution`是高度图的精度,高度图的精度越大,我们生成成软的模型顶点数量就越多
- 通过高度图生成terrain
- height remap
- Flip Axis翻转高度图
- Options(选项)
- TerrainData Directory
- enable GUID
- enable auto generate lighting(自动进行光照烘焙)
- 二、地形Terrain的绘制和基础使用介绍
- 创建相邻的Terrain
- 开始绘制,升降地表及笔刷和笔触的设置
- 我们先来看看这个rise or lower terrain,也就是调整地形的高低
- 快捷键
- 设置地形高度
- 雕刻工具Sculpt
- bridge制作路桥的
- Clone复制地形
- nose噪声
- Terrace坡度变成梯田
- 参考
- 完结
前言
本文算是基于之前的地形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
一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~