Navigation Lab 快速入门:使用多个地块

在大多数主机平台和 PC 游戏项目中,游戏地形网格太大,无法随时完全存储在内存中。通常将其分割为多个子层级(地块),这些子层级将以流式加载方式载入和清除出内存以响应游戏玩法事件(如玩家角色进入或离开特定区域)。Gameware Navigation SDK 提供内置机制来处理多个地块,可以根据需要自动交换和缝合 NavData,以确保人物可以穿过相邻地块之间的边界。有关在 SDK 和 NavData 生成过程中处理地块的背景信息,请参见将地形划分为地块

Navigation Lab 还支持多个地块。您可以通过提供多个 .obj 文件作为输入设置单独的子层级,可以独立生成、查看和测试这些地块的 NavData。您甚至可以设置排他或“相似”地块,它们通常表示相同地形区域的两种不同状态。

有关说明下面所讨论的大多数概念的示例,请通过 Samples 面板打开 generation > castle_multisectors_swappable.LabSample

创建和管理多个地块

每次将新的 .obj 文件拖放到 Navigation Lab,或通过 File 菜单打开该文件时,Navigation Lab 将为所输入几何体创建一个新的地块。它将新条目添加到 Scene 面板的列表中,带有用于创建地块的 .obj 文件的名称。

地块的项目中还会列出您为该地块创建的所有种子点和 TagVolume。在生成 NavData 之后,每个项目还包含为其相应的 .obj 文件生成的 NavData。

您可以切换 Scene 面板中的复选框,以显示和隐藏与每个地块相关的数据。

提供种子点和 TagVolume

Navigation Lab 中的每个地块保留自己的种子点和 TagVolume 列表,它们仅应用于该地块。如果您在 Navigation Lab 中有多个地块,并且您尝试添加一个新种子点或 TagVolume,将提示您选择每个新种子或 TagVolume 应该应用到的地块:

当该窗口打开时,3D 视图将更新,以仅显示在下拉列表中选择的地块。完成添加种子点或 TagVolume 后关闭窗口。

请注意,如果向任何地块添加种子点,您必须也向其他每个地块添加至少一个种子点。

重建选定地块的 NavData

默认情况下,Navigation Lab 始终为 Scene 面板中列出的所有地块生成 NavData。但是,您可以选择将数据生成限制为一组特定地块。

Generation 面板中单击 SectorsToBuild 按钮。会打开一个小窗口,其中列出了所有已知的地块。

选择要为其生成数据的地块,然后启动生成过程。

重叠数据

如果与两个或多个地块关联的输入几何体重叠,数据生成系统自动在重叠区域中创建附加数据,这些数据反映地块在运行时以流式加载方式载入和清除出时可能出现的所有地块几何体的可能的组合。有关 NavData 系统中重叠数据的背景信息,请参见处理地块重叠

默认情况下,Navigation Lab 将不显示重叠数据。相反,它会以透明方式将重叠区域的 NavData 交换进和交换出 3D 视图,以匹配在 3D 视图中可见的地块的几何体。这与您的游戏中的运行时 Database 类的行为相匹配:当地块以流式加载方式载入和清除出内存时,以相同的方式自动换入或换出其重叠数据。

相似地块和 CellBox

处理地块重叠中所述,Gameware Navigation SDK 提供了定制生成重叠数据的方式:

  • 如果您知道特定地块组合永远不会同时加载,则可以将这些地块标记为排他。不会为这些组合生成任何重叠数据。
  • 如果您的地块是轴对齐的或基于栅格的,可以通过指定由 NavData 生成系统用以内部分隔地形的单元栅格中的地块的确切范围,减少重叠数据。

有关这些方法的详细信息以及如何在 Navigation Lab 中使用它们,请参见处理地块重叠