Unity 3D 地形系统概述|| Unity 3D 创建地形

Posted 爱编程的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 3D 地形系统概述|| Unity 3D 创建地形相关的知识,希望对你有一定的参考价值。

在三维游戏世界中,通常会将丰富多彩的游戏元素融合在一起,比如游戏中起伏的地形、郁郁葱葱的树木、蔚蓝的天空、、凶恶的猛兽等,营造出身临其境的游戏沉浸感,让玩家置身游戏世界,忘记现实。

地形作为游戏场景中必不可少的元素,作用非常重要。Unity 3D 有一套功能强大的地形编辑器,支持以笔刷方式精细地雕刻出山脉、峡谷、平原、盆地等地形,同时还包含了材质纹理、动植物等功能。

通过地形编辑器可以让开发者实现游戏中任何复杂的游戏地形。

不可否认,可玩性是衡量一款游戏成功与否最主要的标准,这一点从《魔兽世界》的成功就可以看出。

玩家在玩一款游戏过程中第一印象是非常重要的,第一印象决定了玩家是否想继续玩下去,在玩家玩下去的同时才能展现出游戏的可玩性,所以游戏的场景设计也是评价一款游戏的标准。

场景涉及人物、地形以及各类型的建筑模型。大多数人物模型和建筑模型都是在 3ds Max、Maya 等专业的三维模型制作软件中做出来的。

虽然 Unity 3D 也提供了三维建模,但还是相当简单。不过在地形方面 Unity 3D 已经相当强大,下图就是基于 Unity 3D 开发的游戏场景。

Unity 3D 创建地形

地形的创建十分简单。执行菜单 GameObject → 3D Object → Terrain 命令,窗口内会产生一个平面,该平面是地形系统默认使用的基本原形。

在 Hierarchy 视图中选择主摄像机,可以在 Scene 视图中观察到游戏地形。

如果想调节地形的显示区域,可以调整摄像机或地形的位置与角度,让地形正对着我们。

地形参数

Unity 3D 创建地形时采用了默认的地形大小、宽度、厚度、图像分辨率、纹理分辨率等,这些数值是可以任意修改的。

你可以选择创建的地形,在 Inspector 视图中找到 Resolution 属性面板

Resolution 属性面板的参数列表。

参数含义描述
Terrain Width地形宽度全局地形总宽度。
Terrain Length地形长度全局地形总长度。
Terrain Height地形高度全局地形允许的最大高度。
Heightmap Resolution高度图分辨率全局地形生成的高度图的分辨率。
Detail Resolution细节分辨率全局地形所生成的细节贴图的分辨率。
Detail Resolution Per Patch每个子地形块的网格分辨率全局地形中每个子地形块的网格分辨率。
Control Texture Resolution控制纹理的分辨率把地形贴图绘制到地形上时所使用的贴图分辨率。
Base Texture Resolution基础纹理的分辨率远处地形贴图的分辨率。

Unity3D游戏开发 地形系统

http://mahaile.blog.51cto.com/2891586/771167

上一章我们讲解了 如何创建一个简单的游戏世界 这一章我们来 看看unity3d中的地形系统 废话少说 赶紧开始吧,,哈哈
 
 
首先创建一个新的场景 
 
 
点击菜单栏中的 Terrain-> create Terrain 菜单  
 
 
 
完成后如 下图
 
 
 
技术分享
 
 
 

 

创建地形系统的时候 unity会按默认的 宽高 图像分辨率,纹理分辨率 等创建一个地形  不过不怕 这些我们都可以修改滴  

 

  如果需要在game 窗口(即是游戏运行窗口)中看效果 ,需要调整下摄像机的位置和角度  

操作方式  选中  Hierarchy 中的 main camera 摄像机 然后使用 场景编辑器上面那4 个 功能(拖动,移动,旋转,缩放)进行调节即可 调节过程中就可以再game 窗口中看到效果啦,   各位童鞋 多操作几次就可以熟练操作了

 
 
点击 Terrain ->resolution 菜单 可以设置地形的各个参数
 
 
 
如下图
 
 
 
