The navigation mesh build appears to ignore the 'Min Region Area' setting

Bug: The navigation mesh build appears to ignore the ‘Min Region Area’ setting.

Steps to repeat:

  1. Create a ThirdPerson Blueprint project.
  2. In the third peson example map: Add a ‘NavMeshBoundsVolume’ that encompasses the entire level geometry.
  3. Show the navigation mesh and validate that cube on the floor has a small section of NavMesh on its top.
  4. Select the ‘RecastNavMesh-Default’ object in the level.
  5. Change the ‘Min Region Area’ to a very high value. (Such as 10,000,000)
  6. Note that the NavMesh rebuilds.
  7. Note that the NavMesh section on the top of the cube still exists.

You can experiment with other more reasonable settings for ‘Min Regin Area’, but there will be no effect on the NavMesh.

June 16 Edit

The above test case is not valid. I was able to get a dev environment set up, and debugging demonstrated two things: A very high MinRegionArea value results in an integer overflow, causing the value to be interpreted as zero. Also, a reasonable value of, say, 500 or 1000 does work as expected. There is an issue that still exhibits with a landscape I’m using, but that doesn’t lend itself to easy steps to repeat.

Hello SteveFSP,

I was able to reproduce this issue on our end. I have written up a report (UE-31960) and I have submitted it to the developers for further consideration. I will provide updates with any pertinent information as it becomes available. Thank you for your time and information.

Make it a great day

Hey Rudy. You may want to just close UE-31960 if it isn’t already being worked. (See my edit in the original question.)

There is a problem, but since it may only show up in certain landscapes it is difficult to provide good steps to repeat. And now that I have an environment to do a proper investigation, if I find the root cause I should be able to just submit a fix.

Thank you for your update. I double checked on this report it appears that this is working as intended. MinRegionArea is used only for isolated areas, meaning an area that’s surrounded by navmesh-free areas.

Yep. I reviewed the source code and it is working as expected. A little more detail for future readers:

Recast will not remove a region that is less than MinRegionArea when the region is adjacent to a border, including tile borders. (There are technical reasons for this.) If isolated sections of the NavMesh won’t go away when increasing MinRegionArea, then select the NavMesh object in the level and enable ‘Draw Tile Bounds’. If a section of the mesh is on, or crosses, a tile border, then that is why it isn’t getting culled. This is a common situation with landscapes since they often have a combination of smaller tile sizes for quick run-time regeneration and rugged areas that can generate small regions.

NavModifierVolumes can be used to remove the small isolated areas if they are a problem.

So the solution posted by a member of these staff on these forums for when nav mesh generates inside static meshes (“play with min region area” in his words) is absolutely redundant in other words. Good to know. Yet again, the “solutions” from the staff on here are ineffective.

I have a static mesh that I want navigated (a maze). You want me to manually assign NavModifierVolumes to stop the navmesh generating inside of the walls (because Min Region Area changes nothing)?

Navmesh in redundant essentially because I’m just blocking out everything manually using that solution.

1 Like