LOD Blender object creation: does this process makes sense?

As a beginner in Blender (and 3D in general) as well as in scenery design, I want to check with more experience developers that my process to create LOD makes sense. And obviously collect, your best advice. Thank you in advance.

For the sake of explaining how I plan to update all my object, I’ll take a simple blue pole object for my San Diego Gillespie (KSEE) freeware.

  1. BackUp my original most detailed object into a Collection name _LOD0-Original and Hide in Viewport.

  2. Duplicate my original collection into a _LOD0 and merge all object into a single one.

  3. Duplicate the LOD0 collection into LOD1 new collection. For this _LOD1, Add a Modifier - Decimate and manage the ratio to reduce (very) approximately to 1/4 the number of vertices, faces and Tris. Very approximately. This is where I need help to make something rational and… maybe smart.

  4. Duplicate the _LOD1 to a new collection _LOD2 and again apply a Modifier - Decimate, and again reduce approximately. I may remove some texture - if needed - and replace it with basic color material for example.

  5. Repeat Step 4 to _LOD3 and _LOD4.

  6. Use the Blender free plugin LN LODs, click calculate “LOD Sizes” and click “Set LOD Values in Asobo Exporter”. It populates automatically the value for my Multi-Exporter gLTF 2.0 plug-in

  7. Export my object. Here I’m not sure at all that the LOD value makes sense LOD0 is 5*,* LOD1 is 3, LOD2 is 1 and LOD3 is 0. Shouldn’t it be the other way around ?

  8. As I’m suspicious with LN LODs values injected in the Multi-Exporter gLTF, I manually edited it to this:

    <?xml version="1.0" encoding="utf-8"?>
    <ModelInfo guid="{02571d45-0398-4ae1-900e-3553045510c2}" version="1.1">
    	<LODS>
    		<LOD minSize="0" ModelFile="vbcorp-ksee-blue-poles_LOD0.gltf"/>
    		<LOD minSize="1" ModelFile="vbcorp-ksee-blue-poles_LOD1.gltf"/>
    		<LOD minSize="2" ModelFile="vbcorp-ksee-blue-poles_LOD2.gltf"/>
    		<LOD minSize="3" ModelFile="vbcorp-ksee-blue-poles_LOD3.gltf"/>
    	</LODS>
    </ModelInfo>
    

    And with this L0D0 minSize 0 and so on, it seems working with the debug tool, except that I was expect not 3 levels but 4 levels (0, 1, 2, 3).
    Far distance, LOD0 is displayed:

    Medium distance, LOD2 is displayed:

    Close view LOD0 displayed:

Any tips & tricks are welcome.

Thank you for your help!

This is kind of a long topic with no one right answer for each situation/model, but you’re on the right track. I always target at least a 50% reduction. As long as you cant easily notice a form change when that LOD get’s switched to. Sometimes you can go a lot lower without a noticeable difference.

I personally tend to use a mix of decimate and hand dissolving or merging edges/verts. I find by doing it by hand, I have more control over the form changes for a lot longer. Sometimes decimate collapses something early on that make the LOD look bad. It’s better for organics. Though, doing it by hand is definitely slower.

For your #7: That is the right order. The model would switch to LOD0 when it’s bounding sphere reaches 5% or more vertical screen space, LOD1 at 3%, etc etc. So each LOD displays while in the following range (sometimes its easier when you think backwards from your last LOD):

LOD3 > 0-1%
LOD2 > 1-3%
LOD1 > 3-5%
LOD0 > 5-100%

I do not know how many verts this pole model is for it’s LOD0, but I’m guessing you probably made more LODs than necessary. In 2020, you only need 150 or less verts for the model to display all the way to 0%. Simple objects like this, you may only need 1 LOD, which I just vertex paint.

When you are still on the main menu of 2020, open the LOD debug window and check Activate LOD Limits and LOD Limits: vertices. Keep it open and load into your airport. This will force the LOD system to use the more aggressive Xbox LOD system. If you optimize for this, in most cases, you should be good across the board for 2020 & 2024, PC & Xbox.

While in this LOD Limits mode, as you move the camera away from your object, the text will go from green, to yellow, to red. Yellow is OK, but means the LOD needs to lower soon. Red means you have hit the lower limit for that LOD. You have too many vertices for that % of screen space, so you would want to either add another LOD or further reduce the next LOD in line.

On Xbox and (IIRC) 2024, when the current LOD hits this limit, the next lowest LOD will take over, or if there isn’t one available, the model will cull.

As I said, one size doesn’t always fit all, but I suppose a good rule of thumb to go by is to just do the most with the least.

Use the least amount of LODs you need to reach the lower vert target. Reduce each LOD as much as you can without changing the silhouette or causing noticeable popping. Reduce texture memory (and draw calls) as much as you can across LODs by getting rid of entire materials or replace them with vertex paint when able. 5% and below LODs should usually be vertex paint or 64px albedo only. Always use vertex paint over 64px texture when possible. But also, depending on the object, sometimes I break the vertex paint at 5% rule and make it 1-2%. Just depends on the model, but sometimes vertex paint at 5% is just too obvious of a change.

