Trees can’t be Nanite?
- How to use Trees and Foliage for maximum performance in Runtime?
I just watched the official Epic Video, see link below that starts at the exact time.
The video contains a technical explanation, but I don’t really understand how to use Trees in UE5 for runtime?
- Is there any other video explanation, or use case?
- How to set up trees in UE5?
- What are the preferred settings for runtime when using Nanite and Lumen?
- Does this also apply to foliage?
Thanks for any of your thoughts, appreciate it!
Bernhard
1 Like
Nanite doesn’t support translucency or masking so no foliage that uses those (pretty much all of them) won’t work. This may change in the future but for now it’s still good practice to create billboards for trees.
1 Like
hmm… that’s an important point.
- When creating a level with massive foliage and trees, how should that level be started when using Nanite and Lumen?
- Wat about Megascan Trees?
I don’t know if all the foliage/leaves have masks with translucency, or if those assets have actual 3d geometry.
- And if so, they could be converted to Nanite and then the performance should be fine, right?
- Or am I missing something else here?
In terms of creating billboards for trees.
- You are referring to the old school cards?
- Cross Section?
I mean… that solution can’t be really compared to a full 3d scanned tree with millions of polys.
- Or did I misunderstand your idea?
Thank you so much for all your thoughts, hints and suggestions,
appreciate it!
Megascans trees use Octahedral Impostors - they have masked leaves - I am wondering if they will release some ultra-high poly trees with the leaves modeled too but I have a feeling that even with nanite the polycount may be too high - will be interesting to see!
I’ve experimented with creating nanite opaque trees and I was able to get around 60,000 at 20fps (nothing else in the scene), but I wasn’t happy with the shape of the trees in the distance.
Yes, old school cards - Octahedral Impostors (dual axis cards with inter-frame smoothing and custom lighting) or simple billboards. At a distance they look better than nanite meshes in my opinion - and of course they are much faster. I’ve create a scene with 6 million billboards at 20fps running on the same hardware as above.
hey thank you. This makes sense. Hmmm… do you have a link to your test?
Would be cool to see more from it.
But heck, that basically means… we could use high poly evermotion trees… just for example.
The downside, non of the trees will work with wind modifiers.
Another issue… Megascan trees would allow you to change the attributes of the foliage… like fall, etc.
However… it looks like the solution is to use actualy 3d geometry and convert it all into Nanite. In the tech demo they also spoke about, that tesellation is not supported anymore. Meaning, forget about displacement maps and rather load the high-resolution mesh, convert it to Nanite and that’s faster and cheaper.
Soooo, I am assuming that’s the way to go. Just not sure what we could do with dynamics, like wind.
No worries - here’s a link to a video of the test: rdLODtools Tree Stress Test - YouTube
Yeah the potential is great, but yes things like the wind, season and tree health (with splat-maps) systems that are coming soon are more aimed at LOD based trees.
There is also the issue of foliage leaves and their lighting - the way it’s done now is with two-sided foliage shaders that calculate the amount of light that passes through the leaves - I doubt nanite will be able to support that at the moment.
I don’t think that nanite trees will be a reality for a while yet.
There is already an early version of “programmable raster” support in the main branch. This enables masked materials, WPO, etc.
1 Like
Do you have any links about it by any chance?
hmmm… so I guess I was hitting here something very substantial.
But mixing non-nanite trees with other nanite objects… the non-nanite trees will ultimately destroy the entire performance.
I mean sure… if you are not targeting runtime… it really doesn’t matter so much. But especially for runtime… that’s HUGE.
- What ya’ll think is the best workaround?
It looks like, there is no other solution than using the good old method… using LOD’s, right?
At least, if we want wind or other modifiers.
If I am okay with static trees, I guess it’s best to use high poly trees with all the modeled leaves, and just convert them to Nanite.
Curious about all your thoughts,
cheers
The way I’m doing it in my game is to use LODs for all trees and focus nanite on buildings and props. I mix the Screen Sizes of the tree LODs and I also include some trees without billboard LODs to remove any seams and help with a better wind effect.
1 Like
that makes sense. You know, I was thinking… when looking at the City Sample.
If you have trees in a close-up shot and you want to have high fidelity… it might be best to use a bunch of Nanite Trees… but maybe mix in a few non-nanite with the wind.
But… it might just look very odd, if some trees are stiff as hell, while others are showing the wind effect. Plus, the fidelity difference.
To make sure, that all the trees kinda have the same visual fidelity, and still are cheap for runtime. Heck… this is not an easy task.
Agreed! The tech is still so new that there isn’t really a definitive way to go about it. Experimentation is the way…
1 Like
It’s kinda crazy, that Quixel didn’t prepare all their trees for Nanite.
Knowing UE5 is coming.
Or did they announce anything, that they are also in the process of converting or creating all their trees for Nanite?
I haven’t heard any new news about their trees - The last thing I read was that they were going to go around the world capturing trees - but it’s possible that had to be postponed due to current world issues? Plus each tree would need to be captured in each season. Their trees will be built to support all platforms and engines so I don’t know what their focus will be on nanite but I can imagine they are very interested in it…
yeah. I guess now we all want Nanite trees, right? lol;
I was testing just a simple tree, with high res poly leaves.
Do you know where we can control the default culling settings?
It looks like, even if it’s Nanite geometry, there is some default culling.
Clearly to see on the shadows, but also on the geometry.
Video 1:
Video 2:
Would be great to know where we can control those settings.
cheers
They almost look like they are still using LODs - did you save it with “Use Nanite” - hovering over the mesh should give something like: (although this is fairly low poly)
1 Like
Nanite uses edge collapse decimation to simplify meshes. It will not work on trees, because most of the geometry is defining the silhouette and can’t be collapsed without destroying the shape.
Hmmm… what do you mean by saving it with “Use Nanite”?
I basically imported a tree, the leaves have no masking or translucent material.
Just plain geometry. I didn’t even assign a material yet.
Snapshot from the test:
I am using 3dsmax, Datasmith.
Tree is free from Evermotion Pack.
- I am not sure if this is distance culling or some sort of object culling?
I can’t find any documentation for this matter.
But it’s odd that this only happens on the tree geometry, but not on anything else.
- Maybe it has something to do with the scale of the geometry?
Thank you @Arkiras Arkiras, appreciate your comment.
Hmmm… but what I don’t understand. Tree or not Tree.
This Tree, is nothing else than a geometry, based on polygons and converted to a Nanite object.
Why would that tree not be treated as any other nanite object?@
I don’t understand what you’re asking here? A tree converted to Nanite will behave the same as other Nanite meshes. The issue is that the strategy nanite uses to reduce geometry does not work on trees because the geometry in it is defining the silhouette