技术分享
 
 
 
 
技术分享
 
 
 
如上图所示从上到下分别代表的含义是
 
 
Terrain Width: 地形的宽度

 

 

Terrain Height: 地形的高度

Terrain Length:地形的长度
 
HeightMap Resolution:地形高度图的分辨率. 
 
Detail Resolution:细节分辨率,控制草和细节网格地图的分辨率。数值越高标示效果越好,想对也越消耗机器性能,可能会卡。根据情况适当的调节。
 
Control Texture Resolution:控制不同纹理的分辨率。
 
Base Texture Resolution:控制相对纹理分辨率,这里指一定范围内的。
 
 
 
设置完毕点击 set Resolution按钮,有兴趣的朋友可以动态的修改一下参数,看看你的地形发生了什么样的改变?
 
 
修改完后我们来给地形添加点元素吧 
 
 
选中 Hierarchy 中的 刚刚创建的terrain 地形 右边出现了地形的编辑窗口
 
如图
 
 
 
 
 
 
 
技术分享
 
 
 
上图中 的红框框 讲解  从上 到下
 
 
1: position 是地形的 位置坐标  
 
   rotation 的旋转坐标
 
   scale   缩放比例
 
   这个位置任何游戏组件都有这 3 个属性
 
 
 
2:  这7 个属性 从左往右 分别是 编辑高度、编辑特定高度、设置平滑、纹理贴图、画树模型、画草模型、其他设置.善用着七个工具可以编辑一个非常不错的游戏地形,稍后我会介绍这七个按钮的具体操作流程。
 
 
 
 2.1 选中编辑高度   下面出现 barusher 和 settings  属性栏
 
Brushes:地形绘制画笔,这里有很多种画笔的图案可供我们选择。
 
Brush Size :画笔宽度取值范围
Opacity :画笔高度取值范围
 
 
 
如图 
 
 
 
技术分享
 
 
各位童鞋 可以修改参数 在地图系统上 绘制 高度 感受这些参数的 意义 
 
 
 
技术分享
 
 
 
上图是我使用编辑高度拖拽出来的效果  现在有点难看哈 ,,没事滴   我们继续完善它 
 
 
 
2.2  编辑特定高度
 
 
和编辑高度页面中的信息差不多,只是多了一个Height用来设置最大的高度,编辑高度中Opacity是最大高度,但是在这里Height才是最大高度但是Opacity必需有数值,举个例子Opacity设置为100  Height设置 80 最高的高度就是80   .Opacity设置为20  Height设置 100最高的高度还是20.   
 
 
 
 
2.3 设置平滑
 
用上面拉出来的地形 如果 近距离看 会发现 有些山峰 的边角会有些粗糙, 这时我们就可以使用 设置平滑来 山峰的边角平滑过渡
 
 
2.4  纹理贴图
 
这个东东呢 ,就是给地图加上图片 ,从而实现 好看的地图 而非像上面光光的  图片资源方面我们可以导入系统标准的资源库,里面有很多好看的地形资源,当然也可以自己添加喜欢的图片做地形资源。
 
导入系统 图片资源  选择  菜单栏中的assets -> import package -> terrain assets   点击导入 ,这里只是导入 地形系统的资源  在此次你也可以导入其他资源   如下图
 
 
 
 
 
 
 
技术分享
 
 
 
点击Edit Textures  出现一个下拉列表
 add Textures 添加一个贴图 
 Edit Textures  编辑贴图
 Remove Textures删除贴图
 
点击 addTextures 添加一个贴图 
 
如图 中的 箭头 标记  选择一个 你喜欢的地形图片  给地形 
 
 
 
技术分享
 
 
 
Add Terrain Texture (添加贴图)
splat :选择一个贴图,上面导入了系统自带的地形资源,在这里随便添加两个贴图用于区分资源。也可以添加自己喜欢的图片,拖放在工程中就可以在这里看到图片资源。
 
Tile size x: 设置贴图X轴宽度
Tile size x:设置贴图Y轴宽度
Tile offset x:设置贴图X轴偏移量
 

 

