1. 程式人生 > >格子地圖生成導航網格

格子地圖生成導航網格

ack pan grey 技術分享 ict edev ces wiki join

原網頁: https://gamedev.stackexchange.com/questions/38721/how-can-i-generate-a-navigation-mesh-for-a-tile-grid
1 Use Marching Squares algorithm to convert obstacle tiles into outlines. Note that map edges is an outline too and need to be included as well.2 Reduce number of points in outlines using Douglas-Peucker
algorithm (purple lines on the bottom picture)
3 Feed all points into Delaunay triangulation (to get most uniform triangles)
4 Add additional points in empty areas and along the map edges (to get more even navmesh)
5 Check along obstacle outlines and flip polygons produced by Delaunay to match outlines. - Often Delaunay could place triangles (grey) mismatching your outlines (red), then you need to detect and flip them. Adjoining them back into a polygon, split it along outline(s) and triangulate it manually enter image description here
技術分享圖片

6 Clip obstacles innards - remove polygons that are within obstacles (pink on the picture above)
技術分享圖片
7 Fill in connectivity data between remaining triangles and vertices as you need - that‘s your navmesh.

格子地圖生成導航網格