设置细节层次
使用详细程度(LODs) 是优化项目的主要方式。关键是当网格远离相机时,将高细节网格切换到细节数量较少的网格。为此,您需要获取详细模型并创建多个版本,每个版本的多边形数量都较少。
在 UNIGINE 中,具有 LOD 的模型可以表示为具有多个表面代表 LOD。 LOD 设置允许您指定表面应切换到另一个表面时的距离。
可以通过以下方式之一配置 LOD:
也可以看看#
- 这详细程度世界管理文章的部分。
- Content Profiler 工具的 Surfaces 选项卡,用于监控曲面负载 (通过切换 Min/Max Visibility 和 Min/Max Fade 过滤器)
自动 LOD 设置#
自动 LOD 设置意味着模型的 LOD 在导入 UNIGINE 时被分配和配置。
导入模型时,您可以选择以下选项之一:
- 通过 UNIGINE自动生成LOD。在这种情况下,您只需要您的高多边形模型 - 引擎会完成剩下的工作。
- 使用名称后缀来指定 LOD。在这种情况下,您应该事先在第三方软件中为模型的不同 LOD 准备不同的网格。
自动生成 LOD#
UNIGINE 使您能够在导入时自动为您的高多边形模型生成 LOD,从而为您节省大量时间,因为现在您不必在三分之一的时间内手动准备细节级别-派对软件。该功能基于 meshoptimizer 库。
要在将模型导入 UNIGINE 时自动生成 LOD,只需将其拖到 Asset Browser 并执行以下操作:
-
在导入设置窗口中,在 Use LODs 下拉列表中选择 Auto-Generated。
- 设置所需的 LOD 数量。例如,我们将生成 3 LOD。
-
为每个 LOD 指定 Target Polycount (%) 值。它定义了每个 LOD 的几何简化程度。
- 对于 LOD 0,保留默认值 100 百分比。
- 对于 LOD 1,设置原始多边形数的 60 百分比。
- 对于 LOD 2,设置原始多边形数的 30 百分比。
-
为每个 LOD 指定最小和最大 visibility 距离。每个 LOD 的最大可见距离应等于下一个 LOD 的最小可见距离。最后一个 LOD 的最大可见距离应等于 inf。
- 对于 LOD 0,保留默认的 Min 距离并将 Max 距离设置为 5 单位。这意味着无论相机离网格有多近,表面仍然可见。
- 对于 LOD 1,将 Min 和 Max 距离设置为 5 和 30 单位。这意味着当相机距离网格 5 个单位时,第一个 LOD 表面将不可见,而第二个 LOD 表面将显示在 30 个单位的距离上。
- 对于 LOD 2,将 Min 距离设置为 30 单位,并保留默认的 Max 距离。 30 个单位后,第二个 LOD 表面将不可见,而将显示第三个 LOD 表面。
-
为每个 LOD 指定最小和最大 fade 距离:
- 对于 LOD 1,保留默认的 Min 距离并将 Max 距离设置为 10 单位。它将延长 LOD 表面仍然可见的距离并提供平滑的淡入淡出。
- 对于 LOD 2,将 Min 距离设置为 10 单位。在 5 到 15 个单位之后,第二个 LOD 表面将平滑淡入。Max 距离设置为 20 单位。在 30 到 50 个单位之后,第二个 LOD 表面将平滑淡出。
- 对于 LOD 3,将 Min 距离设置为 20 单位并保留默认的 Max 距离。第三个 LOD 表面将开始从 30 到 50 单位平滑淡入。
- 为 Normals Preserve 选项保留 0 值以忽略法线,同时简化网格拓扑。
- 为 Recalculate Normals by Angle 选项保留默认的 60 值。
引擎将使用指定的设置自动生成和配置所有 LOD。
通过后缀组合 LOD#
如果您在第三方软件中准备 LOD,您可以根据名称后缀自动分配和配置模型的 LOD。
步骤 1. 从第三方软件导出模型#
例如,我们将使用炼油厂演示中的 tubes_constructor_chrome_1120.fbx 模型(在 UNIGINE SDK 浏览器中可用)。这个 FBX 由几个网格组成,每个网格代表管道构造器的一个元素。
在 3D 编辑器中执行以下操作:
-
为模型的不同 LOD 创建多个网格:为最近的 LOD 创建一个详细的网格,为更远的 LOD 创建一些不太详细的网格。
例如,对于表示管构造器元素的每个网格(10 个网格),有 3 个网格表示 LOD:
- 导出网格作为 .fbx 文件。
步骤 2. 将模型导入 UNIGINE#
要将模型导入 UNIGINE,请将之前导出的 FBX 文件拖放到 Asset Browser 并执行以下操作以根据名称后缀自动创建 LOD:
- 在 Use LODs 下拉列表中选择 Combine By Postfixes。
- 指定存储在 FBX 容器中的 LOD 的最大数量(在我们的示例中为 3)。
-
对于每个 LOD,定义一个后缀,用于将 FBX 文件中的对象分组到相应的 LOD。
后缀必须与使用的后缀相同在 3D 编辑器中创建对象.对于 tube 构造函数模型,应指定以下后缀:
Names of generated surfaces will be as follows: material_name + LOD_postfix.
-
指定每个 LOD 的最小和最大可见距离。每个 LOD 的最大可见距离应等于下一个 LOD 的最小可见距离。最后一个 LOD 的最大可见距离应等于 inf。
- 对于 _lod_0,保留默认的 Min 距离并将 Max 距离设置为 5 单位。这意味着无论相机离网格有多近,表面仍然可见。
- 对于 _lod_1,将 Min 和 Max 距离设置为 5 和 30 单位。这意味着当相机距离网格 5 单位时,第一个 LOD 表面将不可见,而第二个 LOD 表面将显示在 30 单位的距离上。
- 对于 _lod_2,将 Min 距离设置为 30 单位,并保留默认的 Max 距离。在 30 单位之后,第二个 LOD 表面将不可见,而将显示第三个 LOD 表面。
-
指定每个 LOD 的最小和最大渐变距离:
- 对于 _lod_0,保留默认的 Min 距离并将 Max 距离设置为 10 单位。它将延长 LOD 表面仍然可见的距离并提供平滑的淡入淡出。
- 对于 _lod_1,将 Min 距离设置为 10 单位。在 5 到 15 单位之后,第二个 LOD 表面将平滑淡入。Max 距离设置为 20 单位。在 30 到 50 个单位之后,第二个 LOD 表面将平滑淡出。
- 对于 _lod_2,将 Min 距离设置为 20 单位并保留默认的 Max 距离。第三个 LOD 表面将从 30 单位平滑淡入到 50 单位。
结果,将导入具有 10 个网格的 FBX 容器。每个网格将有 3 个表示 LOD 的表面。
步骤 3. 将模型添加到世界#
将导出的模型添加到世界中这里描述.所有 LOD 都将根据指定的导入值创建和设置:
如果需要,在 Parameters 窗口的 Node 选项卡中调整 LOD 表面:
- 配置 Min and Max Parent 设置。在本教程中,我们使用默认值 1。
尝试向前/向后移动相机以检查 LOD 的切换方式:
手动 LOD 设置#
手动 LOD 设置意味着模型的 LOD 是在第三方 3D 编辑器中创建的,并且在模型已经导入并添加到场景中时会调整 LOD 参数。
步骤 1. 导出 LOD#
要导出具有 LOD 的网格,请执行以下操作:
-
在您的 3D 编辑器中,创建一个详细的模型和一些具有少量多边形的模型。例如,您可以只复制现有的详细模型并减少多边形的数量。
您应该为分配了唯一材质的模型的每个部分创建单独的 LOD。例如,我们将使用来自叠加基准测试的示波器模型(可通过 UNIGINE SDK Browser 获得)。该模型已经包含 3 个 LOD。
10109 polygons 5004 polygons 2583 polygons LOD 0LOD 1LOD 2 - 根据 3D 编辑器使用的管道生成 LOD。例如,在 3ds Max 中,您应该对表示 LOD 的网格进行分组,然后通过 Level of Detail 实用程序创建 LOD。
- 将具有 LOD 的模型导出为 *.fbx 文件。
步骤 2. 将模型导入 UNIGINE#
到导入模型进入UNIGINE:
- 单击 Asset Browser 中的 Import 并选择导出的 FBX 文件。
- 在 Import FBX 窗口中,启用 Merge Static Meshes 选项。否则,LOD 将作为单独的网格而不是曲面导入。
- 导入模型。
如果选择导入的 FBX,其内容将在 Parameters 窗口的 Hierarchy 部分预览。
步骤 3. 向世界添加模型#
第 4 步:设置 LOD#
本节介绍如何设置网格的 LOD,以便在相机开始远离网格时平滑地将高细节 LOD 切换到低细节。 LOD 表面有 3 个参数:
可见性和淡化距离
对于每个 LOD 表面,您应该指定可见距离和淡入淡出距离。要设置 LOD 表面,请执行以下操作:
- 打开世界等级窗口,然后选择添加的节点。
-
在 Node 选项卡(Parameters 窗口)的 Surfaces 组中,选择第一个 LOD 曲面:
- 将其 Maximum Visibility 距离设置为 5。这意味着当相机距离网格 5 个单位时,第一个 LOD 表面将不可见。
- 将 Minimum Visibility 距离保留为 -inf。这意味着无论相机离网格有多近,表面仍然可见。
- 将 Maximum Fade 距离设置为 10 单位。它将延长 LOD 表面仍然可见的距离并提供平滑的淡入淡出。
您可以禁用其他 LOD 表面以查看当前 LOD 表面设置的结果。 -
选择第二个 LOD曲面并:
- 将第二个 LOD 曲面的 Minimum Visibility 距离设置为恰好从第一个 LOD 曲面的 Maximum Visible 距离结束的位置开始:以 5 为单位。这意味着当第一个 LOD 表面开始淡出时,将显示第二个 LOD 表面。
- 将 Maximum Visibility 距离设置为30个单位。 30 个单位后,第二个 LOD 表面开始淡出,并显示第三个 LOD 表面。
- 将 Minimum Fade 距离设置为 10 单位。在 5 到 15 个单位之后,第二个 LOD 表面将平滑淡入。
- 将 Maximum Fade 距离设置为 20 单位。在 30 到 50 个单位之后,第二个 LOD 表面将平滑淡出。
- 选择第三个 LOD表面并且:
- 将 Minimum Visibility距离设置为 30 单位。这意味着当第二个 LOD 表面开始消失时,将显示第三个 LOD 表面。
- 将 Maximum Visibility距离设置为 300 单位。 300 个单位后,第三个 LOD 表面完全消失。
- 将 Minimum Fade距离设置为 20 单位。第三个 LOD 表面将开始从 30 到 50 个单位平滑淡入。
-
将 Maximum Fade距离设置为 50 单位。 300 个单位后,网格将开始平滑淡出。
如果要让最后一个 LOD 表面始终可见,请将最大可见距离设置为 inf。
您应该为同一 LOD(如果有)的每个表面指定相同的设置。一个细节层次的不同表面应该具有相同的设置以同时出现和消失。
最小和最大父母#
LOD 的另一个重要参数是 Min Parent and Max Parent。
这些参数使您能够指定将测量最小和最大可见距离到层次结构中的哪个表面或节点。使用默认值 1。在这种情况下,网格的所有表面将同时切换,因为它们的距离不是测量到表面本身,而是测量到整个网格的边界框。
读这里关于这些参数。