8000 Unity3D入门级教程22——地形系统2 · Issue #24 · Veinsvx/Blog · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Unity3D入门级教程22——地形系统2 #24

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Veinsvx opened this issue Oct 26, 2020 · 0 comments
Open

Unity3D入门级教程22——地形系统2 #24

Veinsvx opened this issue Oct 26, 2020 · 0 comments

Comments

@Veinsvx
Copy link
Owner
Veinsvx commented Oct 26, 2020

1. 树木种植工具

image
地形上可以种植各种树来丰富地形。Unity使用了多种手段来优化地形上的树,让你的地形在种植成百上千棵树时还能够保持良好的帧率。
新创建的地形没有关联树,点击Edit Trees › Add Tree会弹出添加树木的窗口。通过选择或拖动一棵树到添加窗口的属性中。
Unity的Standard Assets中有一些树木的资源,在Environment资源包中。导入后的目录是Standard Assets/Environment/SpeedTree。
image
添加树以后,地形编辑器界面如下图所示:
image
添加以后,选中这棵树,你就能通过画刷将树刷到地形上了。

Tree Density 树的密度
Tree Height 树的高度。如果勾选了Random,可以通过后面的滑条设置生成的树的高度范围。如果没有勾选Random,可以通过后面的滑条设置树的确切高度。
Lock Width to Height 是否将树的宽度随着高度增加
Tree Width 树的宽度。如果没有勾选Lock Width to Height可以编辑宽度的值。
Random Tree Rotation 随机旋转,建议勾选,因为旋转角度以后很难看出是同一棵树。
Tree Lightmap Static 树木是否标记为Lightmap Static(只读)。不建议将树木标记为Static,建议用Light Probe为树木提供高精度光照。如果确实要标记为Lightmap Static,请标记Tree对应的Prefab。

另外如果需要给树木添加碰撞,请在树的Prefab中添加Collider。
快捷键
• Shift+左键移除画刷中的树木
• Ctrl+左键只移除当前选中类型的树木
• Shift+逗号(,)和Shift+句号(.)可以在不同的树木之间切换。

1.1 SpeedTree
通过SpeedTree Modeler制作的一种树,通过LOD Group组件来控制树木的优化。
LOD:Levels of Detail,多细节层次。根据模型所在场景中的位置和重要程度,决定模型的细节程度。
1.2 Wind Zone
可以通过设置风域,让地形上的树木随风摇曳。
image
通过GameObject › 3D Objects › Wind Zone添加一个风域。

Mode 模式

Directional:风会影响整个地形,适合自然风
Spherical:风会影响设定的Radius范围内的地形,适合一些特效如爆炸
Main 设置风力的大小
Turbulence 风力的变化
Pulse Magnitude/Frequency 阵风暂停的时长和频率

2. 地表其他细节

image
地表的其他细节包括草、一些小的模型如石头等。
草会默认使用公告板(一个面片,始终面向相机)的形式渲染。小模型会根据设置,用公告板或渲染真实的网格。

2.1 添加草
通过Edit Details › Add Grass添加一种草。
image

Detail Texture 草的贴图
Min/Max Width 最小/最大宽度
Min/Max Height 最小/最大高度
Noise Spread 随机分布的程度,越小越整齐,越大越杂乱
Healthy/Dry Color 健康/干枯的颜色
Billboard 是否用公告板渲染

2.2 添加Mesh
通过Edit Details › Add Detail Mesh添加一种模型。
image
Render Mode

Grass:用2D的形式渲染,类似草的渲染
Vertex Lit:用3D的形式渲染

3. 地形设置

地形设置中有很多重要的参数。
image

3.1 Base Terrain
基础地形,指的是地面的部分(包括地面的贴图,不包括地形上的树木、草等)。

