Oldish thread, but seeing as it has been bumped now anyway…
If you are still out there @dsanders, what @kdisplayname said is roughly correct.
A navigation mesh is a (deliberately) crude approximation to your actual geometry (crude approximation => smaller graph => faster pathfinding). When you request a path it determines the polygons the start and end locations are on, and does an A* from one to the other, in your case that is the blue lines I have drawn here,
The red line is where you actually wanted the path to go (after the first step) to get the actual best path for you actual geometry, but as you can see this is not the shortest path on the graph that is being searched.
From there, it has a ‘channel’ (defined by the edges the blue line crosses) which it runs a ‘string pulling algorithm’ on to give you the path it did.
Hard to fix well, smaller polygons may help but can lead to more problems and the big polygons are generally considered good (again, it gives you a smaller graph). Polygonal shape adjustments might also help, to create a more interconnected graph (but again… graph size, and also I think UE’s implementation only supports quads). Most importantly though, whatever tweaks you make to get it to generate the path you want here will lead to it generating bad paths for other origin/destination pairs.
If you need perfect shortest paths, navigation meshes are not the solution.