安装
1.下载recastnavigation的源码.
2.recastnavigation依赖于sdl的库。所以需要安装sdl。下载sdl2源码并解压。
下载源码版需要编译,直接下载编译好的
3.sdl解压后的文件夹可能叫SDL2-2.0.16,修改为SDL,复制到/recastnavigation-master/RecastDemo/Contrib。 此时RecastDemo/Contrib/SDL/lib/x86下有了SDL2.dll、SDL2.lib、SDL2main.lib(如果第二部下载的是源码版,要自己编译,把编译好的放到此目录下)
4.下载premake5.exe。复制到/RecastDemo
5.在/RecastDemo目录打开cmd界面,执行premake5 vs2019(本机的vs版本)
6.进入/RecastDemo/Build/vs2019,打开recastnavigation.sln
7.把RecastDemo工程设置为启动项目,启动!
参数
-
Rasterization
- cellsize:数值越小,越接近原始多边形的形状,同时生成速度和运行时内存占用也会增大
- Cell Height:数值越小,越接近原始多边形的形状,不会影响内存,但是cellHeight越高,离原始图形的距离就越高
例:Height=0.1
Height=0.6
-
Agent(角色,以为站在角色的角度,行走面该是什么样的)
-
Height:角色高度,例如有一张桌子的地图,桌子下面本来是没有行走面的,但是由于agent的Height很低,所以能钻到桌子下面,意味着桌子下面可生成行走面
例如:height=4.4
Height=1.0
-
Radius:角色半径,角色的半径越大,角色中心越不能贴近墙或地图边缘,那么墙和地图边缘就没必要生成行走面
例:Radius=0.1
Radius=2.0
-
Max Climb:最大跨过的高度,可跨越两个行走面的高度差
例:Climb=1.0
Climb=2.0
-
Max Slope:最大坡度,可跨越行走面最大斜率(Climb是跨越两个行走面高度差的能力,Slope是在一个行走面上的爬坡能力)
例:Slope=40
Slope=15
-
-
Region:
-
Min Region Size:生成的最小区域的大小,在一些小面积的平面身上,如果region过小,很可能在这些小平面上生成行走面(如果这些行走面按照设计是不可到达的,那么这些小行走面没有意义,形成孤岛效果)
例:region=20
region=10
-
Merged Region Size: 可合并区域的大小,生成网格可能会生成一些细小的三角形,设置大一点的Merge值,可以把较小的三角形合并
例:Merged=1
merge=20
-
-
Partitioning:
- Watershed:分水岭算法,最经典、效果最好,但处理比较慢,一般用于离线处理。
- Monotone:最快且可以保证生成的是不重叠、没有洞的 Region,但是生成的 Region 可能会又细又长,效果不好。
Layer:速度、效果都介乎分水岭算法和 Monotone partioning 之间,比较依赖于初始数据。 - Layers:速度、效果都介乎分水岭算法和 Monotone partioning 之间,比较依赖于初始数据。
导航网格NavMesh生成算法比较复杂,建议直接使用这个库可以解决大多数3D场景项目需求
-
Filtering
- Low Hanging Obstacles
- Ledge Spans
- Walkable Low Height Spans
-
Polygonization
- Max Edge Length:最大边长,当边过长时,会再边上增加节点,生成新的多边形,使边长变短
例如:length=20
length=3
- Max Edge Error:值越小,生成的多边形越密,越接近原始形状,消耗的资源也越多
例:Max Edge Error=0.6
Max Edge Error=1.2
- Verts Per Poly:每个多边形的最大顶点数,越大意味着越复杂的多边形,也意味着越高的性能消耗,通常情况下6个顶点能够平衡需求和性能
- Max Edge Length:最大边长,当边过长时,会再边上增加节点,生成新的多边形,使边长变短
-
Detail Mesh
- Sample Distance
- Max Sample Error
参考文献
链接: https://blog.youkuaiyun.com/mango9126/article/details/74171347
https://blog.youkuaiyun.com/memory_nothing/article/details/83589287