Filling holes under mesh fills holes in 2d space

Hi,

We’ve been extensively using the bFillCollisionUnderneathForNavmesh feature because it almost always gives us a better result. If we don’t use the flag many of our cliff meshes and rocks have navigation inside the mesh which is never what we want.

The problem we’re facing is that our level is very vertical and meshes that have this flag checked appear to nuke all navigation in 2d space below them. We could have a cave 100 meters below and the object above with this flag checked is preventing navigation from generating.

Is there something we can do to maintain the behaviour of “not having navigation generate inside meshes” but also not ruin the entire verticality of the navmesh generation? We have a source build and can make source changes if need be, would just appreciate some guidance on where or what to change.

Thanks,

Brenden

Hi Brenden,

You are correct that Fill Collision Underneath for Navmesh will punch a hole for navmesh underneath to infinity. There are a couple other ways to address this. Your can use a NavModifierVolume with Mask Fill Collision Underneath for Navmesh enabled. Or you can use the Rasterize as Filled Convex Volume flag on the mesh to prevent navmesh inside of the mesh. Those are easier to implement than source changes.

If you do not need navmesh on a particular static mesh ever, you can se the mesh to be an obstacle in the static mesh editor which will prevent generation on top and inside of the mesh. This method affects every instance that uses that mesh and is not togglable.

-James

No worries. I was assuming you were running 5.6 when this was added. This can be found in CL 37226188 in UE5/Main stream.

I know it was built originally in support of regular static meshes, but I do not know why it would not work on Foliage ISMs. I tried in a project on our UE5 Main branch, and the foliage ISM seems to respect the Rasterize as Filled flag. If you change the ISM actor for foliage in the scene to use the flag, do you see any change in the navmesh or tiles being marked as dirty? Is there collision enabled on the foliage?

No problem! It should work, and I do not believe another CL is needed as it should inherit from the PrimitiveComponent work done originally. If your tests are still not showing it as working, can you send me a bit more detail on what/how you are testing with things such as foliage actor or static mesh foliage?

Hi James,

When was “Rasterize as Filled Convex Volume” added? I marked this question as 5.6 because I had (perhaps incorrectly) assumed the issue prevailed in latest versions. We’re currently on a 5.4 source engine with select cherrypicked changes from 5.5 and 5.6.

If there’s a CL where I can backport this change, that would help us out a lot.

Thanks,

Brenden

This is working on static meshes but not on foliage (even with the box checked). Actually what we did was we simply turned it on for primitive component then disabled it on landscapes and brushes. Are you aware of this issue and is there a potential fix?

I’ll double check my implementation of your changelist and make sure I didn’t miss anything. I just wanted to check in advance and make sure there wasn’t a followup changelist or that it wasn’t a known issue.

Thanks!