• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

Do unseen polygons affect fps

Messages
1,803
Country
australia
I am working on a static scenery object which has a lot of 'faces' which I assume are polygons.
I am wondering if all polygons in a scenery object affect fps or only those 'visible'. For example polygons inside a building which can only be seen through the windows. What if the view is not looking through the windows eg from the air above the building. Will all the polygons inside the building affect fps (yes I know this is not a good example as there is a limit to how many polygons there would be inside such a small object.
 
It might depend on which sim you're asking about. Generally, all faces would be accounted for by the sim because the view of the object is constantly changing and the sim is computing it's 3D position. But MSFS has truly optimized the way objects are displayed, so you can have objects with thousands of faces with little or no FPS change.
 
Hello:

As Dick alludes to above, re-topolgy of a 3D model may replace exterior (sur-)faces to either delete- or cause FS to ignore- internal geometry at run time.

Since this thread is in the 3D Objects General forum, I'll offer comment on the general concept and work-flow for retopology via Blender and Sketchup. ;)


AFAIK, Blender has a feature set similar to that of Sketchup for reducing complexity of a 3D model when changing the "topology" for derived surfaces: :idea:



A detailed discussion of the 3D modeling infrastructure common to most 3D applications to implement "smoothing":




In Sketchup, one may use Solid Tools to configure one's 3D model geometry with a number of options:



NOTE: Sophisticated features such as "Outer Shell" only available via payware versions of Sketchup may otherwise be utilized via free Ruby plugin scripts.


A particularly noteworthy Sketchup Ruby plugin script is MeshWrapper Tools by Mark Carvalho aka "Cadman":




Another Sketchup Ruby plugin script worthy of consideration is Shellify by Caul:

https://www.sketchup4architect.com/sketchup-plugins/shellify-version-1-5-for-sketchup.htm

http://sketchucation.com/forums/viewtopic.php?f=323&t=55296


Both of the above Sketchup Ruby plugin scripts extend the option to retain- or delete- internal geometry after a merge of objects is implemented.


IIRC, the resulting Geometry and Normal lighting changes are retained / exported by MCX, and rendered by all versions of FS (including MSFS-2020). ;)

GaryGB
 
Last edited:
It might depend on which sim you're asking about
Sorry Dick I assumed incorrectly that this forum was only for MSFS.
But MSFS has truly optimized the way objects are displayed
Is that LODs where different the distance from an object is used to determine which 'model' to use/display? Where can I learn how to create different 'models'. I have seen a Youtube tutorial creating 3d (earth) satellite images used for LODs but I have no idea how to do that for say a static object of an aircraft.

I am assuming that Gary (thanks) alludes to the procedure required. I use Blender and although I used Sketchup over 10 years ago (to create very simply scenery objects) I have completely forgotten how to use it.
Aha I have seen 'smoothing' before but wonder if that results in less faces or less work required by the cpu.

After having said all that should I even be 'concerned' with a static aircraft with 50000 'faces' - I 'decimated' the original which has 220000 faces.
 
Last edited:
Not Dick here, but you may wish to review some of his posts on the subject of LODs with MSFS:

https://www.google.com/search?q=site:www.fsdeveloper.com+rhumbaflappy+MSFS+LOD&source=hp&ei=KaBsYaqwOqWMrwT-1LSIAg&iflsig=ALs-wAMAAAAAYWyuOslD_BxrHVxi7bZeS-6gnnvHTP4C&ved=0ahUKEwjq6KD3u9LzAhUlxosKHX4qDSEQ4dUDCAg&uact=5&oq=site:www.fsdeveloper.com+rhumbaflappy+MSFS+LOD&gs_lcp=Cgdnd3Mtd2l6EANQuxZYw44CYJC6AmgIcAB4AIABkwGIAdgWkgEEMzIuNJgBAKABAqABAQ&sclient=gws-wiz


You may also wish to review info on Arno's MCX LOD Creator feature: :idea:

https://www.google.com/search?q=Mod...wGIAeAWkgEEOS4xOJgBAKABAbABCg&sclient=gws-wiz


https://www.fsdeveloper.com/wiki/index.php?title=ModelConverterX_LOD_Creator_preview_video :teacher:



Mark Piccolo's worked example using MCX DrawCall Optimizer and MCX LOD Creator features:



And last but not least, a citation of Flying Theston's tutorial video via this helpful post by trfsd:

