第六章 3D地形搭建(上)

news2025/1/14 4:21:39

Unity 提供了多种工具来创建环境特征,例如地形和植被。要在场景中添加地形 (Terrain) 游戏对象,请从菜单中选择 GameObject > 3D Object > Terrain。此过程也会在 Project 视图中添加相应的地形资源。默认情况,场景中出现一个大型平坦的平面。地形的 Inspector 窗口提供了许多工具,可使用这些工具创建细节化的景观特征。

接下来,我们新建一个名称为TerrainDemo的工程,然后添加Terrain游戏对象。

虽然看起来就是一个平面,但是它对应的Inspector检视视图中属性内容是不一样的。

我们可以看到这个Terrain游戏对象一共有三个组件:TransformTerrainTerrain Collider。其中Transform组件不再介绍,Terrain Collider用于碰撞,暂且不介绍,主要是Terrain组件。该组件下方有五个工具按钮,如下所示:

他们从左到右依次是:Create Neighbor Terrains(创建周边地形),Paint Terrain(绘制地形),Paint Trees(绘制树木),Paint Details(绘制植被)以及最后一个Terrain Settings(地形设置)。我们首先来看最后一个Terrain Settings(地形设置)选项按钮。在这里有一个很重要的参数就是地形的尺寸和高度参数设置。如下图所示:

默认情况下,创建的地形大小为1000*1000米,高度为600米。

接下来我们介绍Create Neighbor Terrains工具按钮,其实就是创建新的地形平面,然后再平面上绘制新的地形,这样做的目的就是通过许多的平面对象来拼凑成一张更大的地形地图。当然,我们也可以设置当前地形平面的大小。但是,我们尽量不要创建大尺寸的地形平面。因为大部分的大地图都是由若干的小地图拼接而成的。这个很容易理解,因为根据当前玩家位置来绘制周围地形地图的性能消耗肯定要小于绘制整个游戏地形地图的性能消耗。

接下来,我们介绍Paint Terrain(绘制地形)这个工具的使用。

这个工具很强大,我们注意到“Stamp Terrain”是一个下拉选择框,其选项如下:

Raise or Lower Terrain   使用画笔工具绘制地形高度。

Paint Holes                    隐藏地形的某些部分(例如山洞等等)。

Paint Texture                  应用表面纹理(例如草皮等等)。

Set Height                      使用数值来调整地形高度。

Smooth Height               使用平滑的方式来改变地形高度(主要绘制地形的细节)。

Stamp Terrain                在当前高度贴图之上标记画笔形状。

大家注意到,不管大家选择那一个选项,下面都会有“Brushes”笔刷的工具供大家使用。Unity在地形绘制的时候,基本上都是通过笔刷来完成的操作的。这笔刷有三个属性可以让大家设置,第一就是形状,第二就是大小,第三就是透明度。熟悉PhotoShop的同学,对于笔刷的使用应该非常了解,Unity也是参考了其他绘图软件的优点,采用了笔刷的方式,让大家所见所得的去“绘制”我们的地形地貌。大家还可根据需要创建具有独特形状或特定参数的自定义画笔,要创建新画笔,请单击 New Brush 按钮,这里不详细介绍了。

在这里,我们选择第一项“Raise or Lower Terrain工具可改变地形区块的高度。

从该选项下面的解释来看,鼠标左键是提升高度,如果同时按下Shift键的话,则是降低高度。接下来,我们就从“Brushes”右边选择一个笔刷的形状,默认大小为82,透明度为10,如下所示:

然后我们将鼠标移动到Scene视图中的地形平面上面。

我们可以看到上图中的效果。它的样子就是我们选择笔刷形状的样子。如果我们觉得笔刷太小,可以使用 Brush Size 滑动条可控制工具来增加笔刷的尺寸。接下来,我们在地形平面上按下鼠标并拖动鼠标就能提高地形高度,如果按住 Shift 键的同时单击并拖动鼠标可降低地形高度(直接在地形平面上降低高度是不行的,必须升高之后才能降低),操作就是这么简单。请大家注意的是,Opacity 滑动条可确定将画笔应用于地形时的强度,Opacity 值为 100 表示将画笔设置为全强度,值越高改变速度越快,幅度越大。大家可以尝试修改不同的值试一试就明白了。如下所示:

