What are UDIMs ?
UDIM was invented by Richard Addison-Wood and came from Weta Digital (circa 2002). The term UDIM comes from U-Dimension and design UV ranges. The UV range 0-1 being 1001, the range 1-2 being 1002, and so on. We designate by UDIM Tile a specific range, the tile 1001 being the range 0-1 of a given mesh. The goal of having multiple UV ranges it to increase the texture resolution of a given mesh. Instead or working with very big textures (16K, or even 32K) which are hard to optimize it is instead better to split a mesh into sub-parts. Because of the UDIM naming convention, parsing files is easy as the ID of a tile is embedded into the filename, which make them convenient to use in external rendering software such as Vray or Arnold.
For further information we recommend reading the UDIM article made by FX-Guide.
How do UDIMs work ?
To make this feature work any mesh need to :
- be unwrapped (need of UV coordinates)
- have any UV islands inside a tile (UVs can't cross over multiple tiles)
- have UVs that don't go over 10 on the U axis (no limit on the V axis however, unless you reach the limit of the naming convention)
- have UVs that don't go below 0 (negative range are not supported)
Computing the UDIM ID of an uv island is quite easy with this formula : UDIM = 1000 + (U coordinate + 1) + (V coordinate) * 10
Example : U=0, Y=0 which is the range (0,1) = 1000 + (0+1) + (0*10) = 1001
Creating UDIMs is no more complicated than creating a regular mesh. When unwrapping a mesh, instead of being limited to the UV 0 - 1 range it is now possible to shift them away to an other range (as the example below).
How do UDIMs work in Substance Painter ?
When importing a mesh, it is possible to enable a specific setting named "Create a texture set per UDIM tile". If enabled, the materials defined on a mesh will be ignored and instead Substance Painter will create a texture set per UDIM tile found. If there is an error (like an UV island crossing multiple tiles), the import will be cancelled and an error with details will be printed in the log. Since Materials names are discarded, the texture set will be renamed according to they UDIM tile to be exported properly after.
At the moment Substance Painter has a limited support for UDIMs tile. A full support that will allow to paint across multiple UDIMs is currently in development.
Are UDIM compatible with game engines ?
Yes and No. They are not usable directly, but by tweaking some shaders inside an engine it should be possible to load multiple UDIM textures over one object. This is however expensive and game engine require more optimizations to be able to run many textures in real-time. Therefore using UDIMs for real-time rendering is not recommended for the moment.
How to import UDIM in an offline renderer ?
We have a few tutorials accessible that cover specific renderers :