跟着烟雨的博客可以先打开下述界面 (https://www.lfzxb.top/cpp-recastnavigation-to-unity-or-server/)

其中右下角的 Build 按钮就是 Navmesh 的 Build 界面,其中 Build 是通过 **`Sample`** 类作为入口进行的,

在原项目 (RecastDemo) 中,总共有四个 Sample 派生类,分别是 Sample_Debug、Sample_SoloMesh、Sample_TempObstacles、Sample_TileMesh

以 Sample_SoloMesh 为例:

  • 先初始化 Sample_SoloMesh
  • 选中 Mesh 后初始化 Sample_SoloMesh.InputGeom (), 把 mesh 信息缓存到内存中
  • 计算可以包围所有 Mesh 的最大的包围盒
  • 计算当前 Mesh 的 BVH 树

计算 Mesh 最大的包围盒:

算法:

遍历所有的顶点,记录 x、y、z 最大值和最小值,这两个向量就是这个 Boundary box 的两个斜对角的顶点