Foliage in current version and forward looking

Hello,

Based on the current documentation and Unreal Fest presentations (2024 and 2025), the current state of foliage systems and related tooling seems a bit ambiguous.

  1. Starting from UE 5.7, there is a new experimental feature called Nanite Foliage, along with the Procedural Vegetation Editor. These two features allow designers to create foliage with solid geometry; however, these trees are implemented as Skeletal Meshes. Is it a strict requirement to use Skeletal Meshes instead of Static Mesh trees using SimpleWind or Pivot Painter 2 with World Position Offset for wind animation?
  2. I assume PCG is another requirement for procedurally generated foliage. If I remember correctly, the standard Foliage Tool cannot spawn Skeletal Meshes - only Static Meshes - and then combines them into ISMs. Based on Chris Murphy’s “A Tech Artists Guide to PCG” it’s mentioned that “PCG can make forests, but it’s not a forest tool.” Is this statement still accurate? Is further work planned to enable the Foliage Tool to support Skeletal Meshes, or should designers primarily rely on PCG for that functionality?
  3. Since UE 5.6, we have GPU PCG graphs, as well as the PCG Grass template, which can spawn grass as solid geometry (with WPO wind animation). As Adrien Logut mentioned on the Unreal Source Discord, GPU PCG generation is currently heavier on CPU, GPU, and memory usage, though optimizations are in progress - not targeted for 5.7. From my own testing, results vary depending on the GPU used. Are there any concrete plans for when PCG Grass will become fully interchangeable with the standard Landscape Grass System?
  4. Considering the growing number of foliage-related systems in the Engine, what is the Epic-recommended (i.e., preferred or expected) workflow for handling foliage in games? The World Building Guide provided by Epic is very informative, and it would be great to see a dedicated Foliage section there - summarizing available options and providing examples from live games such as Fortnite.

Thanks in advance,

Best regards,

Bohdan

Hey! Some great questions there:

  1. Nanite Foliage has it’s own built in wind system that you can leverage by enabling the Dynamic Wind plugin. This is much cheaper than WPO as it’s done per bone instead of per vert. This then works with the voxelisation system and is how we see the path forward for most platforms. If you’d like to convert a result from the PVE to a Static Mesh I believe you can do so with Geometry Script.
  2. When I said “not a forest tool” I mean it’s not a tool for just forests. It can be used for buildings, mesh generation, etc, etc. PCG can spawn Instanced Skinned Meshes as of 5.7 with the Instanced Skinned Mesh Spawner node.
  3. As of 5.6 you can access grass maps and use it as a substitute for the Landscape Grass system while still accessing the grass maps from materials. We use this at the moment in our own work for scattering grass onto clifftop overhangs and things like that.
  4. It’s a good idea to look at the Biome Core plugin as an example here! It mixes and matches a variety of overlapping PCG foliage system to help them create one large, coherent world with dynamic and static generation elements.

Chris

Yeah, GPU is on par *however* be aware that it’s easy to do too much on the GPU and make it comparatively more expensive. You’ll need to profile accordingly! Remember that you can bake static information out and then access that information from runtime systems to reduce the amount of overhead involved too.

Yeah, so Biome Core lets you aggressively mix and match different volumes/spline regions together to paint what you need into the terrain. Outside of this if you have things like specific trees that you really want you can add them as static meshes and use the tag system to inject them into the calculation for everything else.

For Nanite Voxelization: while it can be used outside of foliage you really want to pick and choose when/why because otherwise it might have more overhead than if it was just a nanite mesh. If I had a library, for instance, it might be worth using an assembly setup for bookshelves where you instance the books as a part of the shelf assemblies, but it’s not necessarily going to pay off for something like bolts on a motor. If it helps in visualizing where they might be appropriate: Nanite Assemblies are more for things like branches than things like leaves.

Hey Chris,

Thanks for interesting input!

I have to apologize, the question was posted literally 1 hour before 5.7 released with new documentation on board. Sorry for that.

  1. I found that there is a drop-down to choose either bake Skeletal mesh or Static mesh in PVE so it’s definitely not a requirement to have Skeletals only.
  2. I understood that PCG could be used literally for everything, though I read it as “but please dont make forests”. Thanks for clarification!
  3. Thanks, though is PCG GPU on par in terms of performance now?
  4. I missed the Biome plugin, my bad. Will check it.

This said, to me it sounds like now foliage can/should/might be done just placing some huge PCG Volume (partitioned) and place trees and grass by sampling Landscape, instead of using Foliage tools/Conventional Grass. Does it make sense? (I assume this sounds exactly like Biome Core plugin huh).

I have one more, a bit unrelated question though, Nanite Voxelization - is it meant to be used outside of Foliage stuff? As far as I understood, instead of near-pixel-perfect LODs, it makes near-voxel-perfect LODs. So.. is it a new base line for Nanite LOD processing, or a specific tool for specific applications?

Got it. Will make more tests using mentioned technologies (and hope PCG GPU will not crash my AMD GPU again :slight_smile: )

Thanks for info!