How to correctly setup HLODs of PCG Forests in a Partitioned Open World?

I have a partitioned open World filled with PCG forests. If i create HLODs the performance drops significantly down to single digit FPS. I am pretty sure that is because the HLODs are still affected by the Wind and are most likely not setup correctly.

Here are some questions regarding the HLODs, can anyone maybe elaborate or point me in the right direction?

  1. How to setup HLODs for Trees and Foliage so that they are no longer affected by Wind?
  2. Should I use a separate HLOD Layer for the Trees or should I use the Same layer that I used for the Landscape?
  3. What setting should the Layer use (Instanced or Merged/Simplyfied Mesh)?
  4. Are there any good Tutorials or Documentation for the HLODs - The official UE-Documentation is really bare bones and doesn’t explain a lot.
  1. create a separate material to use for the hlod or don’t use the hlod.

  2. don’t think it matters.

  3. ideally merge sinplified, but again hlods never work.

  4. part of why they never work is the lack of proper documentation. But… thats the Epic way.

You should just ditch the ststem and set it up as a custom replacement. The idea solution is to gather up the instances and bake impostors manually for aggregated groups.
If using Landscape (which why are you anyway?) Then i suggest you manually break up the instances to fit within landscape components.

Each component will contain its own set of instances that you merge down into a single actor, re-factor to use a lighterweight material (or just use octohedral impostors on the group).

The replacement system can be fairly aggressive, but the engine will stutter when you suddenly add/remove (which is more appropriately hide or make visible) 1000+ instances;
Thats a CPU limitation from doing things manually without an async thread mostly.
If you are able to set up a function which is able to run in parallel and batch process instances you should, it would make for far less hitch while you perform swaps.

You can look up octree stuff to base your definitions on how to properly split the meshes up and aggregate them.

You can get the engine to merge meshes at runtime - but you don’t really want that (mostly because it costs too much anyway).

The reason you want Manual replacements is that you can control the end output; tris load, associated LODs, mips, materials, etc… much better when you set it up manually.

When dealing with crazy forests (billions of trees)
I usually do group meshes for the trees base 10 on instance count.
So 10 trees become 1 block of 10 trees, 10 blocks of trees become 1 block of 10 blocks of trees and so on.

I was hoping for a better answer. I too am confused about HLODS in an open world with world partition. I have several hundred thousand trees (imposters) and so far everything is running very smoothly.