最近游戏中需要使用navmesh,阅读recast过程中顺手把学习记录写下来,方便以后查看。
使用过程主要需要理解每个数据含义,至于生成过程,不做深入研究。
相关资料
recast源码
很好的参考资料
主要的生成过程是handleBuild函数,一共分成8步,里面虽然有些注释,但是新人想看懂,太难了。
Step 1. Initialize build config.
这个没啥好说的,很简单,就是初始化
Step 2. Rasterize input polygon soup.
难度来了,这一步主要是生成rcHeightField,这一步主要用到配置中的cellSize和cellHeight,rcHeightField是个什么样子呢,是一个width*height大小的数组,数据存储在spans中,每一个元素是一个链表,链表的每一个元素对应相应位置有几个阻挡块,具体什么样子可以参考上面的链接。至于pools和freelist是辅助生成spans的,本身没什么用处。
这一步主要有2个函数:
rcMarkWalkableT