Flying Theston has a pretty clear tutorial for using Blender to create scenery models with multiple LODs for use in MSFS 2020 here:


The short answer is that each LOD goes in a separate Collection in Blender, named as follows: x00, x01, x02, etc., in declining order of detail (x00 is the most detailed). When you export from Blender using Blender2MSFS, make sure that you select "Batch export LODs", which should produce a single XML file for the whole model, plus a GTLF file and a BIN file for each LOD. Just follow the directions in the video about where to store these files in your project. In the XML file, you can edit the MinSize line for each LOD except the one with the least detail. I am not sure what the units are for the MinSize, but I am speculating that they are somehow related to the displayed size of the object in the Sim in pixels. The default values in the XML file seem a bit low, which could cause your more detailed models to display a bit early. But that is probably better than having them display too late. So if in doubt, you might just leave the MinSize values at their default values.

P.S. Sometimes Blender2MSFS may only produce a single BIN file rather than one BIN file for each LOD. This won't compile properly in MSFS. So you might have to go back and re-export, making sure that you have selected all of the LODs first before starting the export.


GaryGB
 
Last edited:
Thanks Gary
I briefly checked out the links which resulted in heaps of other links and while I like to learn I don't want to 'surf' around BUT the

Mark Piccolo's worked example was extremely interesting and helpful and I will apply what I see there.
And as usual the Flying Theston tutorial is excellent - I have followed many video tutorials by him.

Now I need to 'get my head around' MINSIZE in the LOD 'statements' in teh .XML.
I noted that the Flying Thestom started with values of '4' and 8' but changed them to '15' and '25' and I (think I) have seen some .xmls with values as high as 100'.
Now looking at https://docs.flightsimulator.com/html/Asset_Creation/3D_Models/LoDs.htm I cannot work out exactly what values I should use only that it is recommended to have at least 4 LODs.
There also is an example with SEVEN LODs (minsize 100, 50, 35, 20, 10, 5) and one without a minsize.
Could someone explain what the minsize values represent?
As my model is a small aircraft (cessna 172) it only needs to be hires within say 50 metres of the object.

Interestingly I have recently imported a stock MSFS aircraft into Blender and found that it had well over 200000 faces and that was just the external of the model. I am surprised at the extreme level of detail (and faces). OR am I 'barking up the wrong tree'?
 
Last edited:
I had an example of LOD here: https://www.fsdeveloper.com/forum/threads/lods-with-gltf-objects-for-msfs.453319/post-888205

LODs are defined as a percentage of the vertical resolution of your viewport. MinSize 25 means the object will show until it reduces to 25% of the vertical space of the viewport. Then it will stop showing the object. That's why you might want to have a simpler object with a MinSize of perhaps 10 to show between 25% and 10%, and then another Minsize as perhaps 5% for your smallest representation (with maybe colors, instead of textures at that point). With the above, 3 LODs , and the object disappears when it reduces below 5% of your vertical viewport (screen size).

Here, I use the most detailed version until 25%, then it switches to a lesser detailed version down to 5%, then it shows the final LOD down to 1% (the object disappears below 1%):

XML:
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{315157e4-35dc-4b1f-8c75-99a7f50dab2f}" version="1.1">
  <LODS>
    <LOD minSize="25" ModelFile="kdab_terminal_LOD0.gltf"/>
    <LOD minSize="5" ModelFile="kdab_terminal_LOD1.gltf"/>
    <LOD minSize="1" ModelFile="kdab_terminal_LOD2.gltf"/>
  </LODS>
</ModelInfo>

My monitor is 1080 pixels high, so MinSize 1 is 11 pixels height.

The SDK has this about LODs: https://docs.flightsimulator.com/html/Asset_Creation/3D_Models/LoDs.htm?
 
