2
$\begingroup$

(Blender 4.0)

My goal is to create a city, not one that's too complex, maybe like 7 or 8 different buildings in total. I want to use this city in both close-up situations where only a street's worth of buildings are visible at once and details of a single building will matter, in situations where the camera is so far away that buildings don't need to look like more than just simple prisms (to reduce system strain), and a step in the middle too. I want there to be consistency between versions too, so all the buildings should stay in the exact same spots.

Is there a way for me to have all three versions of the mesh in the same object, where I can easily swap between the detailed mesh and the far-away mesh? I've experimented with Multires, but it seems to only let me subdivide a mesh, which isn't enough of a change; I'd want the higher-detailed model to straight-up add a new balcony, for example. Creating three separate collections seems very tedious, especially if I decide to change the locations of some buildings.

My current idea is to use Instancing and create a weird mesh with a vertex in each place that building should be, then change the child to one of the other meshes on the fly. Is there a better way? Is there a reason this wouldn't work?

$\endgroup$

1 Answer 1

5
$\begingroup$

Here is how it can be done in Geometry Nodes:

enter image description here

This setup is for 3 level of details, and shows 3 versions of mesh, depends on distance to active camera.

To get location, you can calculate the length (vector math node) of the relative coordinate of the camera.

Active camera may be gotten from the active camera node

Then you can switch between different geometry using Switch nodes

$\endgroup$
3
  • $\begingroup$ Nice one. Could you edit your post and rephrase it so the names of key nodes you used are mentioned in text. Just so they are indexed and we can find them in search later $\endgroup$ Commented Sep 4 at 12:12
  • $\begingroup$ Just a heads up that you need to make sure the origin of your LOD objects is somewhere near the center of their geometry, otherwise this will not work as expected. The distance is calculated relatively to the origin (yellow dot), not the actual geometry. $\endgroup$
    – Gorgious
    Commented Sep 4 at 13:26
  • $\begingroup$ "Active Camera" node, nice, I missed that! I need to take a look if I haven't missed something more. BTW you can divide geometry into voxels and switch the level of detail based on voxel's distance, but then you need a stitching algorithm $\endgroup$ Commented Sep 4 at 16:29

You must log in to answer this question.

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