导航网格烘焙

一旦标记完导航网格 (Navmesh) 几何体和层之后,就可以烘焙导航网格几何体了。

在导航 (Navigation) 窗口中(窗口 (Window)->导航 (Navigation)),转到烘焙 (Bake) 选项卡(右上角),然后点击“烘焙”按钮(右下角)。

导航烘焙窗口

以下是会影响导航网格 (Navmesh) 烘焙的属性:

半径 (Radius) “典型”代理的半径(最好是最小值)。

高度 (Height) “典型”代理的高度(角色通过所需的“空隙”)。

最大坡度 (Max Slope) 坡度大于此值的所有表面会予以丢弃。

台阶高度 (Step height) 高度差低于台阶高度时,则认为连接至导航网格区域。

下落高度 (Drop height) 如果该属性值是正数,则将为高度差小于该值的相邻导航网格表面放置分离网格链接。

跳跃距离 (Jump distance) 如果该属性值是正数,则将为水平距离小于该值的相邻导航网格表面放置分离网格链接。

高级 (Advanced)

最小区域面积 (Min region area) 面积小于该阈值的区域将予以丢弃。

宽度误差 (Width inaccuracy) % 容许的宽度误差

高度误差 (Height inaccuracy) % 容许的高度误差

高度网格 (Height mesh) 如果勾选此选项,原始高度信息会存储起来。这会对速度和内存性能造成一定影响。

请注意,烘焙的导航网格是场景的一部分,代理可以通过该导航网格。要删除导航网格,在烘焙 (Bake) 选项卡中点击清除 (Clear)。

实现细节

烘焙导航网格 (Navmesh) 时,它会映射到 XZ 平面中的方格中。可视化方格时,其边框被视为导航网格 (Navmesh) 上的亮蓝色轴对齐线。Unity 在一个场景中最多支持 1024 个方格,每个方格用 1000×100 个体素表示。如果您打算让代理在大区域中导航,请注意导航网格 (Navmesh) 的大小和最终的网格数。

具有亮蓝色轴对齐线的导航网格显示方格标度


半径 (Radius) 的默认设置为 0.5,宽度误差 (Width Inaccuracy) 的默认设置为0.16666667 (16.666667%)。默认设置的方格边长可计算为:

1000 * (2*半径) * 宽度误差 = 1000 * (2*0.5) * 0.16666667 = 166.66667。

增加宽度误差 (Width Inaccuracy) 将允许容纳更大面积,但会降低导航网格 (Navmesh) 精度。

例如,如果您的网格有 32 x 32 个方格,则您将拥有 1024 个方格。这意味着,如果您拥有想与导航网格 (Navmesh) 配合使用的真正巨大地形,按照默认设置,该地形面积不得超过 5.333 乘以 5.333 千米(32 * 166.66667 米)