A 12 year old bug and some hierarchy editor changes

Sometimes bugs spend quite some time on my todo list. For example there was a bug in rendering the default FSX EH101 model that has been on that list for over 12 years. At that time I could not found the cause of the rendering issue and since then the problem has not surfaced too often it seems.

But a few weeks ago an user reported a bug with rendering his virtual cockpit and the bug also showed when export the cockpit to glTF for MSFS. So I took the time to dive into the issue in detail this time and I finally found the cause of it. It turned out MCX has been processing certain combinations of transformations and animations incorrectly for a long time already. For all those years the issue only showed as an incorrect rendering in MCX, when the model was exported to a MDL again the problem was not there.

But now with the ability to export to glTF for MSFS as well it turned out to be an issue, as the transformation and animations were also incorrect in the glTF file. The issue has been fixed in the latest development release.

While debugging this issue I also made some changes to the hierarchy editor. I have added an option to add a new child scenegraph node and also to copy and paste transformations and animation between different nodes. Please check the updated manual to see how these new features work. I think they will be useful when working on your model as well.

This was the last bug on my todo list before I release the new stable release. So I guess I will wait a few days to see if no new critical issues appear and then I will start to prepare the new stable release.

Upcoming stable releases

I will be releasing a new stable version of ModelConverterX and scenProc in the next few weeks.The reason behind these new releases is twofold.

On one hand over the last months there have been many improvements to the tools, mainly in the area of performance. So it is worthwhile to have those improvements in the stable release as well.

On the other hand I am also working on some changes to the internal architecture of the tools at this moment. This changes will allow me to develop the code better in the future, as it makes the code more testable. So in the end that should result in better tools, but because it is a relatively big change on the short term it also increases the risk of new issues. So before I make that available in the development release, I want to have a good stable release available for users to fall back onto if needed.

In the next one or two weeks I will closely monitor if the current development release has urgent issues that need to be fixed. If I see none, I will promote it to the new stable release after that period. So the current development release can be seen as a kind of release candidate version of the new stable release.

Vertex colors

One of the new features of MSFS compared to FSX and P3D is that you can specify vertex colors in your model as well. This means that just like a position or a normal, each vertex of the model can have its own color as well. This can be a more efficient way to set colors, as you don’t need different materials in that case.

Until now ModelConverterX did not support the concept of vertex colors. When you would load a glTF file which such colors they would be lost on export and ModelConverterX could also not render this information. That has changed with the latest development release. ModelConverterX can now import, export and render vertex colors as well. So this means you will no longer loose this information when working on your model in ModelConverterX.

Besides the glTF importer and exporter, also the Assimp importer and exporter have been updated to support vertex colors. So that means you can also read and write them to COLLADA and FBX files.

Animation mapping

The latest development release of ModelConverterX has a new feature that can help in converting models between different sims. Often these simulators use different names for their animations. For example FS2004 and FSX have different names for certain types of animations. Before ModelConverterX used a hardcoded mapping when importing these models, but now this mapping has been made user configurable. This way you can control better how the animations are exported.

Internally ModelConverterX uses the FSX/P3D animation names, as defined in the modeldef.xml file. At the moment two mapping tables are configurable, one from FS2004 names to FSX names and one from X-Plane names to FSX names. The manual provides all the details on how to configure the mapping.

If you find that the default mapping table that ships with ModelConverterX is missing an animation mapping that is generally available, please post this information on the ModelConverterX forum, so that I can include it in the default mapping file in future releases.

Configuration files

For many years I have been using the standard .NET settings files to store the configuration options in my tools. But this week I learned that the way I was using them was not really the most efficient way. This resulted in performance and stability issues. So therefore in the current development release I have modified how the settings files are used. You should see a slightly improved performance and less stability issues and crashes as well (especially when running multiple instances of the tools).

The downside of this change is that you might see that some of your options are lost when you install the latest development release. So if you made specific settings in the options it’s best to double check they are still there.

If you have any issues with this new version, please post them in the forum.

Drawcall Minimizer improvements

In the latest development release of ModelConverterX I have included a number of improvements of the drawcall minimizer:

  • The performance of the drawcall minimizer has been improved a lot. You should see that it takes a lot less time to calculate the combined texture sheet now.
  • There is an additional option to specify that textures with an alpha channel should be excluded. For some objects it works better to keep the textures with an alpha channel separate, for example because they need different material attributes.
  • There is an additional option to specify that you want to exclude specific textures from the combined texture sheet. Any texture you select to be excluded will not be placed in the combined texture sheet. You can use this option is a specific texture gives issues or is better kept as well.

scenProc building texture configuration change

I have made a change in the 3D building feature in scenProc that was introduced about two weeks ago. At that moment the building texture configuration file contained both a list of wall textures and a list of roof textures. I have realized that is not so flexible, as you might want to use the same wall textures, but have different roof textures for flat and sloped buildings.

So the Create3DBuilding step has been modified now, it takes two building texture configurations as input. One for the walls and one for the roofs. This gives you more flexibility. The Building Texture Configuration Editor has also been updated, so that you can only specify one list of texture now.

NVidia vs AMD: Shader differences

Around Christmas last year I made quite some changes to the shaders that ModelConverterX uses to be able to implement the PBR materials. Around that time I also optimized the code of the ModelConverterX preview to have better performance and less memory usage.

This week it turned out that these new shaders did not give consistent results however. It turned out that on some graphics cards not all output was visible in the preview. For example the grid was sometimes missing or in worse cases no model did show at all.

I have tracked this down to differences in how different graphics cards work with the OpenGL shaders. Although they all compiled the shader code fine, the results were not the same. In general it seems NVidia was a bit more tolerant, which results in most items showing there. AMD cards seemed a bit more strict and therefore had more issues.

I have modified my OpenGL and shader code now so that it should work more consistent over different graphics cards. Luckily my new development laptop has both an integrated AMD and a NVidia graphics cards. So at least I can easily test with two different cards.

The current development release of MCX does contain these fixes. But if you still encounter issues with the preview please let me know. I guess some of you must have been having issues for the last two months, but only this week it was reported on the ModelConverterX forum.