Good day to all. The SDK documentation covers the 6 different LODs to be used for aircraft models (x0 to x5). It would seem reasonable that multiple LODs are included for airport buildings (especially those with large textures or high poly counts) so my questions are:
1.) How many different LODs are considered OK (I note that even airport lights have 3 or 4).
2.) Without having to manually check, do we have any known info as to what distances are used to switch between the different LODs and are those distances straight line in 3 dimensions?
3.) Should the same detail reduction as specified for aircraft be used in scenery? eg x0 to x1 = 50% reduction, then significantly greater reduction all the way to x5.
4.) I am assuming that all I need to do to convert from x0 to lower LODs is to remove tiny objects, join other objects where possible, simplify the mesh (decimate) and lower any texture resolution.
It’s my understanding that it isn’t about specific distances but about how much space the object takes on the screen in a percentage value, and it is also the behavior I’ve seen with my own scenery.
I also found docs about aircraft but not airports, i suppose you refer to this:
%sdkfolder%/Documentation/02-Asset_Creation/3D_Models/Modeling_Practices/02-Levels_of_Detail.html
I am also wondering about airports, and if there is a setting or magic that can be selected to prevent runways to become a blurry blob at almost any distance except the immediate runway section that you’re rolling on?
Thanks for the reply. Looking at the sample aircraft file, it seems that we actually decide when each LOD is used based on the bounding box height as a percentage of screen height, so you are definitely on the right track.
From the sample file:
<!-- minimum display size in % (should be bounding sphere vertical screen size, sphere will often be slightly larger than you expect) -->
<!-- default minSize is 0 -->
<LOD minSize="50" ModelFile="SimpleAircraft_LOD00.gltf"/>
<LOD minSize="20" ModelFile="SimpleAircraft_LOD01.gltf"/>
<LOD minSize="10" ModelFile="SimpleAircraft_LOD02.gltf"/>
<LOD minSize="5" ModelFile="SimpleAircraft_LOD03.gltf"/>
<LOD minSize="1" ModelFile="SimpleAircraft_LOD04.gltf"/>
Just to confirm, the above works just fine. ie create additional LODs in the same way as per the SampleAircraft example in the SDK.
All I did to test was to create a new version of one of my main buildings that was a totally different colour. Flying around in the drone and it’s looking magic. Not sure MS would appreciate us using LODs to change scenery colours, but all good for testing.
I was wondering if we need to create LOD for airport buildings (Terminals)?
Looks like LOD are mostly used for aircraft, ground vehicles and assets on the tarmac.
Definitely need to use LOD for terminals and pretty much anything that can have anything other than the simplest of meshes. LOD lets you have different polycounts, different object counts, different texture resolution etc. For lowest LOD I join multiple models together before decimating the geometry and then apply a much simplified and lower res texture. It makes it a lot more work but has a decent impact on performance, especially for lower powered PCs.
I am still confused. I may be wrong but why when I activate the DOF debug mode in the SDK I can see LOD numbers for jetways and ground vehicles for exemple but not for the the building itself? I noticed that for the Asobo airports and for a few airports from professionals creators that I bought.
You said you used to join multiple objects for the lowest LOD creation. How is it possible? Does it mean that if you have a car and a truck for your higher LOD level (so 2 objects), for your lowest LOD level you are going to merge those objects together and only have 1 object (Maybe not the best example)? Do you “kill”, turned off one object so?
It’s up to each developer to decide how they want to use LOD. Some may have decided that their models are not complex enough that it would make much difference.
Each object that I export (from Blender) - so this is a single object that I can place in scenery editor, might be 1 or 5 or 10 different meshes in Blender. For my highest LOD, I’m using pretty much the original high res Blender meshes that each have their own texture. To create the next level down, I might join (in Blender) 2 or 3 of these meshes together before decimating the geometry. It can be quite a bit of work and can take hours, but some of my terminal buildings have become crazy complex and it would be asking way too much of even a high end PC to have to draw all of this geometry from a distance where you wouldn’t be able to see the detail anyway.
Another example is that some of my objects have 6 or so lights dotted around them. From a distance I can reduce this to 1 or 2.
The simplest way to achieve things is probably to NOT change the content of each exported object, but to just half the vertex count and reduce the texture resolution by 50% for each step down in LOD. Again, if your models are relatively simple there might be no need to do this, or to only use different resolution textures for each LOD, or just use the same textures but decimate the geometry.
I’ve followed the rough guides given in the aircraft examples as to how mesh detail is reduced per level of detail and applied this to my buildings too, where it made sense.
The documentation from Asobo is still lacking in lots of detail, so it’s still probably a case of ■■■■it and see. Perhaps there is more scientific methodology used by other content developers in games that use a similar engine.
Thanks, your explanation are very useful. Really appreciate it. I will keep working on it and take a deeper look at the LOD documentation for aircrafts.
I read all your comments with interest. I’ve struggled with this in my scenery efforts, and maybe I can contribute something related to scenery (I don’t know anything about airplane models, though):
I’m building bridges of all kinds, and I need them to be detailed up close, but I no longer need that detail past about 1 km. My bridges necessarily take up a lot or real estate, because I also model the approach roadways. Therefore my models are really big with respect to buildings. I use Blender and trim sheets, so the poly count is quite low at the highest res. However, at one km I get rid of the walkway fences, the light poles, the guard rails and the rivets (from a trim sheet, of course).
The really big jump in lowering detail comes at the last LOD model: In the case of a bridge, I create a few rectangular solids - nothing at all like a bridge but occupying or, you might say, forming shells around the biggest pieces. Then I go back to my LOD00 model, set up several cameras and “photograph” it in profile and plan views against a black background. In Blender I set the camera to orthographic projection and frame the picture with the camera lens scale slider. (Lock Camera to View doesn’t work in ortho mode.) I illuminate the model evenly with at least three lights. I save each render as a .png with an alpha channel for later.
This gives me image textures I can use on the flat walls of my rectangular solids. If it was a hangar, I’d stop there.
In the case of a bridge of almost any kind, however, I go into some photo processor (I use Krita), and I edit the black, open spaces to transparency in the alpha channel. Now, when I paste these images onto the outsides of my rectangular objects, you can see through the holes. I the blender2MSFS toolkit, I set the alpha mode to dither and, usually, the material tick box to two-sided.
The sim does a terribly intelligent thing: as you move farther away from or closer to the object, the transition from one LOD model to another “fades in”; there is little apparent “jump”.
I hope this helps someone out there. I’m still learning.