Version: Unity 6.0 (6000.0)
语言 : 中文
风参考
使用高度贴图

草和其他细节

地形上可能有草丛和其他小型对象(如岩石)覆盖在其表面上。Unity 使用纹理四边形或完整网格渲染这些对象,具体取决于所需的细节级别和性能。

实例化细节适用于所有渲染管线,包括高清渲染管线 (HDRP)。

有草的地形
有草的地形

地形细节支持多种模式,每种模式在游戏开发过程中都有不同的用途。

模式 描述
实例化网格 (Instanced mesh) Unity 建议使用此模式,因为它最适合需要在地形上放置任意数量的任意网格的大多数情况。

要添加实例化网格,请选择添加细节网格 (Add Detail Mesh) 并启用使用 GPU 示例化 (Use GPU Instancing) 选项。
顶点光照网格 (Vertex Lit mesh) 不使用 GPU 实例化进行渲染。相反,它将所有细节实例合并到一个网格中,从而产生简单的着色效果并限制可以实现的实例数量。

要添加顶点光照网格,请选择添加细节网格 (Add Detail Mesh) 并将渲染模式 (Render Mode) 设置为顶点光照 (Vertex Lit)
草网格 (Grass mesh) 工作原理类似于顶点光照网格,但 Unity 将这些网格视为草,因此它们始终具有向上法线并在风中移动。

要添加草网格,请选择添加细节网格 (Add Detail Mesh) 并将渲染模式 (Render Mode) 设置为草 (Grass)
草纹理 (Grass Texture) 允许直接从纹理创建在风中移动的草四边形网格。无需指定任何自定义网格,还可以启用一个选项,使草四边形始终面向摄像机以获得公告牌效果。

如需使用此选项,可选择添加草纹理 (Add Grass Texture)

绘制细节

要启用草和细节绘制,请选择地形检视面板 (Terrain Inspector) 工具栏上的绘制细节 (Paint Details) 按钮。

地形检视面板中的绘制细节按钮
地形检视面板中的绘制细节按钮

要从覆盖层访问绘制细节 (Paint Details)

  1. 地形工具 (Terrain Tools) 覆盖层中,选择树叶模式 (Foliage Mode) 树叶模式菜单 (Foliage Mode Menu)。树叶模式工具显示在地形工具覆盖层的末尾。
  2. 地形工具覆盖层上的可用树叶模式工具中,选择绘制细节 (Paint Details) 绘制细节

最初,一块地形是没有草或细节元素的。在检视面板中,单击编辑细节 (Edit Details) 按钮可显示带有添加细节网格 (Add Detail Mesh)添加草纹理 (Add Grass Texture) 选项的菜单。单击任一选项将弹出一个窗口,在其中可以选择要添加到地形以便进行绘制的资源

添加细节网格

添加细节网格 (Add Detail Mesh) 窗口
添加细节网格 (Add Detail Mesh) 窗口

使用细节预制件 (Detail Prefab) 字段可从项目中选择预制件。为了创建真实的外观,一个随机因子会影响每个网格以确定大小和颜色。Unity 使用柏林噪声算法来生成此类随机因子。

最小宽度 (Min Width)最大宽度 (Max Width)最小高度 (Min Height)最大高度 (Max Height) 的值指定沿 X 和 Y 轴的上限和下限缩放,用于随机生成网格。

地面对齐率 (Align to Ground (%)) 的值指定细节轴与地形法线对齐的程度。0 表示未对齐,100 表示与法线对齐。

位置抖动率 (Position Jitter (%)) 控制细节分布从有序到随机的随机性。仅当在质量 (Quality) 设置中关闭旧版分布时,此选项才可用。

噪声种子 (Noise Seed) 设置随机数生成器种子。每个种子值代表唯一的生成。如果为两种类型的细节设置相同的种子,则生成的实例将变得相同。噪声扩散 (Noise Spread) 的值是指噪声模式在 X-Z 平面上的缩放,值越大,给定区域内的变化就越多。

孔边填充率 (Hole Edge Padding (%)) 设置用于控制细节对象与孔区域边缘的距离。有关更多信息,请参阅 DetailPrototype.holeEdgePadding

细节密度 (Detail Density) 的值控制细节相对于其大小的密度。您可以在“覆盖”(Coverage) 细节散射模式下启用此功能,可在地形设置 (Terrain Settings) 中进行设置。

