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

文章目录

  • 前言
  • 一、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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/430067.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】TCP和UDP

一、TCP/UDP对比 1.共同点: 都是工作在TCP/IP体系结构的传输层的协议 工作主要都是把端口号往原始数据封装 在 TCP 协议中,原始数据指的是应用程序产生的需要通过网络进行传输的数据。这些数据可以是各种类型的信息,例如文本、图像、音频、…

200Kg大载重多旋翼无人机应用前景详解

大载重多旋翼无人机是一类具备高载重能力和长航时特点的无人机系统,它们融合了多旋翼无人机的灵活性与大载重无人机的实用性,广泛应用于多个领域。 1. 航拍与影视制作 在航拍与影视制作领域,200Kg大载重多旋翼无人机凭借其出色的稳定性和载重…

mysql时间戳格式化yyyy-mm-dd

格式化到 年月日 # 将时间换成列名就行;当前是秒级时间戳,如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

动手学深度学习(四)卷积神经网络-下

全连接层存在的问题:参数过大,计算成本过高。 一、网络中的网络(NiN) 1、NiN块 ①NiN块的结构 NiN串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。这种由卷积层和“全连接”层构成的小网络就是NiN块。 &#…

【学习笔记】 AD24中元器件重叠系统不报错的解决方案(消除报错)

【学习笔记】 AD24中PCB设计元器件重叠后系统不报错的解决方案(如何主动屏蔽报错) 一、Component Clearance未开启使能的解决方案二、最小水平间距设置错误的解决方案三、未开启设计规则检查的解决方案四、设计规则检查中 “在线”和“批量”的含义五、为…

Matplotlib绘制热力图

热力图(Heatmap)是一种使用颜色来表示数值强度的数据可视化工具。它常用于以下场景: 热力图的适用场景 数据的相关性分析:在统计学中,热力图常用于展示变量之间的相关性,尤其是当数据量较大时,…

Vue(14)——组合式API①

setup 特点&#xff1a;执行实际比beforeCreate还要早&#xff0c;并且获取不到this <script> export default{setup(){console.log(setup函数);},beforeCreate(){console.log(beforeCreate函数);} } </script> 在setup函数中提供的数据和方法&#xff0c;想要在…

普通查询+聚合函数的使用(8个例子,数值和字符串的比较)

目录 回顾普通查询聚合函数的使用 表数据 例子1 例子2 例子3 ​​​​​​​例子4 例子5 例子6 例子7(数值和字符串的比较) 例子8 回顾普通查询聚合函数的使用 之前我们介绍过聚合函数 --mysql分组查询 -- 聚合函数(介绍,使用),group by使用,分组聚合统计(使用,havi…

【Unity杂谈】iOS 18中文字体显示问题的调查

一、问题现象 最近苹果iOS 18系统正式版推送&#xff0c;周围升级系统的同事越来越多&#xff0c;有些同事发现&#xff0c;iOS 18上很多游戏&#xff08;尤其是海外游戏&#xff09;的中文版&#xff0c;显示的字很奇怪&#xff0c;就像一些字被“吞掉了”&#xff0c;无法显示…

【ArcGIS微课1000例】0123:数据库中要素类批量转为shapefile

除了ArcGIS之外的其他GIS平台,想要打开ArcGIS数据库,可能无法直接打开,为了便于使用shp,建议直接将数据库中要素类批量转为shapefile。 文章目录 一、连接至数据库二、要素批量转shp一、连接至数据库 打开ArcMap,或者打开ArcCatalog,找到数据库连接,如下图: 数据库为个…

人工智能的前景与未来就业市场:机遇、挑战与社会影响

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的方方面面&#xff0c;它不仅引领着技术革新的浪潮&#xff0c;更在无声中重塑着我们的就业市场和社会结构。站在这个时代的交汇点上&#xff0c;我们不禁要问&#xff1a;人工智能将…

Vue2学习笔记(02条件渲染 、监视数据的原理)

1、v-if和v-show的区别 2、Vue监视数据的原理

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长&#xff0c;运维人员每天都要进行大量的维护操作&#xff0c;按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

C++编译环境(IDE)推荐及安装

IDE是什么 嗨嗨嗨&#xff0c;我又来水博文了 今天来给大家推荐几款好用的IDE IDE是集成开发环境&#xff08;Integrated Development Environment&#xff09;的缩写&#xff0c;是一种软件应用程序&#xff0c;提供了用于软件开发的各种工具和功能&#xff0c;包括代码编辑…

刚刚,Stable Diffusion 2024升级,最强Ai绘画整合包、部署教程(解压即用)

2024Ai技术大爆发的元年 目前两款Ai神器大火 一款是大名鼎鼎的Chat GPT 另外一款—Stable Diffusion 堪称全球最强Ai绘画工具 Stable Diffusion Ai绘画2024版本更新啦&#xff01; 从4.8.7更新至**4.9版本&#xff01;**更新优化和大模型增加&#xff0c;无需安装&#xf…

在SpringCloud中实现服务间链路追踪

在微服务架构中&#xff0c;由于系统的复杂性和多样性&#xff0c;往往会涉及到多个服务之间的调用。当一个请求经过多个服务时&#xff0c;如果出现问题&#xff0c;我们希望能够快速定位问题所在。这就需要引入链路追踪机制&#xff0c;帮助我们定位问题。 Spring Cloud为我们…

UPPAL安装

UPPAL安装 下载安装UPPAAL 在UPPAAL官网上下载所需版本的UPPAAL&#xff1a;https://uppaal.org/downloads/#uppaal5.0 此处下载Windows UPPAAL5.0&#xff1a; 下载完成后&#xff0c;双击.exe文件&#xff0c;一路点击“下一步”&#xff0c;安装完成&#xff0c;并关闭&am…

AJAX 入门 day3 XMLHttpRequest、Promise对象、自己封装简单版的axios

目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…

云和恩墨携手华为,发布zCloud数据库备份管理一体机并宣布共建数据保护生态...

为期三天的第九届华为全联接大会&#xff08;HUAWEI CONNECT 2024&#xff09;于9月19日在上海世博中心&展览馆盛大召开。20日下午&#xff0c;一场围绕“全场景数据保护&#xff0c;护航数智化时代”的专题论坛举办&#xff0c;云和恩墨受邀参加&#xff0c;并期待与华为合…

Apache APISIX学习(1):介绍、docker启动

一、介绍 Apache APISIX 是一个动态、实时、高性能的 API 网关&#xff0c; 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。你可以把 Apache APISIX 当做流量入口&#xff0c;来处理所有的业务数据&#xff0c;包括动态路由、动态上游…