• 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.

MSFS Livery questions ! Newbie Question

Messages
34
Hello ! Can I receive from a member of the FSDeveloper community a livery construction package with their own instructions, - and not Asobo's examples in LiveryAircraft sample !

I am a willing simmer (I have already released several regional airports on Flightsim.to under the name MarcRouj) - but it must be said that sometimes between the explanations of the SDK and doing it in Devmode is difficult to do !

I want to make a livery for the Milviz F86 (converted) Sabre, but I'm having great difficulty understanding what I need to change in the xml files so that fspackagetool doesn't give me an error !

I have already made conclusive tests by replacing the original Asobo files (SimpleAircraft_FUSELAGE_albd_000.png and SimpleAircraft_WINGS_albd_000.png) with the Sabre png files. The package came together well, without any problems !

Now I would like to have an example from you (and not an example from Asobo) so that I understand what I should write.

Thank you very much for reading me and helping me move forward with my project.

Regards,
Marc
 
Hello ! I know that we are in the Advent period and that we are approaching Christmas, and that my question and my request for a philistine must make those who read my question and my request laugh !

God bless you !

Regards,
Marc
 
Marc,

I do not know what xml file you are speaking of -- not for repainting. Frankly, I put together repaint packages by hand, with a bit of help from MSFSLayoutGenerator. Nothing at all in msfs itself is used.
https://github.com/HughesMDflyer4/MSFSLayoutGenerator

It would be useful to look at most any livery package in the Official folder to see the folder-level at which that repaint starts. Of course, having the base package for the aircraft you are repainting is also important.

In general, you basically need to have a structure like:

<your-package-for-the-community-folder>
layout.json
manifest.json
+- ContentInfo <-- The ContentInfo is used by the Content Manager, but is optional
+-- <folder-for-your-repaint ex: default-dc3-mypaint-N3984DH> <-- #1
thumbnail.jpg <--- This is used in the Content Manager, I use 412px x 170px, size varies
+- SimObjects
+-- Airplanes
+--- <folder-for-your-repaint ex: default-dc3-mypaint-N3984DH> <-- #2
aircraft.cfg
+---- texture.<your-texture-name>
<< your repaint files (only the ones to replace existing file) >>
texture.cfg


The two folder -- marked #1 and #2 -- make them the same name.

The aircraft.cfg will start with something like:

[VERSION]
major = 1
minor = 0

[VARIATION]
base_container = "..\douglas-dc3" <-- must match the folder name of the base aircraft, don't change the dots

[FLTSIM.0]
title = "Douglas DC-3 AMA Classic AnyReg"
model = "\..\..\douglas-dc3\model" <-- must match the folder name of the base aircraft, don't change the dots
panel = "\..\..\douglas-dc3\panel"
sound = "\..\..\douglas-dc3\sound"
texture = "your_texture"
...
... << and all of the rest which can be taken from the base model you are repainting, changed for your repaint >>
...
...

Critical points are:
1. The title must be unique
2. The exact name of the base aircraft folder must be referenced in the base_container, model, panel and sound lines.
3. The "texture =" must match your repaint folder.
For example, if your repaint folder is texture.my_repaint, use "texture = my_repaint" in the aircraft.cfg file.

The texture.cfg file must be something like the following, using the

[fltsim]
fallback.1=..\..\douglas-dc3\texture.metal
fallback.2=..\..\douglas-dc3\texture


The two json files are used by msfs to find and recognize the contents of the package/


layout.json -- it is best to use MSFSLayoutGenerator to create this (info below)

manifest.json will look like this (pay attention to three lines):