想要绘制出起伏平滑的地形,并不是一件容易的事情。如果想要控制绘制地形的高度,可以选择“Set Height”选项。使用 Set Height 工具可将地形上某个区域的高度调整为特定值。使用 Set Height 工具进行绘制时,当前高于目标高度的地形区域会降低,而低于该高度的区域会升高。Set Height 可用于在场景中创建平坦的水平区域。

如果要修改地形的细节,可以选择“Smooth Height”。使用Smooth Height 工具可以将附近区域平均化,柔化景观,并减少突然出现的变化,不会显著升高或降低地形高度。调整 Blur Direction 值以控制要柔化的区域。如果将 Blur Direction 设置为 1,则该工具会柔化地形的外部(凸出)边缘。如果将 Blur Direction 设置为 1,则该工具会柔化地形的内部(凹入)边缘。若要均匀平滑地形的所有部分,请将 Blur Direction 设置为 0Brush Size 值确定要使用的画笔的大小,而 Opacity 值确定该工具对要绘制的区域进行平滑的速度。

接下来介绍Paint Texture选项,使用该功能可以将纹理(如草、雪或沙)添加到地形平面上,其实就是给平面贴一张纹理图片。我们去哪里获取地形纹理贴图呢?我们可以从官方资源商店下载免费的纹理资源包,当然也可以使用上个章节中提到的Unity官方资源包中的“Environment.unitypackage”。我们将其导入到当前项目中,这个过程就不再演示了,大家直接看导入的结果吧。

大家可以在“Standard Assets\Environment\TerrainAssets\SurfaceTextures”目录下找到几张地表纹理图片,我们就使用他们了。使用Paint Texture选项必须先单击 Edit Terrain Layers 按钮以添加地形图层。如下所示:

我们点击“Edit Terrain Layers...”,然后选择“Create Layer...

在弹出的窗口中,Unity自动为我们展示了当前工程中的图片,我们就选择其中的纹理贴图后双击即可。这里我们先选择“SandAlbedo”纹理图片,新增加的“NewLayer”图层。

同时,我们发现在Scene视图中的平面统一被赋予了贴图。

显然,这样的操作效果并不是很好,我们还可以继续添加新的地形纹理贴图图层。这里我们选择“GrassHillAlbedo”的纹理图片,如下所示

新的图层创建完毕后,我们就需要使用画笔工具来进行绘制。我们选择刚刚创建的新地形纹理贴图图层,然后到Scene视图中,将鼠标放置地形平面上。接下来,我们只需要按下鼠标并拖动,就可以将刚刚的纹理绘制到地形平面上面。

这次我们可以换一个笔刷,并且调整笔刷大小以及它的透明度。然后,我们在地形上绘制。

我们发现,新绘制的纹理地貌会覆盖掉旧的纹理地貌。通过这种方式,我们就可以使用多张纹理来绘制各种各样的地貌,并且将这些地貌交会融合在一个地形平面上。如果有专业的美工人员帮助我们制作精美的地形贴图的话,相信一定能够做出非常棒的地貌效果,这里我们还是以入门学习为目的,就不在细致的制作这些地形效果了。

关于地形编辑我们就介绍到这里。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AOP 代码加案例详解

Spring AOP目录 Spring AOP主要内容代理模式静态代理动态代理JDK动态代理CGLIB 动态代理JDK代理与CGLIB代理的区别 Spring AOP当前项目存在问题和解决Spring AOP的介绍AOP基本概念实现AOP的两种方式 Spring AOP —— Schema-based方式前置通知 - 入门案例思考后置通知异常通知环…

高压功率放大器在脉冲X射线源技术及火星X射线通信中的应用

实验名称:高速调制脉冲X射线源技术及火星X射线通信应用研究 研究方向:通信技术 测试目的: 火星是深空探测的热点区域,随着对火星探测的深入,未来火星探测器将面临传统通信方式难以应对的恶劣情况,例如火…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