Tile offset y:设置贴图Y轴偏移量

 

 

有兴趣的童鞋修改一下参数方可看到效果,这里暂时使用默认数值。。

 

 
 
现在回头看看 是不是好看多了 , 精彩还在后面的 ,我们继续 ....
 
 
 
2.5   画树模型 
 
 
既然 是地形 当然是有树啦  
 
 
Hierarchy 标签栏中,点击Create - > Tree 可以创建一个树的模型,设置自己的树木模型,这里我们先导入系统自带的树木模型,以后在讨论自定义模型的制作。
 
 
因为新建的工程中是没有树木和草地的贴图元素,可以在Unity3D 的标准资源库中导入,导入的方法和纹理贴图介绍的一样。打开Unity3D 在Project标签栏中 鼠标右键 Import package - > Tree Creator 将标准树木资源模型导入工程。
 
 
点击 Add Terrain Texture 添加一个 树模型  过程和 添加纹理贴图 类似 
 
 
如下图  
 
 
技术分享
 
 
 
在上图中 花树模型的 属性 
 
 
Brush Size : 画笔绘制一次树木添加数量,数值越大越多,越小则越少,取值范围0到100。
Tree Density:树之间的百分比,在一片树中间在放入量一片树就得修改这个数值了,取值范围0到100。
Color Variation:树之间颜色差的范围,取值范围0到1。
TreeHeight:树的高度,它是与场景模型有一定比例,越大树越高,取值范围0到200。
Variation:树与树之间的高度比例,取值范围0到30。
Tree Width:树的宽度,它是与场景模型有一定比例,越大树越宽,取值范围0到200。
Variation: 树与树之间的宽度比例,取值范围0到30。

 

 
 
 
 
 
 
童鞋可以 调整这些参数 才地形上 花 并观看 效果 
 
 
我在 地形上 添加了 树 效果如下
 
 
 
技术分享
 
 
game 游戏运行时的效果 如图
 
 
技术分享
 
但我们在 游戏 的 game 窗口中 看 效果 会 发现  地形中 灰暗暗的一片  这是为什么呢 , 这是因为 光线不够 ,   这些unity 都为我们想好了 ,记得我们 前面有一章讲了 game object 吗 ?  现在我们来添加一个 平行光 (如何添加平行光 不知道的童鞋去看 Unity3D游戏开发 创建简单的游戏世界(三)  添加游戏组件 ),给 地形加点 亮度
 
各位童鞋注意哦,平行光的位置对游戏中的亮度是没有关系的, 角度才对亮度有关系, 所以我们添加了 平行光 旋转旋转角度就可以搞定了   
 
 
如下图 是不是好看多了  
 
 
技术分享
 
 
画草模型:
 
起始它不仅能草,还能画一些自定义模型,可以处理一些零碎的小东西丰富游戏场景 它或 画树模型有些类似  这里就不再多啰嗦了 
 
主要设置一些3D游戏地形的一些参数
 
 
一下面列出一些主要参数的介绍,盆友们可以自己拖动鼠标修改一下其中的具体数值就可以在游戏视图中清晰的看到效果。
 
Pixel Error:控制地形密度容差,数值越大越圆滑,越小地形角度越明显。
Base Map Dist:控制地形贴图的距离.
Case shadows: 是否显示地形阴影
Draw:是否绘制绘制场景模型,比如树,草等等。
Wind Settings 地形中风的设置
Speed:风速 
Size:风的范围

 

 
 
学习了这一章 童鞋们赶快 试试 制作自己的喜欢的游戏地形吧 ,   哈哈 ,, 这章暂时就到这了 ,  有什么不明白的地方或遗漏的地方  欢迎积极留言 , 大家共同学习 共同进步 咔咔 

以上是关于Unity 3D 地形系统概述|| Unity 3D 创建地形的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D游戏开发 地形系统

Unity 3D 使用高度图创建地形|| Unity 3D 使用笔刷绘制地形

unity3D绘画手册-----地形及术语解释

Unity3D性能优化

Unity3D自带功能:地形(Terrain)

Unity3D中的地形转成模型