Unity地形系统
Posted DaLiangChen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity地形系统相关的知识,希望对你有一定的参考价值。
一、 什么是地形?
地形指的是地表各种各样的形态,具体指地表以上分布的固定性物体共同呈现出的高低起伏的各种状态。
二、创建地形
创建地形,地形属于3D Object 类型,可以通过菜单栏 GameObject 去创建,也可以直接在 Hierarchy 面板中创建。
三、 地形工具
从左到右分别是创建相邻地形、绘制工具、绘制树木工具、绘制细节工具、设置工具。
1. 创建相邻的地形工具
创建相邻地形,即在当前地形的十字区域内任创建一个地形。
2. 绘制工具
- Raise or Lower Trerrain:提升或降低地形,鼠标左键为提升地形,Shift+鼠标左键为降低地形。
- Paint Holes:绘制洞, 鼠标左键为绘制洞,Shift+鼠标左键为填充洞。
- Paint Texture:绘制纹理,需要导入纹理资源,后缀是。unity package,导入之后会在assets中看见。点击笔刷地方的edit textures
- Set Height:设置高度。
- Smooth Height:平滑画笔,使尖锐部分变为平滑
- Stamp Terrain:固定高度,即每次提升的高度都相同
2.1 绘制高度
Brushes:选择笔刷的样式。
Brush Size:笔刷的大小。
Opacity:笔刷强度。
选择绘制地形工具后,把光标移动至场景的地形上面,有蓝色的小圆圈,通过鼠标左键可以编辑地形,按住Shift 建单击鼠标左键可以消除之前的地形。
2.1 绘制洞
选择绘制洞工具后,把光标移动至场景的地形上面,有蓝色的小圆圈,通过鼠标左键可以在地形上绘制洞,按住Shift 建单击鼠标左键可以消除之前绘制的洞。
2.3 绘制纹理
选中绘制纹理工具后,把光标移动至场景的地形上面,有蓝色的小圆圈,通过鼠标左键可以绘制地表的纹理(图,草地、道路、泥土等)。
“Edit Terrain Layers->Create Layer”中可以添加贴图(第一张纹理铺满地)。
Tiling Settings 可以设置纹理的大小和偏移
2.4 设置高度
可以设置一个固定的海拔高度。
2.5 平滑工具
可以将地形中一些比较尖锐的角涂抹的更光滑。
2.6 固定高度
即每次提升的高度都相同。
参数解释
参数 | 解释 |
Stamp Height图章高度 | 图章绘制的固定高度 |
Subtract 减去 | 两个图章减去重叠部分 |
Max Add最大添加 | 两个图章重叠部分高度增加 |
3. 绘制树木工具
参数 | 解释 |
BushSize | 笔刷的半径。以地形单位米计算 |
TreeDensity | 树木密度。值越大树木越多 |
TreeHeight | 树的高度 |
LockWidthtoHeight | 锁定宽高比例 |
TreeWidth | 树的宽度 |
4. 绘制细节工具
主要用于细节的刻画,如在地形上添加立体的花草、小石头、枯木等小物件。
5. 设置工具
主要是设置地形的全局参数,比如地形的大小.地形贴图的尺寸和光照等。
基本地形
属性 | 功能 |
Draw | 切换地形渲染开关 |
Pixel Error | 像素误差,较高的之可能渲染较快,但是贴图可能不是非常精确。 |
Base Map Distance | 地形纹理将被以完整分辨率显示的最大距离。超过这个距离,为了效率将使用更低分辨率的混合图片。 |
Cast Shadows | 地形是否产生阴影? |
Material | 用于渲染地形的材质。这将影响地形纹理的颜色通道如何被插值。查看【 Enabling Textures 】获取更多细节。可用的选项有: |
Built In Standard | 对于每个splat层,可以为反射和平滑使用一个纹理,为法线使用一个纹理,以及一个标量值来调整金属光泽。关于PBR和标准着色器的更多信息,参见【标准着色器】。 |
Built In Legacy Diffuse | 这是来自Unity4.x及更早版本的内建地形材质遗产。它使用兰伯特(仅有漫射形式)光照模型,有可选的法线贴图支持。 |
Built In Legacy Specular | 这个内建的材质使用了BlinnPhong(漫射及镜面)光照模型,有可选的法线贴图支持。可以对地形指定整体镜面反射颜色和亮度。 |
Custom | 使用你选择的自定义材质来渲染地形。这个材质应当使用的被指定用于地形渲染的着色器(例如,着色器应当正确地执行纹理splat)。我们建议你查看我们内建地形着色器的源代码,并在它们上进行修改。 |
Reflection Probes | 在地形上反射探针如何被使用。仅当使用内建标准材质或支持渲染反射的自定义材质时才有效果。可用选项有: |
Off | 反射探针被禁用,天空盒将会被用来反射。 |
Blend Probes | 反射探针将被启用。仅在探测之间产生混合。如果附近没有反射探针,默认反射将被使用,但在默认反射和探针之间的混合不会产生。 |
Blend Probes And Skybox | 反射探针启用。混合产生在探针和探针之间,或探针与默认反射之间。 |
Simple | 反射探针被启用,但当有两个重叠量存在时,在探针之间不产生混合。 |
Thickness | 沿Y轴负方向地形碰撞体积应当扩大多少。物体被认为与地形碰撞从表面到一个等于这个thickness的深度。在没有使用代价高昂的连续碰撞检测时,帮助避免高速移动物体穿过地形。注:如果碰撞器太扁,高速物体上帧位置在碰撞器上方,下一帧到了碰撞器下方,期间穿过了碰撞器,也即穿过了地形表面,但没有产生碰撞。 |
树木和细节对象
属性 | 功能 |
Draw | 树、草地和细节物体要被绘制出来吗? |
Detail Distance | 超过(与摄像头之间)距离外的细节将被剔除。 |
Detail Density | 在给定的区域单元内,细节/草地对象的数量。这个数值可以被设置得更低来降低渲染负载。 |
Tree Distance | 超过(与摄像头之间)距离的树木将被剔除。 |
Billboard Start | (与摄像头之间)距离的3D树木物体将会被公告板图像所代替。 |
Fade length | 超过这个距离的树木在3D对象和公告板之间过渡。 |
Max Mesh Trees | 会被作为固定3D网格表现的可见树木的最大数量。超过这个限制,树木将被公告板代替。 |
风的设置
属性 | 功能 |
Speed | 风吹到草地上的速度。 |
Size | 风吹过草地区域形成的“波痕”尺寸。 |
Bending | 草随风吹而摇摆的程度。 |
Grass Tint | 应用到草地对象的整体色调。 |
分辨率
属性 | 功能 |
Terrain Width | (在世界坐标系中)地形对象在X轴上的尺寸。 |
Terrain Length | (世界坐标系中)地形对象在Z轴的尺寸。 |
Terrain Height | (世界坐标系中)可能的高度图最低值与最高值间的差。 |
Heightmap Resolution | 地形高度图的像素分辨率(值应当为2的幂次再加1,如513=512+1) |
Detail Resolution | 决定细节/草地单个补丁块的贴图分辨率。更高的分辨率会产生更小、更细节的补丁块。 |
Detail Resolution Per Patch | 单次绘制调用渲染的补丁块的长度/宽度。 |
Control Texture Resolution | 控制不同地形纹理混合的“地形贴图”分辨率。 |
Base Texture Resolution | 当从大于基本贴图的距离观察时(从上向下看),在地形上使用的混合纹理的分辨率。 |
以上是关于Unity地形系统的主要内容,如果未能解决你的问题,请参考以下文章