Unity3D自带功能:地形(Terrain)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D自带功能:地形(Terrain)相关的知识,希望对你有一定的参考价值。
参考技术A Unity3D中的地形类似于Maya中使用置换贴图来变形高段数的多边形平面,其原理是自动创建一个中等多边形密度的mesh plane(多边形平面),然后指定一张16bit的灰阶图作为height map(高差图),并根据mesh各个顶点所对应的灰度数值沿着Y轴改变该顶点的高度,形成高低起伏的复杂地形。Unity3D内置了一套简单的brush(笔刷)工具来方便用户对地形物体的编辑修改。
通过菜单 GameObject > 3D Object > Terrain 可以创建一个Terrain (地形)。
Terrain Settings是对Terrain整体的参数设置面板。
最上面的一排按钮分别用来对地形及植被进行“刷制”的工具面板切换,最右边的 Terrain Setting 面板是针对地形整体的设置,这里挑一些常用的重点的来讲:
按下鼠标左键开始提升地形高度,如果同时按住 shift 键,则降低地形高度直到0。
直接刷出特定高度,按住 shift 键获取某一点的高度。非常适合用来刷出非水平面高度的平整地形,比如山顶或山间的一块平整地面等等。同时如果场景中有水面,由于Terrain不能刷出水平面以下的地形(最低刷到水平面),可以首先将全部地形提升到一定高度,再将水域地形刷低。
相当于光滑笔刷工具
在地形表面上绘制贴图。
首先需要在Textures栏中点击 Edit Textures... ,再选择 Add Texture 以添加一层贴图。
在这个“添加地形贴图”面板中我们可以设置一张颜色贴图和一张法线贴图,并指定贴图的重复度。如果检测出颜色贴图含有Alpha通道,就会将这个Alpha通道与作为光滑度的贴图,否则就会出现一个Smoothness参数供我们调节这一层表面的光滑度,此外还提供一个Metallic参数供我们调节这一层表面的金属颜色。
这里的贴图都需要处理成无缝贴图,否则场景中会出现明显的接缝。贴图不需要特别大,因为重复度会被设置得比较高,通常512或者1024分辨率的贴图就可以了。
第一层贴图会默认覆盖整个地形区域,从第二层(从左往右)开始,添加好贴图以后需要在地形上刷出该层贴图的出现范围。
需要编辑各层的贴图设置只需点击 Edit Textures... > Edit Texture... ,需要删除贴图层就点击 Edit Textures... > Remove Texture 。
在地形上刷出树来。
按下鼠标左键开始刷树,按住 Shift 键再刷可以删除已经刷出来的树,按住 Ctrl 键再刷可以删除当前选择的特定类型的树。
在Trees栏点击 Edit Trees... ,再选择 Add Tree ,可以添加一个GameObject作为“树”。这个物体可以是任意GameObject,并不一定非要是Tree Object。
然后就可以用鼠标在地形表面“刷”出这类树来了,同时也会出现具体的Settings参数。
我们可以添加多种type的树,然后一层层刷出复杂的森林结构。
同样的,我们也可以点击 Edit Trees... > Edit Tree 给树更换GameObject,或点击 Edit Trees... > Remove Tree 删除某一层的树。
在地形上刷出细节物体,通常用来做草。
按下鼠标左键开始刷细节物体,按住 Shift 键再刷可以删除已经刷出来的细节物体,按住 Ctrl 键再刷可以删除当前选择的特定类型的细节物体。
在Details栏点击 Edit Details... ,再选择 Add Grass Texture ,打开Add Grass Texture面板设置新建“草贴图”的参数:
在Details栏点击 Edit Details... ,再选择 Add Detail Mesh ,打开Add Detail Mesh面板设置新建“细节面片”的参数:
Terrain地形
Terrain:地形
Create Terrain 创建地形
Import Heightmap-Raw 导入高度图-Raw格式
Export Heightmap-Raw 导出高度图-Raw格式
Set Resolution 设置变形,地形大小高度等
Mass Place Trees 大规模放置树
Flatten Heightmap 使高度图平坦
Refresh Tree and Detail Prototypes 刷新树和细节的原型
Mobile Input 手机输入
Enable:启用
Disable:禁用
以上是关于Unity3D自带功能:地形(Terrain)的主要内容,如果未能解决你的问题,请参考以下文章