上一章节我们介绍了地形编辑,接下来介绍Paint Trees(绘制树木)。
由于树木属于3D模型,初学者不可能通过3ds max或者maya软件进行制作,因此我们还是建议大家从官方资源商店上面去下载免费的。这里我们依然使用上个章节中的官方标准资源包。
我们可以在“Standard Assets\Environment\SpeedTree”看到有三个树模型文件,我们就使用他们了。接下来我们点击“Paint Trees”选项面板
然后点击“Edit Trees...” -> “Add Tree”按钮,添加树木模型
点击右上角的圆形小按钮“Tree prefab”会弹出一个资源选择框
我们选择其中一个树木模型即可,例如“Broadleaves_Mobile”。
然后点击右下角的“Add”
接下来,就可以使用笔刷工具,将这个树木模型“绘制”到地形平面上啦。
具体的操作就是按下鼠标,然后再地形平面上拖动,就能绘制很多树木在平面上。
显然这些树木之间距离太小了,而且无法控制树木的数量,如何调整呢?
上面截图中Settings中有很多的参数,我们简单介绍一下。
Brush Size:笔刷大小,控制可添加树的区域的大小。
Tree Density:控制 Brush Size 定义的区域中绘制的树平均数量。
Tree Height:使用滑动条来控制树的最小高度和最大高度。将滑动条向左拖动绘制矮树,向右拖动绘制高树。如果取消选中 Random,可以将所有新树的确切高度比例指定为 0.01 到 2 的范围内。
Lock Width to Height:默认情况下,树宽度与其高度锁定,因此始终会均匀缩放树。然而,可以禁用 Lock Width to Height 选项,然后单独指定宽度。
Tree Width:如果树宽度未与其高度锁定,则可以使用滑动条来控制树的最小宽度和最大宽度。将滑动条向左拖动绘制细树,向右拖动绘制粗树。如果取消选中 Random,可以将所有新树的确切宽度比例指定为 0.01 到 2 的范围内。
Random Tree Rotation:如果为树配置 LOD 组,请使用 Random Tree Rotation 设置来帮助创建随机自然的森林效果,而不是人工种植的完全相同的树。如果要以相同的固定旋转来放置树,请取消选中此选项。
Color Variation:应用于树的随机着色量。仅在着色器读取 TreeInstanceColor 属性时有效。例如,用 Tree Editor 创建的所有树的着色器将读取 TreeInstanceColor 属性。
Tree Contribute Global Illumination:启用此复选框可向 Unity 指示树影响全局光照计算。
上面的参数基本上都可以理解,我们之前想要让树木绘制“稀疏”一些,我们可以将Brush Size(150)调大一些,Tree Density(10)调小一些。
然后去场景中再绘制试一试。
效果已经出来啦。我们继续添加树木吧。
接下来,我们继续介绍“Paint Details”绘制一些花草到地形上面。
我们点击“Edit Details...” -> “Add Grass Texture”添加花草纹理贴图,请注意,这里是纹理图片,并不是模型文件(网格)哦。
点击上面的“Detail Texture”右上角的小圆按钮,弹出资源选择弹框
找到我们的花草纹理贴图文件,选择其中一个即可,例如“GrassFrond01AlbedoAlpha”。
在这个页面中,我们可以对选中的贴图做一些参数设置。
Min Width、Max Width、Min Height 和 Max Height 值可指定生成的草丛的大小上限和下限。为了创建逼真的外观,草是以随机“噪点”图案生成的,有裸露斑块散布在草地上。
Noise Spread 值控制着裸露与草丛斑块的近似大小,值越高表示给定区域内的变化越大。
Unity 使用柏林噪声 (Perlin noise) 算法生成噪点;Noise Spread 是指在地形上的 x、y 位置与噪点图像之间应用的缩放。通常认为,交替的草地斑块处于中心位置比处于边缘位置更“健康”,而 Healthy Color 和 Dry Color 中设置的颜色表示草丛的健康状态。
最后,当启用 Billboard 选项时,草的图像将旋转,因此它们将始终面向摄像机。当您希望显示密集的草地时,此选项很有用,因为草丛是二维的,不能从侧面看到。然而,对于稀疏的草,草丛个体的旋转对于观察者来说可能会变得很明显,产生奇怪的效果。
最后,我们点击“Add”添加我们选择的花草纹理贴图。
接下来,我们就可以使用笔刷绘制啦。
我们可以修改下面的“Target Strength”来修改花草的绘制密度。
除了添加一些花草纹理贴图之外,还可以添加岩石之类的地表物。我们需要回到“Paint Details”选项面板。然后我们点击“Edit Details...” -> “Add Detail Mesh”添加网格,请注意,这里是模型文件(网格),并不是纹理贴图哦,跟之前的花草是不一样的。由于官方资源包中并没有“石头”模型,因此我们就不演示了。大家可以去资源商店下载一些试试。需要注意的是,当我们选择“石头”模型的时候,有一些参数需要设置。如下所示:
在这个页面中,我们可以对选中的石头模型做一些参数设置。
Unity 在 Min Width 和 Max Width 值以及 Min Height 和 Max Height 值之间对其随机缩放。Unity 对 x 轴和 z 轴使用宽度缩放,而对 y 轴使用高度缩放。
Healthy Color 和 Dry Color 值的作用与它们对草的作用相同。
可将 Render Mode 设置为 Vertex Lit 或 Grass。
在 Vertex Lit 模式中,Unity 将细节对象渲染为场景中的实体顶点光照游戏对象。
在 Grass 模式中,Unity 以类似草的方式使用光照渲染场景中细节对象的实例。
备注:这里设置了Healthy Color 和 Dry Color 值为白色;Render Mode设置为Vertex Lit。
接下来我们来创建“水”,在Unity官方标准资源包中就有,如下所示
预制件对水使用椭圆形网格。如果需要使用其他不同的网格,请在水游戏对象的网格过滤器 (Mesh Filter)中进行更改,当然我们就不进行修改了。添加水的方法非常简单,只需要将我们的水预制件拖拽到地形平面某一个低洼的地区即可。
大家就能看到波光粼粼的水效果了。最后运行一下,看看真实的效果吧。
关于场景的搭建,我们就暂时介绍到这里。
在后期的课程中,我们会慢慢添加角色,并在控制角色在上面的场景中进行移动。
本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id