We are currently tracking down some strange issue with the LODs on our AI airplanes. Since they are not yet converted to native MSFS2024 I will place the bug-report in the 2020-Section, but we see the same behavior on 2024 as well. It seems that the Sim is “culling” away some parts of the model to early and is ignoring the defined LODs.
Our Models have a set of 5 LODs per model to be according to the SDK recommendations.
As you can see on the images in LOD0-3 the Nose-Wheels are part of the model and only in LOD4 the wheels are removed. Our understanding is that those wheels should be visible as long as LOD0-3 are loaded.
Seems the Sim “culls” them earier causing a strange look of a “floating” airplane at a relative short distance:
Each part/mesh of a model is evaluated by the sim as a completely independent object.
[…] objects which are separate from the main fuselage mesh like the gear, flaps, antennas, and whatever else is small enough to be deemed to not be visible beyond a certain point.
What we have tried so far as workarounds:
[…] tried separating the gear and adding them back to the model as attachments, and that didn’t work either. They were culled at the same distance as when they were exported with the entire model.
Jay (our main model-developer) came up with an idea
An idea I had for a possible solution would be for meshes in a hierarchy to inherit the bounding box of the largest mesh within that hierarchy. Instead of meshes like the landing gear, flaps, emissive mesh lights, etc. being evaluated independently and culled due to their small size, applying the bounding box of the largest object/fuselage to them would function similarly to the invisible cube workaround while preventing the smaller objects from being culled. Of course, this solution would need to be implemented by Asobo and I’m unsure of the impact it would have on performance. There would also need to be some sort of filter so that it only affects SimObjects since applying the same concept to scenery would definitely have a negative performance impact.
→ Would that be something to think about?
In our tests we have seen this “culling” on the default A320 as well, so we think there is nothing at the moment we can do on our end?
I think that workaround would be problematic for cabin item attachments in airliners for example. You want those distant ones to be lower LoD when you’re in the flight deck for performance reasons.
What is stopping you from using the invisible cube/plane method to stop the small objects from being culled? Lots of the default 2024 aircraft use it so i assume it still works.
This problem with the gears (specially front ones) is very obvious and also affects non AI products.. I tried even the “cube” method and the gears still disappears too soon, even if it is compliant with the verts limits.. is hopeless..
This seems to be the result of contribution culling and is expected.
On top of the LOD system, individual objects are also checked and will be culled if their screen size if below a certain threshold.
Have a look at this topic where I provided guidelines to avoid this issue when it becomes too noticeable:
Any chance of making this “% of screen size” an adjustable option in Graphics Settings? For widescreen and/or high resolution VR the threshold is too high.
Yes, please. If I may suggest another possible option as well: let us define a list, somewhere, of critical parts that must not be culled. I don’t really care if a door handle disappears at distance, but the entire door being culled is an issue.
FSX had a config value to control this globally, “SmallPartRejectRadius” if I recall. It was based on the number of pixels an object occupied I believe, not screen %, and it seemed to work pretty well, and was tunable. The current screen space percentage threshold is probably passable for 1080p, or for a TV across the room, but on a 3440x1440 monitor or larger, and especially in VR, it just falls apart badly right now. It’s jarring and ugly to see large parts like entire doors, hatches, and landing gear etc noticeably just vanish while they still occupy dozens of pixels on the screen.
The only workarounds available to prevent this right now are adding large invisible bounding boxes to the parts that are culling too early (a waste of draw calls), or maybe combining the entire animated structure of small parts, like a landing gear leg, as a single mesh and skinning it (potentially needlessly hard on the CPU).
I can reopen the subject internally, but I would need you to provide me with as much material demonstrating the issue as possible.
So if you can record videos showing obvious objects disappearing on ultra wide screens or in VR, this would help a lot.
@FlyingRaccoon Thank you for looking into this Sylvain. I don’t have time to make a video right now, and youtube tends to wreck small details in 4k vids anyway, but I have some cropped screenshots below demonstrating the problem. I think this premature culling is likely a major contributor to the constantly missing landing gear parts on AI aircraft, which has hundreds of complaints on the main forum.
These were all taken on a dual 4k screen. The missing parts are much more obvious when the aircraft and/or camera are in motion, and the action of them vanishing and reappearing is visually unpleasant.
I tested this at 1080p resolution as well, and you can just barely notice the missing components. At 1440p and 4k though the problem is very clear, and it’s even worse in VR due to the extremely high render resolutions required by distortion profiles. This makes even large parts occupy a very small percentage of calculated screen space, though the real percentage of the screen they occupy in the final image in the lens is actually much larger.
You can see this culling problem even without a headset actually, as it shows up when using the “Fake VR” test API in the sim.
Here’s some examples of interior objects disappearing. I made a image with yellow arrows showing what to look for and then a video of me leaning in in VR. All videos at 1:1 scaling but cropped to 1080.
My headset is a Pimax 8kx on its widest setting (5070x2975), it gets better (but not completely gone)on lower FOV settings.
Perhaps the screen size % calculation should only take vertical resolution into account and assume 16:9 from there.
stock DA62: circuit breaker labels, ALT label on G1000