Github: RecastNavigation
模块
- Recast:负责根据提供的模型生成导航网格。
- Detour:利用导航网格做寻路操作。
- DetourCrowd:提供了群体寻路行为的功能。
- Recast Demo:一个很完善的Demo,演示了这个开源库能做的所有功能。
入手点
RecastDemo中生成导航网格的相关代码:
1 | // recastnavigation/RecastDemo/Source/Sample_SoloMesh.cpp:371 |
RecastDemo中寻路的相关代码:
1 | // recastnavigation/RecastDemo/Source/NavMeshTesterTool.cpp:681 |
编译指引
Mac:
- 下载Premake5,放到/usr/local/bin目录下
- 下载SDL2,将安装包中的SDL2.framework文件夹放到/Library/Frameworks下
- 拉源码,git clone https://github.com/recastnavigation/recastnavigation.git
- 切到RecastDemo目录下执行命令1premake5 xcode4
- 用Xcode打开工程RecastDemo/Build/xcode4/recastnavigation.xcworkspace
- 如下图所示,删掉这个白色的SDL2
- 然后选到第2步的这个SDL2文件夹
- Target选到RecastDemo,开搞~
- 如果遇到这个报错,说找不到RecastAssert.h,可尝试将它改成#include “RecastAssert.h”
- 然后这个Demo就跑起来了,选一个Sample,选一个Input Mesh,然后点Build,接下来就可以在地图中随意选择Start点(双指点击)和End点(单指点击),就能显示导航路径了,更多功能慢慢探索吧。
Linux:
- 切root,开发机上sudo -i
- 安装SDL2,官方说每个Linux发行版到安装方式可能不同,此处给出Debian的,因为我的开发机是安装的Debian~哈哈哈~命令如下,如果提示有其他依赖,依次安装即可
apt-get install libsdl2-dev
我安装的时候提示缺少了这几个,也需要装一下
apt-get install libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libsdl2-dev - 下载Premake5,放到/usr/bin/目录下
- 切到RecastDemo目录,执行premake5 gmake
- 切到RecastDemo/Build/gmake目录下执行命令make
- 如果遇到以下报错,需要更新gcc到8或以上的版本
cc1plus: error: -Werror=class-memaccess: no option -Wclass-memaccess
Debian jessie 安装更新gcc:
/etc/apt/sources.list增加一行
deb http://ftp.de.debian.org/debian sid main
然后
apt-get update
apt-get install build-essential - 然后可以跑一下可执行文件./RecastDemo/Bin/Tests,看到All tests passed就OK了~