{
"dependencies": [],
"content_type": "LIVERY",
"title": "Livery DC-3 My Classic Repaint",
"manufacturer": "Douglas",
"creator": "your name",
"package_version": "1.0.0",
"minimum_game_version": "1.29.26",
"release_notes": {
"neutral": {
"LastUpdate": "",
"OlderHistory": ""
}
},
"total_package_size": "00000000000086145911"


Place a shortcut for MSFSLayoutGenerator on your desktop. Once you have your folder <your-package-for-the-community-folder>
collected with everything in place, simply drag-and-drop the layout.json file onto the shortcut for the layout generator. It will put the correct file list into layout.json and also update the total_package_size in manifest.json.

At that point, you should be able to zip of 7z the package. Or, to test it, copy the entire folder into your Community folder.
 
Thanks Dale! Thank you for your contribution ! I'm going to take inspiration from it. Your diagram will be appreciated by all those who, like me, know how to reproduce like a monkey, but who cannot spontaneously imagine the process
 
Hello Dale! There is still a question in my mind : Are you using fspackagetool.exe to convert png images to PNG.DDS ?

If you use fspackagetool.exe could you give me instructions to use it correctly without errors ?

If you do not use fspackagetool.exe could you give me the name of the software and the procedure to follow to use it correctly without errors ? (PowerShell Command Line?)

This would be the best Christmas present !

Regards,
Marc
 
Hello Marc,

Once the project tree has been copied from an example of the SDK (Sample folder) and then filled in, we end up with 2 directories:
PackageDefinitions,
PackageSources
and an XML file that describes the project.

All that remains is to make a shortcut of the fspackagetools.exe and drop it next to the XML file.

By doing a simple drag and drop of the XmL file on the fspackagetools shortcut, it starts compiling and converting textures.
I think that’s the quickest way.

PS: I made a post in French that is pinned on PV ;)
 
Hello Dale! There is still a question in my mind : Are you using fspackagetool.exe to convert png images to PNG.DDS ?

If you use fspackagetool.exe could you give me instructions to use it correctly without errors ?

If you do not use fspackagetool.exe could you give me the name of the software and the procedure to follow to use it correctly without errors ? (PowerShell Command Line?)

This would be the best Christmas present !

Regards,
Marc
Marc,

I use the Nvidia texture tools for all conversions
https://developer.nvidia.com/nvidia-texture-tools-exporter

It is a desktop application, does not need extensive instruction

for compression type use:
BC3 for textures with alpha [transparent areas] ~= DXT5
BC1 for textures with no alpha [without transparency] ~= DXT1

When you save, just give use the .DDS file type

Might have to fiddle with the option to flip vertically, but you can tell by examining an existing an existing texture.
 
Last edited:
I use the Nvidia texture tools for all conversions

You should be aware that FSPackagetool.exe applies a remapping algorithm to textures that other converters do not have access to.

It is recommended to use a lossless format at 16 bits per pixel, such as the 16 bpp *.PNG format. This is especially important for roughness, metal and/or occlusion maps, where Microsoft Flight Simulator remaps the data to a curve to have more precision in the dark areas before compressing (which is then remapped again later in the shader).

 
You should be aware that FSPackagetool.exe applies a remapping algorithm to textures that other converters do not have access to.



This sparked my interest, so I had to look into it. When examining textures from the Official folder, it seems the majority of fuselage textures have been DXT1 compressed (no alpha), makes sense because it saves space. Decals and other textures that have transparent areas use DXT5 compression, also makes sense. These compression methods have been commonly used for years. Even the old program DXTbmp can use these compressions (though it has a reputation for causing artifacts where model edges meet. The also old, but more recent ImageTool (from the FSX SDK) can also produce these (and is preferred over DXTbmp).

In regards to the COMP files, because of the concerns about obtaining the highest quality result, they are compressed with BC7, straight alpha (not pre-multiplied alpha). The NVidia Texture Export Tool can also produce this compression, I imagine that SubstancePainter is also capable.

So, I am sorry to be the one to break it to you, Rich, but the FSPackagetool is not using any compression that other programs cannot produce.

And, of course using a 16-bit source is preferable for all three of these compression methods. So, that statement about using lossless, 16-bit files is referring to the input files that painters produce. I know Gimp, and PSP, and I expect Photoshop can all make 16-bit files.
 
Hello Dale! There is still a question in my mind : Are you using fspackagetool.exe to convert png images to PNG.DDS ?

If you use fspackagetool.exe could you give me instructions to use it correctly without errors ?

If you do not use fspackagetool.exe could you give me the name of the software and the procedure to follow to use it correctly without errors ? (PowerShell Command Line?)

This would be the best Christmas present !

Regards,
Marc
Hey Marc,

I need to point out an error in the earlier reply. I said BC7 was equivalent to DXT5, that is wrong, rather it is BC3.

BC refers to "Block Compression." It is the general family of texture compression methods which have become something of an industry standard. https://en.wikipedia.org/wiki/S3_Texture_Compression.

Anyway, to be clear,

DXT1 = BC1 is used for non-transparent textures (no alpha saves space)

DXT3 = BC2 formerly used for textures with transparency, but the results for most flight sim needs is not great.

DXT5 = BC3 is currently used for textures with transparency.

BC7 is used for those textures needing the highest quality, specifically, the COMP files.

And, as mentioned, I use the NVidia Texture Tool, which will make all of these compressions. It also can give information about images it reads, so you can check that your output file matches the one from the developer.
 
1703185510821.png


You know it sure looks like they are saying that the texture is modified before compressing and presumably this means while converting from .png to .png.dds and by extension that would be an irreversible process but I have no concrete proof of that and sadly breaking it back to you that you not the first person I've referred this SDK excerpt to. Most are content to recycle textures through the process and ultimately I have little stake in the matter, but thank you for your detailed explanations.
:)
 