Draw 是否绘制基础地形。不勾选将会隐藏基础地形,但是树木、草等还显示。
Pixel Error 绘制地形时贴图的像素误差。越高越精确,但是会降低运行时效率。
Base Map Dist. 地形贴图在这个距离范围内使用高分辨率混合,超出这个距离会使用一个合成的低分辨率贴图。
Cast Shadows 是否投射阴影。
Material 地形材质的选择,即地形贴图所使用的材质。
• Built In Standard 推荐使用 Unity内置的Standard材质。支持贴图的Albedo(RGB),Smoothness(A),Normal法线贴图。
• Built In Legacy Diffuse 用于兼容从Unity5之前的版本升级过来的地形。支持漫反射贴图和法线贴图。
• Built In Legacy Specular 用于兼容从旧版本升级过来的地形,支持漫反射、高光和法线贴图。
• Custom 自定义Shader。建议在内置地形shader的基础上修改。
Reflection Probes 反射探针的相关选项,后续会进行讲解。
Thickness 地形在Y轴上的厚度。增加这个值可以避免高速运动的物体穿过地形。

3.2 Tree and Detail Objects
树木和细节物体的相关选项。

Draw 是否绘制树、草和其他细节物体
Bake Light Probes For Trees 选中时,Unity在每一棵树的上方创建一个光照探针用来渲染树的光照。如果不选中,会从场景中的光照探针获取光照信息。
Detail Distance 地面细节物体超出该距离(距离摄像机)会被隐藏
Collect Detail Patches 细节物体不可见时是否从内存中释放
Detail Density 设置单位面积内细节物体的最大数量
Tree Distance 树木显示的最大距离
Billboard Start 超出该距离的树会被替换成公告板形式的树
Fade Length 树木从3D到公告板过渡的距离
Max Mesh Trees 运行时3D树的最大数量,超出的树木会被公告板树替换。
Tree Distance, Billboard Start, Fade Length, Max Mesh Trees这几个参数对SpeedTree不生效。SpeedTree需要使用LOD组件来控制。

3.3 Wind Settings for Grass
Wind Zone组件并不会影响地形上的草,但是可以通过下面几个设置让地形上的草也有随风摇曳的效果。

Speed 风的速度
Size 风吹动草时草浪的大小。
Blending 草被吹弯的程度
Grass Tint 草的颜色的全局设置

3.4 Resolution

Terrain Width/Length 地形的宽度/长度,默认是500,如果你想要一个2000x2000的大世界,就需要调这个值
Terrain Height 地形的高度差(最高点和最低点的差值)
Heightmap Resolution 地形高度图的分辨率(应该是2的n次幂+1,比如2^9 +1 = 512+1=513),分辨率越高地形的起伏越精确越平滑,但是运行效率和存储空间占用越多
Detail Resolution 细节物体/草的分辨率。越高的值细节块会越多。
Detail Resolution Per Patch 每个细节块的分辨率。地形上的细节物体按块渲染,细节块越多渲染的越慢。
Control Texture Resolution 控制不同贴图混合的控制贴图的分辨率
Base Texture Resolution 合成贴图分辨率。用于超出上面提到的Base Map Dist. 时地形所用的贴图。
特别注意
修改Heightmap Resolution(高低起伏)、Detail Resolution(细节物体/草)、Control Texture Resolution(地形贴图)的值会清除地形对应的数据!!!

3.5 Heightmap
高度图是存储地形的高低起伏数据所用的一种贴图类型,完全可以通过外部软件生成或者通过PS绘制。通过Import和Export可以导入导出高度图。

4. 水

地形中总是少不了水,如果从0开始制作水的效果还是很麻烦的,还好Unity的Standard Assets中提供了水资源,能满足大多数的需求。导入Unity的Standard Assets › Environment包,你就能看到目录中如下位置的水资源:
image
在以下三个目录里总共有6种不同的水:
image
这些水不需要进行太多的设置就可以使用。

@Veinsvx Veinsvx changed the title Unity3D入门级教程21——地形系统2 Unity3D入门级教程22——地形系统2 Oct 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant
0