使用绘制树 (Paint Trees) 工具可在地形上放置树并自定义其绘制。可以用笔刷绘制树,或在整个地形瓦片上大批量放置树。
例如,使用免费的 Unity 地形 - HDRP 演示场景,其中包含六个 SpeedTree 模型。还可以使用树编辑器 (Tree Editor) 创建树(适用于内置渲染管线)。
要访问树绘制,请执行以下操作:
要将树添加到地形,请将树原型添加到绘制树工具:
添加树 (Add Tree) 窗口根据要添加的树提供不同的选项:
Bend Factor:调整树对场景中的风的响应。SpeedTree Modeler 中的树没有弯曲因子 (Bend Factor);只有树编辑器中的树有弯曲因子。请参阅使用风区为树制作动画以了解更多信息。
请参阅树细节级别 (LOD) 以了解更多信息。
Cast Shadows:用于树编辑器中的树。该选项不可编辑;它会列出在树的网格渲染器 (Mesh Renderer) > 光照 (Lighting) > 投射阴影 (Cast Shadows) 设置中选择的选项。
自定义树的位置和特征。除了笔刷大小 (Brush Size) 和树密度 (Tree Density) 之外,这些设置既适用于大批量放置的树,也适用于笔刷绘制的树。
| 属性 | 功能 |
|---|---|
| Brush Size | 笔刷每次笔划下用树覆盖的区域的大小。 |
| Tree Density | 树之间必须保持的距离。这会限制笔刷单次笔划添加的树的数量。请注意,此限制是按笔刷笔划而不是按面积确定,因此在同一区域中重复笔刷笔划会产生更大的密度。另请注意,即使密度为 100,笔刷越大,树之间的距离也越远。 |
| Tree Height | 树高度随机化的范围。使用宽范围表示不同的外观,使用窄范围表示统一的外观。要指定值而不是范围,请禁用随机 (Random)。可能的值是树原始高度的 0.01 到 2 倍。 |
| Lock Width to Height | 默认情况下,树宽度相对于其高度锁定,因此始终会均匀缩放树。要指定宽度,请禁用相对高度锁定宽度 (Lock Width to Height)。 |
| Tree Width | 树宽度随机化的范围。使用宽范围表示不同的外观,使用窄范围表示统一的外观。要指定值而不是范围,请禁用随机 (Random)。可能的值是树原始宽度的 0.01 到 2 倍。 |
| Random Tree Rotation | 如果您的树具有细节级别 (LOD) 组(例如,从 SpeedTree 导入的树),请使用随机树旋转 (Random Tree Rotation) 设置来帮助创建随机、自然的森林效果。如果要以固定旋转来放置树,请禁用此选项。 |
| Color Variation | 应用于树的随机着色量。仅当着色器读取 _TreeInstanceColor 属性时才有效。使用树编辑器创建的所有树都会读取 _TreeInstanceColor 属性,因为它们都使用内置着色器。SpeedTree 中的某些树可能无法读取该属性。 |
| Tree Contribute Global Illumination | 不可编辑;指示是否启用了树资源的光照 (Lighting) > 贡献全局光照 (Contribute Global Illumination) 选项。 |
可以通过单个操作在整个地形瓦片上放置树。请参阅“自定义树以进行绘制”(见上文),了解有关在绘制之前自定义树的信息。
要将树放置在整个地形瓦片上,请执行以下操作:
可以使用笔刷工具添加或删除大批量放置的树。
可以用笔刷在地形上绘制树。
要绘制树,请执行以下操作:
可以在放置树之前或在绘制笔划之间编辑树的属性。例如,对于 SpeedTree 中的树,可以更改绘制地形不同部分时使用的 LOD 组。
要编辑树,请执行以下操作:
如果在单独的 3D 建模应用程序中更改导入的树,则需要在绘制工具中刷新树以更新其在地形上的外观。
要更新树,请在地形瓦片的检视面板 (Inspector) 窗口中转到绘制树 (Paint Trees) > 树 (Trees) > 刷新 (Refresh)。
注意:SpeedTree 中的树使用自己的着色器来制作风中移动的动画。Unity 编辑器仅将此着色器添加到 SpeedTree 导出的文件类型为 spm 或 st8 的树中。如果使用不同的 3D 建模软件编辑树并将它们导出为 fbx 或 obj 文件,Unity 编辑器会为它们分配内置着色器,因此风效果会丢失。要保留风动画,请始终使用 SpeedTree 编辑和重新导出 SpeedTree 树。