Debunking the "This Add-on uses 4K textures" statement

I am sitting in seat 24F. The pilot is taxiing to the runway and the cabin crew is busy getting ready for take-off. Everything seems completely ordinary, except for the lady sitting in 24D, who is staring at me and wondering why the hell am I taking pictures of the seatbelt buckle and observing it with the utmost interest. Suddenly, she shifts her gaze to follow me leaning down and taking pictures of the locking mechanism holding the seat in front of me down to the floor. She is confused. I assume that she thinks this is my first time flying, but she could not be further away from the truth.

It is the 20th of December, and I am flying back home for Christmas. Unfortunately, it's not an Embraer, but it always feels special regardless of the type of plane! I have spent the past three months finishing the cabins of the upcoming E-Jets, so it is really funny to now sit on a real plane and see with my own eyes all the things I was still working on the previous evening. 

Sitting in the real version of what you build digitally for a living is a feeling that very few people will ever experience. Studying something from reference pictures down to the smallest details, knowing it inside out, and then actually seeing it feels like a very strange kind of a déjà vu. I don’t blame the lady in 24D for feeling confused!

Making the cabin is by far my least favorite part of the whole modeling process. The cabin is just not very exciting, but it is an essential part of the products and I feel that many developers often focus a lot less on this part of the plane, compared to other parts.

Sure, users spend 90% or more of the time in the cockpit but having a cockpit and exteriors that are top-notch, and a cabin that sucks, or even worse, is non-existent, results in a product that misses the point of what airliners are made for. 

To be honest, the first time I made the E-Jets, many parts of the cabins were simplified or just skipped altogether. There are hundreds of objects in the cabin, and it was really challenging modeling everything in the cabin to fit the fuselage, the windows, and door openings perfectly. I simply didn’t yet have the skills to model all those objects. Additionally, it is very hard to get references for all parts of the cabin, especially for the galleys.

Well, this time I wanted to give you the real deal, so I tried to recreate the cabin as close as possible to the real airplane. As with the cockpit and exterior, I have created an interactive page on our website where you can examine the differences between the old and new cabin models by dragging a slider over the pictures. To see it just click on the picture below and let me know what you think!

Note: If the sliders on the website don't load properly, just reload the page.

Another reason why many developers might opt-out from a highly detailed cabin is that complex models like these can cause poor add-on performance. In other words, very complicated models can often result in very low frame rates (frames per second, FPS), preventing the computer to run the add-on smoothly. Therefore, we have to try to cut down the number of objects as much as possible, so it is natural that some developers would try and keep the cabin simple.

This is where I would like to talk about what I’ve been doing to improve this. More specifically, I’d like to talk about textures and hopefully give you a better understanding of how they work, and why the statement that you often see in product descriptions: “This add-on uses 4K textures” doesn’t mean anything relevant to the final look of the product.

A texture = A square image that is used to literally “wrap” around the 3D objects to give them colour.

A 4K texture = An image that has a resolution of 4096x4096 pixels.

Since a picture is worth a thousand words, I decided to create a season themed example that will hopefully explain this better:

If however you use one texture for let’s say three different 3D objects, each one of them will now have a much smaller pixel density (resolution), since you need to fit all of them into that one texture:

As the result, the Santa now has four times smaller pixel density:

For demonstrative purposes, I overdid the low-resolution effect on the right here, but that is basically how it would work.

You might think that I could just use three textures for three 3D objects to retain the high resolution overall, but here’s why that is not possible.

Each texture that X-Plane has to load, makes it harder for your computer to calculate (render) the resulting image on your screen. So you cannot have an unlimited number of textures, because you would use all of your available memory and your FPS would just plummet.

Therefore we developers have to find a fine balance between the number of textures and the number of objects we have. In reality, we don’t use one or two objects per texture, but hundreds. For example, I am using two 4K textures for the cabin. Here’s what one of the cabin textures looks like:

Sizes of the 3D objects relative to each other also affect how much texture space they use. A really big object, for example, the cabin wall would take up a lot more of the texture space, than something small, let’s say a sticker on the wall.

However, large objects that are barely visible, or largely consist of just one color don't really need a high density of pixels, and on the other hand, the smaller objects that are always visible or need to show a lot of details, need their pixel density to be higher despite being small.


And here’s where I believe I’ve made the biggest breakthrough over the years in order to optimize the performance of my models. I have developed a procedural way of creating adaptive resolutions for all the objects in the airplane depending on their importance and size.


The resolution of not often visible and large bits is decreased in favor of the smaller, but more important bits, that now have more space to take up on the texture, and therefore have a larger resolution without adding a new texture and more strain on your computer. Here’s an example from the cockpit:

Purple : 300% resolution | Green : 200% resolution | Blue : 100% resolution | Yellow : 50% resolution | Red : 25% resolution

So even though the new E-Jets will have thousands of more objects all around the airplane, this process has allowed me to significantly improve the overall look and resolution of the model, and still retain similar or the same performance of the add-ons, compared to the older E-Jets.

To conclude, as I have demonstrated, it doesn’t matter if an add-on uses 4K textures or not, they all do. What matters is how many objects a developer uses per texture, and what the final pixel density for each object is.

This is something that products don’t usually mention in their store descriptions, however, you can rest assured, that when you buy any new X-Crafts product, maximum effort has been made to make the models look just great and that they have been optimized for best potential performance.

Marko MamulaComment