You can use Blender to make a cube, assign a MSFS PBR material, export with the Asobo exporter, compile with the sim (fspackagetool or Devmode), and look in the packages folder for the textures. Voila. Albedo, Comp and Normal textures in DDS, ready for the sim. Make 10 cubes with unique textures and you'll get 30 DDS textures. PNG2DDS, TIF2DDS and JPG2DDS simple. The UV is not part of the texture, so those textures could be used anywhere.
 
View attachment 90870

You know it sure looks like they are saying that the texture is modified before compressing and presumably this means while converting from .png to .png.dds and by extension that would be an irreversible process but I have no concrete proof of that and sadly breaking it back to you that you not the first person I've referred this SDK excerpt to. Most are content to recycle textures through the process and ultimately I have little stake in the matter, but thank you for your detailed explanations.
:)

Just for clarity, of course the texture is modified before compressing . . . by the painter. And it is important to follow the advice for transparency, etc.

We also want to avoid confusion between DDS and compression. DDS is a container file format, not a compression itself. DDS was designed to hold these specific BC/DXT compressed images/textures. ( https://en.wikipedia.org/wiki/DirectDraw_Surface ) That said, DDS can contain an uncompressed image, but we rarely see that in the flight sim world (most of our textures are so large it makes more sense to compress them,

All of the BC/TXT compressions are lossy, therefore you are completely correct that .png to (.png].dds is irreversible (assuming that they were compressed, which they almost certainly were).

All of this is why we (painters) want to start with a png (or rarely BMP), and keep that as our lossless source file (for future changes) before sending it to the compressed file. And, this is not my first contact the SDK.
 
I think you are saying that it is not a compression algorithm, it is a lossy format algorithm that causes .pngs reverse engineered from a .png.dds to not be as clear as the original source .png and that repeated cycles of compiling "ripped" .pngs will ultimately result in an all gray image, which is also what I had been trying to inform.
 
Yep, a 'round-trip' of DDS>PNG>DDS causes a color distortion of the final DDS, due to the lossy nature of the DDS formatting and Asobo adjusting the coloring of the original DDS.

Which is the reason Asobo uses the texture,cfg file to point to the original DDS in many cases. In Blender or 3dMax you can use the DDS>PNG to set the materials, but not include the PNGs in the package's texture folder... use the texture.cfg to point to the original DDS already loaded in the virtual file system of the sim.
 
I think you are saying that it is not a compression algorithm, it is a lossy format algorithm that causes .pngs reverse engineered from a .png.dds to not be as clear as the original source .png and that repeated cycles of compiling "ripped" .pngs will ultimately result in an all gray image, which is also what I had been trying to inform.

Again, to be clear, what I am saying is:
  • DDS is a file container. Most of the time it contains compressed files, but by itself it has nothing to do with the matter.
  • The compression we use (for the files inside the DDS) cannot be [perfectly] reversed because the compressions we use are lossy.
  • For the textures which most painters will be creating, other tools can do exactly the same compressions that are done by FSPackageTool (the COMP file is the exception).
And if we read that SDK section carefully, we will read the one thing Asobo adjusts is the occlusion map, which means one layer in the COMP file. This does not mean the other files can be reversed, it just seems to say that the COMP is getting additional treatment that is not in the standard compression methods.

"The single biggest problem in communication is the illusion that it has taken place."
-- George Bernard Shaw
 
Back
Top