google 的 recastnavigation 笔记 (未完待续)

截止到2018 /9/12最新版的recastnavigation

https://www.jianshu.com/p/490a9128b248

http://www.critterai.org/projects/nmgen_study/ 

对每个 三角形求取aabb范围并保存

solomesh中的第一步通过rcMarkWalkableTriangles设置三角形的area判断依据为三角形的slope,初始只有两个极端的值,表示可行走还是不可行走

solomesh中的rcRasterizeTriangles 函数,如果有图来进行展示会非常好理解,具体思路和操作是
1、将整个模型所在的box进行分条,如果按 俯视图来看, 分成长宽相等的cell(空间中可想象cell为长方体俯视图是边长为cellsize的正方形),整个模型所在的box刚好完全切分成cell。代码中体现在 双重for循环的x,y
2、左上角(或右上角或其他角)开始,从上致下,从左致右的顺序,查看所有三角形与该cell是否相交,如果相交,取出三角形在该cell空间范围内的aabb,并作为一个span(rcSpan类型)保存。总的是一个cell count个头的散列表。x*y作为散列表的关键值,span是一个是散列表中item。并同时将三角形的area传递给span。
3、一个cell中可能同时与多个三角形有相交,也就是有多个span,将新增的span保存到对应的 散列表中,并做好排序,范围小的在表的最上方。
 

solomesh中的rcFilterLowHangingWalkableObstacles,看注释吧

solomesh 中的rcFilterLedgeSpans,看注释和代码吧

solomesh中的rcFilterWalkableLowHeightSpans,看注释和代码

rcBuildCompactHeightfield,作用是将sheildheight转为compactsheildheight,换一种存储方式。方便后面的使用。

rcErodeWalkableArea,腐蚀能走的区域,思路和原因和平面中的 腐蚀作用类型。

rcMarkConvexPolyArea, 更改area的值,该值作为权限使用。

SAMPLE_PARTITION_WATERSHED
       rcBuildDistanceField,计算每个span离边缘的距离。

猜你喜欢

转载自blog.csdn.net/qiushangren/article/details/82664287
今日推荐