2
$\begingroup$

I am designing a large scene that has millions of polygons and a lot of objects in it. It bogs down my viewport a ton, and also greatly increases render times. Obviously, I turned to LOD systems to optimize my scene. But I couldn't find any, unlike Unreal Engine or Unity (which are all automatic)! I know there are paid add-ons out there, but is there a way to do it for free? (Also don't want to use Adaptive Subdivision because I want to use it in EEVEE, too; is that even possible?)

$\endgroup$
3
  • 1
    $\begingroup$ If the problem is viewport performance, I think you'd be best off just having a high poly and a low poly collection, and disabling the high poly collection in viewports to improve viewport performance. Other techniques for LOD are intended to improve rendering speed or eliminate sampling artifacts, and are likely to actually bog down viewport speed. $\endgroup$
    – Nathan
    Commented Apr 18, 2022 at 15:09
  • $\begingroup$ I adjusted my question to mention that high poly counts in scenes increase render times, too. $\endgroup$ Commented Apr 18, 2022 at 15:49
  • 1
    $\begingroup$ I'll give a possible answer, but I'll first advise you not to hinder yourself by forcing a specific solution for your problem. You're having issues with very large scenes, affecting viewport and render performance. LODs can solve those problems, but it is not the only or best way to solve it. $\endgroup$ Commented Apr 24, 2022 at 0:43

1 Answer 1

5
+100
$\begingroup$

I added a comment about how the question was asked, but I'll give an actual answer here: sort of, via geometry nodes (won't work earlier than 3.1, as it relies on a specific node):

Merge by distance node

Use the "Merge By Distance" node, and have the distance adjust based on - well, whatever you want. I have it taking the distance between the object and the camera, use a map range to clamp to good values (0, 100, 0.001, and 1 worked nicely for Suzanne). I have done a concept where it takes the pixel size into account, but that's a lot of math that honestly will slow the nodes down to a crawl.

Here's an example of it:

Suzanne LOD

And you want this to be applied to multiple objects at once? Use the "Copy Attributes" addon, free and already included in Blender, to copy and paste modifiers between objects. You may still need to set parameters manually though, haven't checked.

Note: this is recalculated whenever the frame changes, so this will slow down Blender during playback, especially for your big scene case. And geometry nodes, in my tests at least, tend to not scale very well with dense meshes.

Is it automatic LOD? Yes. Is it going to improve performance to what you want? Maybe not (and this may mess up your UVs or other mesh-related data, I have not tested this).

Frankly, I'd mark this as "not yet implemented in Blender." The fastest, best way this should be done is within the source code, accelerated by Blender, in the background. I trust the developers to look into that, if they think it's the best way to go about it. Game engines like Unreal and Unity can optimize a lot because they can assume a lot, and assets are (more or less) locked down. The Blender viewport must be dynamic and exactly represent what users expect it to be, so there's less developers can assume about any given project file and scene. You may expect the mesh to be an optimized version of itself, but other users may expect to see the full mesh even if far away.

There are addons built around viewport performance (like my nView addons - I won't post links here unless solicited, you can look them up) that may help as well, if you find LODs not to be your ideal solution.

$\endgroup$
1
  • 1
    $\begingroup$ Ingenious idea! I'll keep it in mind until the bounty expires. Nice use of geo nodes! $\endgroup$ Commented Apr 24, 2022 at 12:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .