Static Mesh LOD not working on Foliage Actors

We have been trying to add LODing to our Foliage Static Mesh.

LOD mesh has been setup in MAX using Level Of Detail Utility and have one LOD level and one Material ID.

LOD works fine when static mesh is placed individually in editor, but does not on painted Foliage Instance Actors.

I also tried workaround suggested in this thread, by importing LOD mesh separately, but that didn’t work for us either. Foliage brush and LOD meshes - World Creation - Epic Developer Community Forums

is this a big or are we missing something?

(EDIT) we’re on 4.2

Andrew
Uppercut Games

I just updated to 4.3 and this still seems to be broken.

Can anyone at EPIC confirm that LOD on Foliage works for them? and please give me steps to setting it up? is it setup in a different way or place to normal static mesh LOD?

Andrew

I got same Problem with Foliage tool which is really annoying since It can really butcher performance.

Hey all,

This appears to be a bug. I have entered TTP# 344663 into our database for our developers to look over, and I will let you know when I have an update. Thanks for report!

I’m curious to know if this bug has been fixed for 4.5?

It looks like this is nature of instanced static mesh components, and can’t be fixed directly. foliage system is being revamped currently, and new dynamic foliage will solve this issue. It won’t make it into 4.5, unfortunately, but should be in after that. I will update here when system is updated.

From what I can tell with foliage, it bases LOD on screen size of cluster and not individual instance. To get LOD working properly, I turned my max cluster radius under clustering in Show Instance tab under foliage tool down to 100, rather than default of 10000. I tested and it works great. It should also work if you set Max Instances to 1 under Clustering but I have not tested that. Hope this helps.

Edit

I couldn’t help myself. I changed Max Instances to 1 and Cluster Radius back to 10000 and that works as well.

I’m assuming clusters are used instead to determine screen size because it’s less computationally expensive. It’s probably best to have a cluster radius of 100 - 1000 and max instances set to what fits based on density.

Edit 2

After thinking about it further, it all really depends on a bunch of factors. If you use instance clusters but need same measure of LOD, you’ll need to go into your static mesh and adjust it accordingly. With that said, that approach won’t work well if you have single instances of mesh on map.

Now it makes more sense why this tool is getting an update. It just doesn’t scale well.

I added an answer below that works as a workaround for now just in case you run into anyone .

Awesome, thanks I will try it out!

Hey ,

If you are re factoring Foliage system, I have some feedback (I hope it’s not too late!)

  • It is currently quite a big production bottleneck to change placed instance settings like cull distance after they have been placed. You currently have to delete them and re add to propagate changes made on individual mesh "instanced static mesh"settings.

  • We had originally been using shared instance settings actors for this, but it seems like they have been deprecated.

  • We have a world map with 10-20 streaming levels, each with same foliage meshes in them. If i want to change any settings globally, it is very time consuming to do this manually on each foliage actor in each level. (i.e. over 100 times!)

Cheers

Andrew

Thanks! That works really well!

I’ll let our developers know about your feedback. Thanks!

Hello.
Maybe this resolve in 4.6?

Thanks, MJLaukala` !

Hi Antonio,

We don’t have a firm date for implementation of dynamic foliage system that should resolve this issue, but there is a good chance it will make it into 4.7. Thanks for your patience!

Hi everyone,

I’m on 4.7.6 and this is also an issue for me.
I have trees with a LOD0-LOD1 set up, that when placed individually work fine. When used as foliage instances and painted onto terrain LOD1 are on their sides (makes it looks like i’ve got a deforestation problem, ha)

Is there a current known work around? Is there a way to convert painted meshes to static once i’m happy so they LOD in as if they were individually placed in first place?

Thanks!

Becca

This issue has been fixed in future releases of engine, and unless you are running a source build getting actual fix won’t be possible. We actually implemented a new LOD system as well, called HLOD (Hierarchical Level of Detail). I would recommend testing our your issue in a more recent build version of engine to see if that resolves your issue.

Thank you,

problem is back on source master 4.15 (versus 4.14). In KiteDemo/GDC_Landscape_01/Forest_and_Lake all foliage instances of HillTree_Tall_02 are stuck at LOD3. Activating HLOD for a copy of map has no effect. Only setting LOD3 Screen size to 0 brings back detail, but performance hit and rendered LOD order all messed up. single instances are fine. Same tree’s LODs are fine in 4.14.

Please create a new answerhub post for this issue as this one is outdated and issue you are presenting deals with HLOD’s and our master branch which we usually do not enter bugs from public since it is subject to change almost contstantly. I can make our developers aware of issue, but we will need a test case in a new blank project.

Thank you,

Thank you Andrew. I studied source and found problem. Quick solution for now “foliage.LODDistanceScale 20000”.
More info: Solution: Foliage & HierarchicalInstancedStaticMesh stuck at last LOD with master 4.15 - C++ - Epic Developer Community Forums