How to keep mesh details during generating a navmesh



I’m creating a mobile MO game. I want an agent to move along the roads when it moves across the regions.
(eg. from A to B).

At first, I wanted to use the penalty map feature. But, it seemed to work only with the grid graph.
I think my terrain is too large to be used with the grid graph. So I’m trying the recast graph.
One problem of the navmesh/recast graph is that the triangles in a generated navmesh are so large that I can’t depend on the penalty mechanism.

So, I extracted the road mesh from my terrain using one channel in the terrain splat map.
The mesh outlined with orange color in the above image is that extracted road mesh.
If there is any way I can keep this road mesh with the other terrain region in the final navmesh and I give low penalties to those nodes on the road mesh, I think I could implement what I want.

I wonder if this is a possible and efficient approach.
Feel free to suggest any other method.

Thank you for reading!