Thanks for the explanation Dick and I hope that I assume correctly that (in Blender) a less detailed object is achieved by reducing the faces using Decimate Modifier (I can't think of any other way).

I have 'decimated' the model and 0.4 seems to be the smallest value I can use on this model without noticeable deterioration but that still has around 100000 faces which I think it too much (it started with around 270000!) Strangely this static model is based on a flyable aircraft which would have at least 272000 faces.

The downside of using LODs is that there would be more disk activity reading in all the different models - the undecimated model is 48MB in size.
 
Last edited:
I read that for all but the LOD0 you should delete all the interior mesh, as it won't be seen from distance. Perhaps that would help. Also, at distance I'd consider removing details of mesh like rivets, etc...
 
Hi again:

It will be interesting to see what impact on run time performance is achieved by reducing an original user-pilotable aircraft to a SimObject consisting of only the 'outer shell', and visible parts of the interior cockpit (if translucent windscreens are used).

Surely, reduction of 3D model complexity by removal of all internal object parts must also reduce cumulative local scene impact on run time rendering.


One might wonder if the MSFS-2020 rendering engine incurs a substantially greater performance hit when reading LODs as discrete glTF's from disk, compared to FSX / P3D reading LODs as hierarchy objects within a single MDL that only needs to be loaded once. :scratchch


IIRC, the approach of Static Aircraft Model Maker (aka "SAMM") by Don Grovestine (aka "gadgets") is to disable / remove all gauge technology and animations which IIUC, in FSX / P3D, would have a significant impact on performance.


Arno's MCX can output a glTF from the original MDL of a pre-MSFS aircraft, regardless of the 3D import source and/or exported usage 'type' in MSFS.

The MCX Hierarchy Editor may be used to reduce 3D model complexity prior to export.


IIUC, in Blender working with a 'Hierarchy' of a imported original user-pilotable aircraft 3D model, may require distinguishing "collections" from "groups":




Sketchup uses a visually-oriented approach to working with 3D model hierarchies:




However, there may be caveats applicable to all above work-flows, if working with glTF format 3D models in Hierarchies as discussed in this Khronos thread:


"glTF doesn't allow re-using nodes, but it does allow re-using the same mesh from multiple nodes at different points the scene graph, with different local transforms. This is typically how instancing is done within glTF, when the instances share the same material. For instances with different materials, separate glTF "mesh" objects are used that refer to the same accessors, so that vertex attributes and index lists can be re-used with a different material applied."


GaryGB
 
Last edited:
Thanks Dick and Gary
I have already removed some detail such as rivets etc as I could not see those details anyway when viewing my model from a distance that 'pilots' would view the object from anyway. I will remove the interior for everything except LOD0 although 'line' only has low poly seats, yokes and lining with a total 5000 faces
 
Just for reference I have made a low poly Caribou scenery model which was 8,000 triangles. While the aircraft I am working on at the moment with two pilots has 273,000 triangles. You'll want to be somewhere in between those two numbers (but closer to the 8,000 than 273,000)
 
Thanks Anthony.

Once I go below around 100000 the model starts to distort.

Example below of how 'lines' distort when attempting to reduce faces (this one to 58000). This was only one really noticable deformation which I fixed easilty and quickly in edit mode (Blender) however reducing below 58000 results in many distortions.

I have had little trouble getting aircraft FSX aircraft models down to under 10000 faces but this is a MSFS aircraft and as such HEAPS of detail.

I found another 30000 faces I can remove (before decimate) for such parts as more rivets (tail, elevators, trim tab), bolts, springs near the floats rudders (2 with 10000 each). Unfortunately though after I applied the same decimate value (which resulted in 10000 LESS faces) there was a lot more distortion which strangle doesn't show as distortion in edit mode so I can't even try to manually change the offending triangles and so it seem that 58000 faces is the best I'm going to achieve without many hours spent try to manually correct the distortions.

What is you view on a model with 58000 faces for LOD0 (lots less when 'minsize' is smaller than say 25) ?

BTW I read that it is preferable to have at least 4 LODs but is it ok to use the same model for some of them (I think I have asked this before)?
I note that the Flying Thurston in his video tutorial (mentioned by Gary) only had 3 levels and so I don't know what is best.

bent.png
 
Last edited:
Hello Anthony
FYI
I wondered was there a method to decimate (heavily) parts of a model with have heaps of faces. There are two method and by far the easiest IMHO is a LIMITED DISSOLVE. When I applied that to my model the faces reduced from 292000 to 120361 with NO noticable distortion. I then applied DECIMATE and using the same value I used before (0.2) I got the faces down to around 30000 (much less that 58000 without using limited dissolve) without too very limited noticable distortion.
 
I'm not an expert at creating LODs but to my knowledge the decimate modifier in Blender can be used when set to "planar" and when the delimit parameter is either set to UV or Seam, assuming you have unwrapped your model, what I guess you have.
This should reduce the distortion or completely work around it, since with this delimit method you're not distorting the mesh across UV islands. I haven't really tried this method yet and only heard of doing it this way.
I just see that this thread is a year old, well, I guess I just leave this here anyway :)
 
Back
Top