x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

StaticNavmesh and level streaming

We have a large map with streaming sub-levels and was wondering if it was possible to use a static navmesh. We want to avoid using dynamic navmesh.

Based on this post https://forums.unrealengine.com/showthread.php?123887-Static-NavMeshes-and-Level-Streaming it should be possible.

I've attempted to put one NavVolume on the persistent level and expand across the entire map then load the sub-levels and save. No Luck.

I've also attempted exactly what ddvlost describes. Placed one one NavMeshBounds in Persistent Level and other volumes in each sub-level. No luck with that either.

Most of the time it only generates a subsection of the navmesh in editor. Sometimes it has really strange behavior. When I load into the level in editor after saving the navmesh it translates all the sublevel navmeshes ontop of eachother and translates them onto a random location.

Any advice on how to setup this properly would be greatly appreciated. Thanks.

Product Version: Not Selected
Tags:
more ▼

asked Sep 11 '18 at 08:40 PM in Using UE4

avatar image

Answers.Archive STAFF
1.7k 176 287 632

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

2 answers: sort voted first

I see, it could be issue with racast navmesh versioning. When "Build Paths" is executed, it assumes it can completely delete old navmesh (in Persistent level ) and regenerate new one. Recast navmesh most likely has internal version which gets updated when it's re-created so version of navmesh parts which are stored in unloaded sub-levels does not match with a new navmesh. We will look what should be changed to support this workflow.

more ▼

answered Sep 11 '18 at 08:40 PM

avatar image

Answers.Archive STAFF
1.7k 176 287 632

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Thank you

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Dmitry, when can we expect a fix for this issue?

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Hi,

This is planned to be fixed before 4.20 release. However I didn't work on this issue yet. If it's urgent for your project and you want to see fix sooner, we can prioritize it.

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Dmitriy,

It's fairly urgent for us. We currently only generate static nav mesh when we branch for milestone builds because of how long it takes (due to needing to load and save all the adjacent levels) and how easy it is to accidentally delete it. This is problematic because it has significant impact on both memory usage and performance. We are at the point in our project where we need to decide to spend our time fixing the issues or wait for fixes from you guys. So, it would be useful to have your work sooner rather than later so we can move forward.

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Hi, This is maintly a workflow issue. As we can still generate navmesh and submit a single loading level (by loading all 9 adjacent levels before generation), we're not really blocked. However, our world and navmesh generation workflow will be definitely improved if we could just load and generate on a single level, so we're looking forward to see it fixed in 4.20 Thanks

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

So I looked at what happens. And I'm afraid I have bad news. Adjacent levels have to be loaded when generating navmesh.

Navmesh is a regular grid of tiles, each tile by default has size of 1000 units. On level borders editor needs all geometry to properly generate a tile that could overlap geometry from multiple levels. When adjacent level is not loaded, overlapping tiles will have only partial information. And that will cause navmesh connection issues when streaming.

Its a similar issue to static lighting build, where you need full information to properly build lighting across sub-levels.

I think only way to improve workflow is to add "Build Path in Current Level". But user has to remember that he needs to load all adjacent levels.

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

Dmitriy,

Thanks for looking in to it. We've talked it over here and think that "Build Path in Current Level" would be a significant improvement for us. It's not as much the loading of adjacent levels thats an issue for us, its the saving of them all (due to source control asset contention and time).

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

I have added ticket to implement this command: UE-60490. But this will not be in 4.20. Targeted for 4.21, but I could work on this soon, and share a changelist for integration

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

Hi, that was my post on the forums.

For navmesh streaming, NavVolumes should be setup as described in second method, place NavVolumes in sub-levels. Also make sure that Recast actor "Runtime Generation" property set to "Static". Each NavVolume should be sized to cover geometry in own level, not the whole world. And at least one NavVolume has to be in P-level, even if it does not have any geometry. One thing that can confuse navigation is if there is a Recast actor in the sub-level. Recast actors should be only in P-level. If you see them in other levels, please delete them. Do you use world composition or traditional level streaming? Do you use sub-level transformations? that will not work with Static navmesh.

more ▼

answered Sep 11 '18 at 08:40 PM

avatar image

Answers.Archive STAFF
1.7k 176 287 632

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM +

We are having the issue with a map/level setup with world composition. The only way that we could get valid nav to show up was having the nav set to dynamic in the recast actor.

avatar image Answers.Archive STAFF Sep 11 '18 at 08:40 PM

There were fixes related to static navmesh streaming. CL# 3589223. Could you integrate it? Also with this fix I would recommend to disable automatic nav-mesh updates in the editor. This option can be found in Editor settings.

Also for static navmesh streaming to work correctly you will need to set "Fixed Tile Size Pool" to true in recast actor and "Pool Size" will be the maximum number of mesh tiles that can present in navigation mesh at any moment.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question