测试岗35k*16薪,性能测试面试题问什么?测试老鸟总结分析(附答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

【Python/机器学习】不使用Conda安装Pytorch和Torchvision(Windows系统)

这篇文章介绍如何不使用conda等包管理系统在Windows系统上直接使用pip安装Pytorch和Torchvision。首先你需要有Python 3.6以上的64位环境(32位是不可以的哟!),并且假设你有NVIDIA显卡且已安装CUDA。 文章目录 1. 查看CUDA版本2. 找…

简记二分算法模板与代码案例:整数二分

本文以 Java 语言实现,整理的代码模板适用于编程竞赛。对代码模板原理的讲解不多,主要记录一下如何使用。 目录 一、算法模板:整数二分 二、例题 一、算法模板:整数二分 整数二分有两套算法模板,这两套算法模板几乎…

03 【Sass语法介绍-嵌套】

1.前言 在企业的实际项目开发中,Sass 的嵌套可以说是非常非常有用的,它可以让你的 CSS 代码易于管理和维护,看起来也比较清晰,这也是 Sass 中很基础的一个知识点,首先掌握这个至关重要!在此章节我们将学习…

Golang题目总结

1. slice底层数据结构和扩容原理 数据结构 Go 的 slice 底层数据结构是由一个 array 指针指向底层数组,len 表示切片长度,cap 表示切片容量。扩容原理 (1)扩容思路:对于 append 向 slice 添加元素时,若 sl…

STM32-HAL-SPI-读写W25Q128FV-JEDEC ID(1)

文章目录 一、SPI串行通信协议1.1 SPI通信协议简介1.2 SPI工作原理1.3 SPI特性 二、W25Q128FV芯片介绍2.1 芯片基本参数介绍2.2 芯片管脚介绍2.3 技术手册等更多信息 三、开发板的板载Flash的连接电路四、测试准备五、初始化片上外设SPI15.1 初始化SPI15.2 设置片选引脚PB145.3…

【网页小功能 最简单入门!!!表白墙】【html+javaScript+css实现 简易 网页版 表白墙】

网页小功能 最简单入门&#xff01;&#xff01;&#xff01; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

详解达梦数据库字符串大小写敏感

检查数据库实例大小写敏感信息 场景一、初始化数据库实例为大小写敏感库 DDL操作 总结&#xff1a; 大小写敏感的数据库中&#xff1a; 创建表时&#xff1a; ①如果不对表名或列名添加""&#xff0c;那么表名和列名都自动转换为大写形式&#xff1b; ②如果对表…

自动化运维工具之Ansible

目录 一、自动化运维 1、通过xshell自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 (1) ansible命令行模块 (2) command模块 (3) shell模块 (4) cron模块 (5) us…

程序计算任意连续的12个月公里数不超三万公里预警

为了比亚迪的电池终身质保&#xff0c;写了个简单算法&#xff0c;计算任意12个连续的月份公里数加起来不超过3万公里的预警import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors;/***…

简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)

tomcat学习 一&#xff0c;部署Tomcat 1.配置JDK环境 yum -y install java-1.8.0-openjdk-src.x86_64 #yum源安装JDK1.8 &#xff08;无须配置环境变量&#xff09;2.部署tomcat 下载地址&#xff1a;https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.87/bin/apache-tomcat-…

基于STM32+华为云设计的智慧烟感系统

一、概述 当前基于STM32和华为云,设计了一种智慧烟感系统,该系统可以检测烟雾,同时将检测到的数据上传到云端进行处理和分析。系统可用于家庭、办公室等需要安装烟雾报警器场所。 二、系统设计 2.1 系统硬件设计 【1】硬件平台 该系统主要使用STM32F103ZET6微控制器作为…

点成案例丨点成生物为苏州某药企完成水浴IQOQ验证

点成科普 在生物制药、食品卫生相关实验室中&#xff0c;实验室仪器对产品质量具有重要影响&#xff0c;而实验室仪器在投入使用前的3Q验证&#xff08;IQ、OQ、PQ&#xff09;则是通过设备验证进行产品质量保证的重要部分。3Q验证的具体含义如下&#xff1a; 安装验证 Inst…

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复

在近期&#xff0c;一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件&#xff0c;能够加密目标计算机系统上的所有文件&#xff0c;并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…

「 计算机网络 」TCP的粘包拆包问题

「 计算机网络 」TCP的粘包/拆包问题 参考&鸣谢 大病初愈&#xff0c;一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 文章目录 「 计算机网络 」TCP的粘包/拆包问题一、前言二、为什么UDP没有粘包三、粘包拆包发生场景四、常见的解决方案五、Netty对粘包…

ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~

文章目录 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~HuggingFace 简介HuggingChat 登场展望 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~ 二话不说上链接 htt…

ChatGPT情商很高,但并不适合当搜索引擎

微软和谷歌正急于使用大型语言模型技术来强化搜索引擎。但有充分的理由认为&#xff0c;相比于提供事实性信息&#xff0c;这项技术更适合作为人们情感上的伴侣。 美媒评论称&#xff0c;目前基于大型语言模型的人工智能工具&#xff0c;例如ChatGPT&#xff0c;更擅长共情而不…