Post process tile simplification?

Most of the generated navmesh is pretty great, but there are a couple of places it gets pretty iffy

Is post processing tiles to simplify them feasible? Or this is caused by a misconfigured navmesh generation? This is my recast graph config:

That does seem like an extremely small cell size and a large tile size. I would try editing those two.

some parts of my navmesh actually need that to be walkable


That looks a bit odd. I would have suggested increasing the max edge error, but it’s already larger than I would have expected. Are you using any navmesh cutting or any other things which might be of interest?

I actually don’t even use navmesh cutters yet. Although I do use 4 RecastMeshObj, they are all far from where this happens. But I did find something of note.
Below the stone walls/passage, there is a terrain mesh. The strangely behaving face does follow the mesh below the stone walls/passage mesh.

So it seems the issue happens when two meshes are very close to one another and are both considered when calculating the navmesh. Maybe some rounding error makes some voxels consider one and others consider the other?

This is very strange. I haven’t seen anything like this happen before.
It is possible your cell size is so small it causes rounding errors. Though I don’t think it should be. What happens if you increase the cell size a bit?

Seems to happen on any cell size

That is very weird. Just to double check, can you try moving your terrain into one of the example scenes and scanning a recast graph with one of those settings. I’m trying to figure out if it’s the settings that are weird, or the mesh that is weird (or maybe the code itself).

It generates with no issue on Example3_Recast_Navmesh1 and gives this exception on Example4_Recast_Navmesh2:

IndexOutOfRangeException: Index was outside the bounds of the array.
Pathfinding.NavmeshBase.GetVertex (System.Int32 index) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Generators/NavmeshBase.cs:173)
Pathfinding.TriangleMeshNode.GetVertices (Pathfinding.Int3& v0, Pathfinding.Int3& v1, Pathfinding.Int3& v2) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Generators/NodeClasses/TriangleMeshNode.cs:99)
Pathfinding.NavmeshBase.CreateNavmeshSurfaceVisualization (Pathfinding.NavmeshTile[] tiles, System.Int32 startTile, System.Int32 endTile, Pathfinding.Util.GraphGizmoHelper helper) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Generators/NavmeshBase.cs:1470)
Pathfinding.NavmeshBase.OnDrawGizmos (Pathfinding.Drawing.DrawingData gizmos, System.Boolean drawNodes, Pathfinding.Drawing.RedrawScope redrawScope) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Generators/NavmeshBase.cs:1426)
AstarPath.DrawGizmos () (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Core/AstarPath.cs:800)
Pathfinding.Drawing.DrawingManager.DrawGizmos (System.Boolean usingRenderPipeline) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Drawing/DrawingManager.cs:537)
UnityEngine.Debug:LogException(Exception, Object)
Pathfinding.Drawing.DrawingManager:DrawGizmos(Boolean) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Drawing/DrawingManager.cs:539)
Pathfinding.Drawing.DrawingManager:Submit(Camera, CommandBuffer, Boolean, Boolean) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Drawing/DrawingManager.cs:573)
Pathfinding.Drawing.DrawingManager:SubmitFrame(Camera, CommandBuffer, Boolean) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Drawing/DrawingManager.cs:424)
Pathfinding.Drawing.DrawingManager:PostRender(Camera) (at Assets/Everyday Engine/libs/com.arongranberg.astar@4.3.47/Drawing/DrawingManager.cs:382)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Edit: I just re downloaded the pro package and imported only the two Recast example scenes, so the fact that there is a mish mash of versions could be the cause of the exception