LOD 组 (LOD Group) 组件管理游戏对象的细节级别 (LOD)。
LOD 级别之间的过渡的控件
LOD 组选择条,用于在 LOD 级别之间切换以及预览 LOD 渲染
关于 LOD Bias 质量设置的信息。如果 Lod Bias 属性设置为 1 以外的任何值,将显示此消息。
所选 LOD 级别的 Fade Transition Width 设置。仅在禁用 Animate Cross-fading 属性(即,选择按宽度而不是按时间来设置过渡区)的情况下,才显示该属性。
为所选 LOD 级别设置的网格渲染器 (Renderers)
此外,该组件底部有两个按钮:
LOD 组选择条将不同的 LOD 级别表示为彩色框。
每个 LOD 级别框中显示的百分比表示激活该级别的阈值。该阈值基于游戏对象的屏幕空间高度与屏幕总高度之比。例如,如果 LOD 1 的阈值设置为 50%,则当摄像机回拉得足够远,使得游戏对象的高度占视图的一半时,LOD 1 就会激活。
LOD 预览的播放头。可以来回拖动摄像机图标来测试 LOD 级别及其过渡。在播放头的底部,可以看到当前的百分比。
若要选择某个级别,请单击该级别框。对于所选的每个 LOD 级别,可以选择要使用的渲染器或自定义过渡区。
若要在选择条中添加和删除 LOD 级别,右键单击 LOD 级别框,然后从上下文菜单选择 Insert Before 或 Delete。
级别调整控件。若要更改 LOD 级别的百分比值,请拖动 LOD 级别框边界的左边框。
注意:如果 Lod Bias 属性未设置为 1,摄像机位置可能不匹配每个 LOD 级别过渡到下一级别的实际位置。在此情况下,选择条下方会显示一条警告消息。
在 LOD 组选择条上移动摄像机图标时,Scene 视图将显示 LOD 级别之间的过渡预览。摄像机图标充当播放头,可用于来回拖动以控制沿 LOD 组选择条预览的准确位置。预览会显示摄像机将在每个 LOD 级别渲染的内容。
LOD 预览播放头使沿 LOD 组选择条的准确位置显示为百分比(从左侧的 100% 到右侧的 0%)。该百分比表示游戏对象的屏幕空间高度与屏幕总高度之比。
在级别中移动时,Scene 视图显示树资源的包围盒,而覆盖层指示哪个 LOD 处于激活状态:
在 LOD 组选择条上选择 LOD 级别框时,将显示 Renderers 面板。
“Renderers”(渲染器)实际上是为此 LOD 级别保存网格的游戏对象。通常,这是具有 LODGroup 组件的游戏对象的子项。
若要为当前的 LOD 级别设置渲染器网格,请单击 Add 框,然后从对象选择器中选择该 LOD 级别的游戏对象。
可以为渲染器选择任何游戏对象,但是如果选择的游戏对象还不是子项,Unity 会提示您将其作为 LODGroup 游戏对象的子项。
LOD 级别之间的平滑过渡可以改善玩家的游戏体验。摄像机移近或移远时,您不希望玩家发现当前的 LOD 级别与下一个级别之间存在明显的切换痕迹(有时称为突现 (popping))。
平滑的过渡发生在过渡区内;在此区域中,Unity 分别渲染当前和下一个 LOD 级别,然后使两个级别一起交叉淡化。
交叉淡化 (Cross-fading) 是用于同时渲染两个级别的方法,其中,当前 LOD 级别的权重为 1 至 0,下一个 LOD 级别的权重为 0 至 1:
Unity 通常通过屏幕空间抖动或透明度来实现交叉淡化。对于上一个 LOD 级别,不会发生交叉淡化:当前级别只是淡出。
要在 LOD 级别上设置平滑过渡,请执行以下操作:
从下拉菜单中选择 Fade Mode,然后选择 Cross Fade:
注意:如果树资源是使用 SpeedTree 制作的,请选择 Speed Tree 模式。有关更多信息,请参阅使用 SpeedTree 模型。
默认情况下已启用 Animate Cross-fading 选项,这意味着 Unity 执行基于时间的过渡。如果希望基于摄像机位置来定义您自己的过渡区,请禁用 Animate Cross-fading 选项并设置 Fade Transition Width 属性。
有关更多信息,请参阅自定义过渡区值。
两个 LOD 级别之间的过渡从模型的高度比值跨过下一个 LOD 阈值时开始。例如,如果 LOD 1 阈值设定为 60%,则 LOD 0 和 LOD 1 级别之间的过渡总是在模型高度一达到 60% 时就开始。此过渡持续时间很短:
此行为是按时间变化的,因此在启用 Animate Cross-fading 属性后,无需设置任何属性。对于每个 LOD 级别,交叉淡化的确切持续时间都是相同的。
或者,也可以在每个 LOD 级别内按位置手动定义过渡区。每个区域在下一个 LOD 级别的阈值之前开始和结束。可以定义每个 LOD 级别中用作过渡区的比例;即,设置从过渡开始到下一个级别阈值之间的距离:
使用 Fade Transition Width 属性来定义每个 LOD 级别上的过渡区:
禁用 Animate Cross-fading 选项。
单击要设置的特定 LOD 级别框。
Fade Transition Width 属性显示在 LOD 组选择条之下。
设置 Fade Transition Width 属性,将交叉淡化过渡区的宽度定义为当前 LOD 级别整个长度的一个比例(0.0 与 1.0 之间)。例如,指定更小的值可延迟进行混合并创建更快的过渡。
SpeedTree 几何体存储每个顶点的下一个 LOD 位置。然后,每个顶点都知道如何在当前 LOD 位置与下一个 LOD 位置之间进行插值。Unity 导入在 SpeedTree 中创建的模型时,自动将这些模型设置为 Speed Tree 模式。
Unity 只需渲染当前 LOD 几何体并提供 0 到 1 之间的值,从而指示每个顶点逐渐移动到下一个 LOD 位置。在过渡结束时,当前 LOD 和下一个 LOD 的几何体完美匹配。
两个 LOD 级别之间的混合从 0 开始,到 1 结束。沿该区域的任何点都是混合因子 (blend factor),表示当前 LOD 级别与下一个 LOD 级别之间的权重:
Speed Tree 模式使用混合因子来插入当前__网格 LOD 级别__与下一个网格 LOD 级别之间的顶点位置,然后在该位置渲染几何体。
注意:Speed Tree 模式仅用于两个网格 LOD 级别之间的混合:即,当前和下一个 LOD 级别都具有网格渲染器 (Mesh Renderer) 的情况。过渡到公告牌 LOD 级别或完全淡出时,Unity 执行交叉淡化 (Cross Fade) 式混合。
Unity 没有提供默认的内置技术来混合 LOD 几何体。您需要根据游戏类型和资源制作管线来实现自己的技术。
Unity 根据游戏对象的屏幕大小来计算混合因子,并在 unity_LODFade.x uniform 变量中将其传递给着色器。对于使用 LOD 淡化来渲染的游戏对象,请根据所选的 Fade Mode,使用 LOD_FADE_PERCENTAGE
或 LOD_FADE_CROSSFADE
关键字。
对于基于时间(动画化)的过渡,可以在全局为具有 LODGroup.crossFadeAnimationDuration 成员的每个 LOD 级别设置准确的过渡持续时间。
有关 LOD 命名约定的信息,请参阅细节级别。