0
$\begingroup$

I am pretty new to 3D modelling and the question might be stupid to some of you.

I was wondering, for example I have three different objects with three different UVs.

Let's say the texture of an object is 2048 x 2048. The texture atlas should have 6144 x 6144? I mean it makes sense, I think.

Thank you guys.

$\endgroup$
4
$\begingroup$

You could, but I would not recommend it, for these reasons:

  1. Keep in mind that some GPUs out there do not support high resolution textures. For instance some older iDevices (and more, but that's off the top of my head). Blender is very flexible, but some other programs are not.

  2. That is not a power of 2 (the primary reason that we use 1024, 2048, 4096, 8192, etc.), and may not work on some GPUs. Very bad memory usage.

  3. Texture management becomes really hard. Versions, overflow from one to another, using layers to keep track of everything, etc.

So my recommendation is to have the textures separated out, still at the 2048x2048. This allows you to use the GPU efficiently, have good support for GPU RAM, and for instance if you were using GIMP, easily apply filters without having to worry about messing up other parts of the texture.

$\endgroup$
1
$\begingroup$

As always, it's the purpose of a model that makes the difference.

3d Modeling can be done for static images, movies, games. Games can be played on Multi-GPU over-the-edge fast PCs, current gen consoles, last gen consoles, mobile devices...

Even rendering static images of scenes where you have many models with huge (> 4096x4096 pixels) textures might result into crashes. The same goes for movies.

Regarding games it depends on how well the render engine is optimized. There sure are recommendations for each of them.

You might have heard of the terms "virtual texturing" or "MegaTexture" (used by id tech 5 in Rage.. well, more or less successfully. That one was 32,768×32,768 pixels).

There are two things you might want to take into account.

  1. Downscaling is always possible. UVs are not tied to the texture, so there is absolutely no problem in creating a 8192x8192 texture in Blender as long as your Computer can handle it and scale it down with PS/gimp whatever. Upscaling on the other side... not so much of a recommendation.
  2. Always square, always power of 2. It's just how GPUs and APIs are designed to work. Everything that differs from that takes more time to load, render and process. Even worse, some engines will process them like uncompressed 32bit RGBA textures.
$\endgroup$
0
$\begingroup$

Speaking for the UV layout itself, the UV coordinates are store in the 0~1range, so it's actually a percentage of the image, I think.

That means they should stretch seamlessly to adapt to any image size, even if the proportions are not the same and the image with to height ration is different.

Bottom line is, for a certain UV layout the actual size of the texture in pixels should not matter much.

As for the size of the texture itself, if you want to maintain the same relative quality level for each object, then yes, you should scale it proportionally. However your math is slightly off there, you have to account for image area, not image size alone.

3 x 2048 x 2048 will give you a 6144 x 2048 texture, not a 6144 x 6144.

Now have in mind that that is a really large texture, you may find yourself hitting the memory and performance constraints of your computer.

This should be fine for 'offline' rendering, but for real time rendering, like Blender Viewport, Game Engines, OpenGL or DirectX mobile games, etc. , that could be more of a problem, especially having in mind older hardware.

Also as Gliderman mentioned, computer hardware generally likes exact powers of two sized textures, so it would probably be wise to use a 4096 x 4096texture instead, and use the left-over square area as a tile for an additional object you would add to your existing texture atlas.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.