Unity 的地形引擎 (Terrain Engine) 为树 (Trees) 提供 特殊支持。您可以在地形 (Terrain) 上放置上千棵树,然后用实际帧速率在游戏中对其进行渲染。这可以通过以下方式实现:将相机周围的树木渲染成全 3D,然后将远处的树木转变为二维布告板。远处的布告板将根据不同的观察角度自动更新以确定正确的方向。出于性能考虑,该转换系统将详细的树环境制作地非常简单。您可以完全控制网格到布告板 (mesh-to-billboard) 转换参数的调整,这样就可以得到所需的最佳性能。


您可以轻松绘制许多树来创建优美的环境,如上图所示

添加树

检视器 (Inspector) 中选择 放置树 (Place Trees) 按钮

将树放到地形上之前,您需要将树添加到可用树的库里。要执行此操作,请单击 编辑树 (Edit Trees) 按钮 -> 添加树 (Add Tree)。您将看到添加树 (Add Tree) 对话框。


添加树 (Add Tree) 对话框

项目视图 (Project View) 中选择树,并将其拖到 树 (Tree) 变量。如果想给树添加一些“迎风摇曳(bending in the wind)”的动画效果,您还可以编辑 弯曲系数 (Bend Factor) 。准备好后,单击添加 (Add)。树在检视器 (Inspector) 中将显示为选中。


新添加的树在检视器 (Inspector) 中显示为选中

您可以添加任意数量的树。您可以选择检视器 (Inspector) 中的每棵树,从而将其放置在地形 (Terrain) 上。


当前选中的树将总是高亮显示为蓝色

绘制树

使用放置树 (Place Trees) 工具的同时单击地形 (Terrain) 上的任意地点以放置树。如需去掉树,请按住 Shift 按钮并在地形 (Terrain) 上单击。


绘制树如同使用笔刷工具一样简单

放置树时,您可以使用若干选项。

属性:功能:
笔刷大小 (Brush Size)放置树的笔刷的半径(以米为单位)。
树间距 (Tree Spacing)两树之间的树宽的百分比
颜色变化 (Color Variation)每棵树之间所允许的颜色差异值。
树高 (Tree Height)每棵树相比于资源的高度调节。
高度变化 (Height Variation)每棵树所允许的高度差异值。
树宽 (Tree Width)每棵树相比于资源的宽度调节。
宽度变化 (Width Variation)每棵树所允许的宽度差异值。

树木绘制技巧


不同的笔刷 (Brush) 大小覆盖不同的区域大小

调整树间距 (Tree Spacing) 来更改正在绘制的树的密度

编辑树

要为添加的树更改任何导入参数,请选择细节,然后选择编辑树 (Edit Trees) 按钮 -> 编辑细节 (Edit Detail)。或双击想要编辑的树。然后您将看到编辑树 (Edit Tree) 对话框,并可以更改任何设置。

批量放置

如果您不想绘制树,只是想创建一整片森林,可以使用地形 (Terrain) -> 批量放置树 (Mass Place Trees) 在此处,您将看到批量放置树 (Mass Place Trees) 对话框。你可以设置想放置的树的数量,设置之后,这些树将立即放置。添加到地形 (Terrain) 的所有树将被用于此批量放置。


一次性放置 10,000 棵树 (Trees)

刷新源资源

如果对树的资源源文件做了任何更新,则必须手动重新将其导入到地形 (Terrain) 中。要执行此操作,请使用地形 (Terrain) -> 刷新树和细节原型 (Refresh Tree and Detail Prototypes) 。该操作在更改和保存源资源后完成,并将立即刷新地形 (Terrain) 上的树。

创建树

地形引擎提供 了两种创建树的方法:

第一种是使用 Unity 自带的树创建器,第二种是使用与 Unity 兼容的第三方建模程序。在这种情况下,每棵树都应包括带两种材质 (Materials)的单个网格。一种用于树干,另一种用于树叶。

出于性能原因,每棵树的三角形总数应保持在 2000 以下。三角形越少越好。树网格的支点必须正好位于树的根部,这个点即是树应该放置在地面的位置。这使其能够最简便地导入 Unity 以及其他建模应用程序中。

树必须使用自然/软光遮蔽树叶 (Nature/Soft Occlusion Leaves) 以及自然/软光遮蔽树皮 (Nature/Soft Occlusion Bark shader)着色器。为了使用这些着色器,您还必须将树放置在名为“环境光遮蔽”(Ambient-Occlusion) 的特定文件夹中。将模型放置在该文件夹中并重新导入后,Unity 将计算专门用于树的软环境光遮蔽。“自然/软光遮蔽”(Nature/Soft Occlusion) 着色器需要此信息。如果不遵循命名惯例,树的某些部分会完全变成黑色,看起来会比较奇怪。

Unity 也在“Terrain Demo.unitypackage”中自带了一些高质量的树。您可以在游戏中轻松使用那些树。

使用低多边形树

一个带叶子的树枝只有 6 个三角形,并显示出相当多的弯曲。您可以添加更多的三角形,使其更加弯曲。但要点是:制作树时,使用三角形,而不是四边形。如果使用了四边形,则基本上要在树枝上用两倍的三角形才能达到同样的弯曲效果。

由于拥有大多边形,而几乎所有都因 alpha 通道而不可见,因此树本身浪费了很多填充率。由于目的是要制作浓密的树林,出于性能考虑,应避免此现象。这也是让不引人注意的树看着好看的原因之一。树木很浓密,您无法透过树叶看到树叶后面的情况。

设置树碰撞

如果想让树使用碰撞组件,这非常容易。导入树资源文件后,您只需在场景视图 (Scene View) 中将其实体化,添加胶囊碰撞组件 (Capsule Collider) 并对其进行调整,然后将游戏对象 (GameObject) 放入新的预设 (Prefab) 中。然后,将树添加到地形 (Terrain) 上时,您添加的是这个带有胶囊碰撞组件 (Capsule Collider) 的树预设 (Prefab)。为树添加碰撞时,只能使用胶囊碰撞组件 (Capsule Collider)。

使树相互碰撞。


地形碰撞组件 (Terrain Collider) 检视器 (Inspector)

如果想让树与刚体碰撞,请确保已勾选创建树碰撞组件 (Create Tree Colliders) 复选框,否则物体将穿过创建的树。请注意:Unity 使用的 PhysX 引擎在一个场景中最多只能处理 65536 个碰撞组件。如果使用的树的数量大于该数字(减去场景中已有的其他碰撞组件),那么树碰撞组件不能启用,并会报错。

Page last updated: 2013-07-01