I’ve been using Procedural Foliage Volumes over a world partitioned map very regularly, until today I suddenly started getting this error. I have a grid of volumes over the landscape, but mostly (though not always), it crashes with this error message starting today.
I did a landscape build, which allowed me to then be able to run one volume, but then again, this crash reappears.
I’ll investigate what is going on in line 280 and update if I figure this out, but in case anyone has started seeing this, feel free to share any insight.
I got the same error but only when trying to resimulate. My solution was simular, just selected the instanced foliage actors in the Outliner view and deleted them. Then the resimulation of the procedural foliage worked like a charm.
Settings:
World Partition
All foliage was assigned to a DataLayer (Editor)
Is Spatially Loaded enabled on all landscape instances
The scene also included Procedural Foliage Spawner
The Solution for me was to delete the DataLayer containging the foliage.
Also tried without success:
Make DataLayer visible
Make all Landscape instances visible
Disabled Is Spatially Loaded on all Landscape instances.
Removing all ProceduralFoliageSpawner
Unreal broke down when trying to draw foliage on a landscape, while it turned out that if the landscape was raised higher, then everything would work without errors (a crutch from Russian students). The most stupid bug.
I had the same problem. Took some time to work out.
What the foliage actor in problem code segment is expected to do is: if you don’t find a Foliage actor you can use, find one labeled as recycled and reuse it. Normally, in the same area, brush vegetation, undo, and brush again will enter the problem code segment.
The situation I crashed was that in the scene, there was a working foliage actor and the appearance (name, location, model) looked like everything was fine. But APartitionActor* GetActor does not find this actor in the FindActor lambda expression. This causes an error.
The investigation found that the GridIndex judgment did not pass, and the foliage actor that looked completely normal, and its GridIndex was wrong data.
Continuing to investigate, it turns out that these GridIndexes were already wrong when FPartitionActorDesc::Serialize.
Why is it wrong, I didn’t reproduce, it may be related to workflow, or it may be an engine bug.
The solution is to resave the foliage actor, which triggers the FPartitionActor Desc::Init, which recalculates the GridIndex.
In addition, the GridSize and GridGuid are reacquired. So if this error is caused by a size or GUID issue, resaving the Foliage Actor can also be resolved.
I have the same problem
the solution is to select the foliage data layers on the data layer outline and click [Make Current Data Layer(s)] before dealing with the foliage
The main thing is that the current data layers must be exactly the same as the instanced foliage actor
I’ve got same problem in UE5.4. @tongxu_pathea has explained the main reason of the check failure, but it failed to find actor because of the check of “Context Hash” in my case.
After some dull debugging, I found that this hash check is done for confirming that current actor is in current edited data layer. And the cause the problem is my dear artist mannually assigned data layers to foliage actors, which made foliage actors not found at GetActor.
So for me, the meta is: in world partition levels, do not mannually create foliage actors or assign data layers for foliage actors.
PS: Unreal baned data layer assignment for foliage actors (and landscapes) in right-click menu of data layers, but the button “Add selected actors to selected Data Layers” on right-top cornerl of Data Layers windows still works for foliage actors, which leave an easy way to break all rules of data layers.