健康颜色 (Healthy Color)干枯颜色 (Dry Color) 设置用于控制颜色变化。Unity 在健康颜色和干枯颜色之间进行线性插值,并根据网格的大小选择颜色。例如,系统认为较大的网格更健康。此类网格的线性插值结果更加倾向于健康颜色 (Healthy Color) 的色调。选择使用 GPU 实例化 (Use GPU Instancing) 时,这些颜色设置会消失,因为它们对实例化网格没有影响。

受密度比例影响 (Affected by Density Scale) 复选框用于确定地形设置 (Terrain Settings) 中设置的细节密度比例 (Detail Density Scale) 设置是否影响此细节。

可将渲染模式 (Render Mode) 设置为顶点光照 (Vertex Lit)草 (Grass)

渲染模式 描述
顶点光照 将细节网格渲染为场景中顶点光照的实体游戏对象,这些游戏对象不会在风中移动。
使用类似于草纹理的简化光照渲染场景中的细节网格,并在风中移动。

注意:要使用顶点光照或草渲染模式在细节上应用纹理,请将纹理分配给 MainTex 材质属性(内置/URP 中基色贴图的默认属性名称)。对于非实例化细节,不考虑其他材质属性。

使用 GPU 实例化

您可以指定是否要使用 GPU 实例化来渲染细节网格。通过 GPU 实例化,Unity 使用预制件上指定的材质和着色器进行渲染。因此您可以在着色器中执行更多自定义设置并使用 Shader Graph

Unity 仍会将宽度 (Width) 和高度 (Height) 噪声应用于每个实例,但会禁用健康颜色 (Healthy Color)/干枯颜色 (Dry Color) 噪声。您可以在着色器中使用自己的颜色变化技术以及其他随机化。

本质上,Unity GPU 实例化的某些限制确实会影响渲染。例如:

  • 目标平台需要支持 GPU 实例化。
  • 着色器必须支持 GPU 实例化。(大多数着色器都支持。)
  • 对象以 1,023 个或更少的批次渲染。
  • 不支持实例化光照探针光照或光照贴图光照。

与 Unity 每帧动态构建实例化常量缓冲区时的常规实例化不同,实例化细节具有持久常量缓冲区,可在目标硬件允许的情况下提高 CPU 和 GPU 性能,但代价是适当增加 GPU 内存使用量。

如果选择使用 GPU 实例化 (Use GPU Instancing),则渲染模式 (Render Mode) 设置将变为灰色且不可用。

添加草纹理

添加草纹理 (Add Grass Texture) 窗口
添加草纹理 (Add Grass Texture) 窗口

添加草纹理 (Add Grass Texture) 窗口

细节纹理 (Detail Texture) 是表示草的纹理。您可以从__ Asset Store__由 Unity 和社区成员创建的免费和付费的资产库,其规模处于不断壮大中。提供各种资产,涵盖了从纹理、模型和动画到完整项目示例、教程和编辑器扩展等类型。更多信息
See in Glossary
下载纹理,也可以创建自己的纹理。纹理是一个小图像,图像中的空白区域的 Alpha 设置为零。请注意,这里的“草”(Grass) 是一个通用术语;它可以是表示花朵或人造物体(如铁丝网)的纹理。

最小宽度 (Min Width)最大宽度 (Max Width)最小高度 (Min Height)最大高度 (Max Height)噪声种子 (Noise Seed)噪声扩散 (Noise Spread)孔边填充率 (Hole Edge Padding (%))地面对齐率 (Align to Ground (%))位置抖动率 (Position Jitter (%))细节密度 (Detail Density)受细节比例影响 (Effect by Density Scale)健康颜色 (Healthy Color)干枯颜色 (Dry Color) 等设置的工作方式均与网格相同。上面的“添加细节网格”部分提供了更多详细信息。

当启用公告牌 (Billboard) 选项时,草的图像将旋转,因此它们将始终面向摄像机。当您希望显示密集的草地时,此选项很有用,因为草丛是二维的,不能从侧面看到。然而,对于稀疏的草,单垛草丛的旋转可能会变得很明显,产生奇怪的效果。

删除细节

要删除细节,请选择要删除的细节,单击编辑细节 (Edit Details) 按钮,然后选择删除 (Remove)。删除细节时,Unity 会清除代表散布该细节的地形区域的数据。


  • 2022–07–20
  • 添加了有关细节密度和分布的信息。
风参考
使用高度贴图