How to move painted foliage to another level?

Hi there. Thank you for some insight.

My problem isn’t actually moving the foliage from one level to another. That is quite simple as described above. However after moving the foliage assets to a different level I can’t assign these foliage assets to a new landscape which means they do not follow the surface of the landscape as they did before and just float in the air.

This renders the tool pretty much useless as you won’t be able to optimize the foliage afterwards unless you have no height changes coming for the landscape.

I have come to a conclusion that after all these years this is still not possible as ChatGPT couldn’t help me either. According to ChatGPT your easiest choice is to remove the foliage from the old landscape and paint it again on a new one.

Technically it should not be a problem as the paint tool assigns the foliage to a correct landscape on the get go during the painting process but why is it so hard to assign them afterwards to a new one?

In one other thread I saw a tip mentioning that after moving the foliage to a different level and removing the old landscape you should be able to place them over to a new landscape by lifting them above the ground and pressing ”end” button as this places any object on a surface of an object but I guess this only works for meshes as I was unable to replicate this.

Also this solution wouldn’t fix the assignment for the landscape so I wouldn’t bother using it anyways.

Can anyone tell me how to assign foliage assets to a new landscape after moving them from one level to another so they would be placed on to the surface of the landscape as they should?

Digging in to the problem:

With foliage we have ”Instanced Foliage Actors” shown in hierarchy which have ”Foliage Instanced Static Mesh Components” inside of them.

It seems i would need to somehow merge the ”Instanced Foliage Actor” objects or move the individual foliage assets from one instanced foliage actor to another.

Changing the level for them DOES change the component they are assigned to (apparently doing so in semi random manner as there could be multiple Actors on one level during the transfer) but it does not fix landscape assignment…

So I would need to merge the components itself? However I have no way of finding what component a specific individual foliage asset is part of as choosing a foliage asset does not give any information in the details panel. They should be identical as the mesh components are just representation of the types…

Also it seems to change available foliage types according to which Instanced Foliage Actor was lastly loaded to the memory. I don’t have control over this. I found this out when I was loading a different level I had less types in there then in the other one. After doing to copy paste all the types from other actor were replicated to my ”main” foliage actor.

CONCLUSION: I have now realized (while writing this post) that by moving the foliages from one level to another they merged with the actor and created a new type identical to the original asset. This is why they don’t cull like the originals in my actor. This still won’t explain why the tree z position is not updated when I change the terrain.

BUT NOW! When I press the ”end button” after selecting one foliage asset with foliage tool it finally snaps to the surface of the landscape. What is peculiar is that after this feat the connection between the foliage asset and landscape is restored! Now when I sculpt the the labdscape the foliage asset is moved with the surface.

Even if I move the foliage asset now it seems to snap to the correct landscape. This said the use of the ”end” button seems to ”glue” the foliage asset onto the landscape it was placed on thus fixing the relation between the foliage asset and landscape.

I still need to figure out how to move the foliage assets from one mesh component to the other as I don’t want to have duplicate foliage types of the same asset for obvious reasons.

I also need to figure out how to optimize the foliage between different levels. Should I keep them inside one Foliage Actor which is persistent and then just turn them on and off with level straming? As I’m already culling them this wouldn’t bring me any benefit as they are still loaded in the memory at the beginning of the level because the whole foliage actor is persistent.

Tested on UE_5.4.4 09/11/2024