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離邊緣的距離。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章