No documentation on the HLOD feature

Hey Epic,

I am currently digging through the docs and I cannot seem to find ANY docs on the HLOD feature.

I can find references to it on the forums. Just not in the docs.

We have a task entered to work on HLOD documentation but haven’t gotten to it yet and I don’t have an ETA on when that will happen. Maybe we can do a live training stream on it in the short term to cover the basics. Would that be helpful?

That would be great!

Yes, Please! Can you also detail what can be done outside of Simplygon?

I checked “Force No Precomputed Lighting” to use an all-dynamic setup, and I think that has turned HLOD generation off.

Could you please outline the workflow and how to set up BP for instanced HLOD static meshes and foliage? (I generate LODs with InstaLOD directly in UE4 and Blender outside of UE4)

I get it, you guys are busy, but how do you expect us, indie devs, to take advantage of optimization features if there are no docs, not even write ups on blogs or this forum?!

You can enable HLODs via the World Settings (Map specific).

HLODWorldSettings.png

Then you can go to Window > Hiearchical LOD Outliner to open up its settings window.

HLODMenu.png

Here you can generate all your LODs and clusters. This window may seem overwhelming, but it’s not all the difficult to figure out if you play around with the settings.

Step 1.

You’ll start by setting up your LODs (bottom panel) and all the various settings you’ll want for them. The biggest thing to pay attention to in the inividual LOD settings i the Desired Bounds Radius. Use smaller values to start out with until you see how it works. Something like HLOD Level 0 uses 250 and HLOD Level 1 will use 500 are good because these bounds are essentially just a 250cm and 500cm bounding sphere that group meshes in these sized chunks. Not all meshes are guaranteed to be in the sphere, but it’s just an easy way to capture a cluster of actors.

**Step 2. **

Once you’ve set up your LODs, you can then hit the generate clusters button at the top. This will take a few minutes depending on the settings you used in the bottom LODs section and how many actors you have in your scene.

When this finished you’ll see the clusters populate the middle window. You can then select the individual LODs and see what actors were clusters in that particular LOD. You can use the slider at the top for “Forced Viewing Level” to see how your different HLODs will work.

Step 3.

If you’re happy with your Generated HLODs you can now hit the Generate Proxy Meshes button. This will now convert all those HLODs into assets located in your project folder under HLODs. These static mesh actors can not be opened and edited if needed.

Limitations and caveats:

  • Cannot use movable objects
  • Blueprints with many meshes will have a larger bounds than individual actors so if you’re HLOD uses a smaller desired radius it will not be included in a HLOD.
  • Merged materials do not support the alpha channel. You will have to set this part up manually or not merge the materials for these types of actors.
  • HLODs do not decimate your meshes. You will need thirdparty software like Simplygon which is integrated and works. (Not sure about InstaLOD that you mention you are using)
  • Doesn’t work with instanced meshed painted with the foliage tool.

I hope this tides you over until there is some official documentation. :slight_smile:

Tim

1 Like

Thanks Tim, I will be digging it.

Any ETA on HLOD documentation being added? This system can be quite confusing even after reading up on the basics as detailed by Tim’s post above. Also, did that live stream ever happen? This would be a great topic to cover in a stream. We keep hearing how great it is for Paragon. Our team is trying to get it setup for our open world RPG and it’s driving some of us nuts.

We have UEDOC-1611 for reference with this task. It’s partly there, but hasn’t been finalized yet. Sorry about the delay!

In the meantime, if you have questions about the system feel free to post them here and tag me. I’ll help where I can with your questions.

please give video tutor by delay reason)

Unfortunately, I would have to use my own personal time and not work-time for this at the moment. I don’t have a lot of free-time these days to do a proper video-tutorial outside of work.

The post I made above about setting up and using HLODs. I’ve added some pictures to at least show how to enable it from the World Settings and th open the HLOD Outliner window. Beyond that the steps for the settings should help you get started inside this window. If you have specific questions you can post them here and I’ll help when I can. :slight_smile:

Thank you for answer.
Can you explain a little bit why we should use this feature (may be when), how much performance it’s give and on the fingers - HLOD it’s LOD inside LOD?

The way I understand it, it allows you to group items together as a lod level.
The difference being:

LOD:
Several versions of one mesh, when you come closer, the better the version you see.
Imagine several meshes of a hut, forming a small village.
At a distance, the meshes are at their lowest LOD.
While we may have dropped all the weight of complicated materials in this LOD, alas, it is still at least one drawcall per mesh.

HLOD:
Same situation as above, but you group the hut meshes HLOD style (however that will work), and you create a LOD mesh that contains the whole village a one mesh with super low details.
At distance, the individual hut meshes are dropped and the mesh of the whole vilage takes over.
Et voila: only one drawcall and you still see that there is a settlement in the distance…

Please, please correct me if I got the concept wrong :stuck_out_tongue:

Klaus is right.

LODs for individual meshes allow you to have set quality levels for decimation of the mesh so that it’s less triangle heavy. So if you open the Static Mesh editor you can import manually separate LODs, use a decimation tool like Simplygon in the editor, or have these already included with your import of your FBX from your modeling application.

SaticMeshLODs.gif

HLODs allow you to clump actors together based on values entered into the HLOD Outliner’s LODs. The cluster generation settings allow you to specify how the bounds for these generate clusters are formed throughout the level. After you generate clusters and then finalize with the Generate Proxy Meshes you will end up with something like this:

This requires no setup in the original Static Mesh for LODs. You get static meshes that are individual actors initially like here:

HLOD1a.gif

After you’ve generated the HLODs and you back the camera away to the specified screen size you get the switch to the HLOD, which is just the combined actors, in this case the two chairs and table.

HLOD1b.gif

This HLOD actor can be opened on it’s own in the static mesh editor. It’s now it’s own asset that is tied to the HLOD generation settings to know when it should transition for the other actors. This is a great way to reduce draw calls and regain performance in dense environments. HLODs just make use of clumping actors together at different distances and in that regard is separate than mesh reduction/decimation techniques.

In 4.13 and previous versions HLODs were not decimated, which means they could still be vert heavy unless you had a license for Simplygon. In 4.14 Epic has made their own decimation tool for mesh reduction, so you can open the HLOD asset and setup separate LODs to reduce the vert count.

Performance wise, you should make use of both HLOD and LODs, especially for densely packed environments where you need to save on performance by reducing drawcalls.

KVolger, Tim Hobson

Thank you very much! Now it’s very clear and great feature for me).

Knowledge by this thread is enough for wiki page/documentation, I think :cool:

If some moderator copy/past this - in the future students will appreciate this too!

@6r0m

And here is the doc for it now :smiley:

https://docs.unrealengine.com/latest/INT/Engine/HLOD/index.html

Awesome! :rolleyes:

We have a training stream this upcoming Tuesday November 15 for HLODs! Come check it out and bring your questions! :slight_smile:

Awesome :smiley:
One I have already: How is collision handled for the HLOD mesh. :confused: (Couldnt find a word on it in the docs)