For sure i agree with Rotornut, there is no one answer

you can see when the vert limits will cull your stuff (by screen size which you can track in the dubug window) here, you probably wont need many lods for smaller stuff, so long as you cant see it popin or change ….

and for a lot of those little items your merging is almost better, it increases the size so it isnt culled as early

so to me it looks like your on the right track

Thanks to you two to pay attention to rookie amateur developper :wink:

Now, I’m confuse :slight_smile: And sorry, I have edited my original message changing the whole perspective of my point 7 and point 8 after your reply.

LN Lods create LOD0=5, LOD1=4… and in MSFS2020 with the LOD Debug tool, the object is always displayed at LOD0 whatever the distance. That’s why I put manually (see now my #8) LOD0=0, LOD1=1… and it works as expected in MSFS2020. :confused:

I’d also recommend throwing in a Weld modifier in addition to the Decimate. Weld lets you merge vertices that are close together, and can sometimes give you results that work better than decimate.

You can also reduce the vertex count counted by MSFS by using smooth shading when that looks ok for the object at lower LODs.

You definitely want LOD00 to have the highest minSize number.

The 0, 1, 2, 3 you have set in #8 isn’t the order of the LODs, but the vertical screen space % when that LOD will start to display. You’re telling it when to switch.

So, if you set LOD0 to 5, LOD0 will be visible once the bounding sphere for that pole reaches a size of 5% or greater on your screen (the closer you get to the object). So, LOD1 would only display from 3-5% on your screen. It would start displaying at 3% and then LOD0 would take over at 5%.

In all cases, the sim decides the actual LOD. And I would reduce objects by 25% rather than 50%.

https://www.fsdeveloper.com/forum/threads/lod-blender-object-creation-does-this-process-makes-sense.460308/post-936107

I hope this a useful tip, but I’ve found that the Decimate modifier has proved unsuccessful for modelling buildings as the basic outline is quickly lost. Instead I create the buildings from several Blender objects, a basic outline object defining the basic shape of the building, but devoid of any detail, with the other objects then adding progressively finer levels of detail. The LOD collections are then built up from these objects as required, see example below:-

LOD0 = Basic outline object + object A + object B + object C

LOD1 = Basic outline object + object A + object B

LOD2 = Basic outline object + object A

LOD3 = Basic outline object

Oops, just realized I hadn’t replied. Thanks so much for your input! I really appreciate the different perspective; it helps me level up. This is exactly why I’m proud to be part of this community.

Unfortunately, my plug-in so far doesn’t take in account the new LOD system they implemented in SU3 and that’s because we don’t have exact values I could correct the array and triangulation mechanics with. Once I will get those data, everything should line up.

On further notice, my plug-in is NOT for absolute LOD management, it is mostly to show you “the boundaries” of your actual LODs.

Meaning, if you have small objects like that, it’s most likely that you can push things a bit more since you have less polygons and you can keep full detail for longer, while on bigger mesh it gives you the MINIMUM required screen space per vertex count. Meaning that going anywhere below that number could possibly end in a item pop out.

I made a post (look on the board in the latest opened threads) asking Asobo to update the documentation. Until they do that, there’s not much I can do to implement calculations on the new LOD system they introduced with Sim Update 3. Once they will, I’ll release a new version of the free plugin + a paid version with in-blender LOD testing functionalities. I have it working already, but not worth releasing since the core numbers are still wrong

Hope this helped a bit :slight_smile:

Regards

Chris

Sorry but I didn’t go through the whole post before and didn’t notice that bit regarding doing things “the other way around” xD
LODs are confusing at first, so let’s ground it with the basics.

LOD0 is always the most detailed model.
Think of it as the “close-up” version you want only when you’re near enough to actually see that detail.

The addon calculates when each LOD should appear based on how big the object is on screen (Vertical Screen Space = % of the screen height the object takes).
It triangulates the mesh like an export would, counts the final verts/triangles, and then says:

“With this many verts, showing this LOD when the object is tiny on screen would be wasteful.”

So in your case:

  • LOD0 has ~590 verts, so the calculator says it shouldn’t show up until the object is about 5% of the screen tall.
    That’s the point where those extra details actually matter visually.

  • If a model has more verts, the minimum screen space goes up (needs to be closer/bigger to justify the detail).

  • If a model has fewer verts, the minimum screen space goes down (it can be used farther away because it’s cheap to draw).

There’s also a small tolerance built in (use the slider, ~2% margin), so don’t treat the number as a perfect hard wall but it’s a solid guideline.

In short:
“High detail LODs are for close range. Low detail LODs are for far range.
The calculator is basically telling you how close is ‘close enough’ for each one.”