UDIM naming convention: tile numbers, file names and Unreal import
Updated · 8 min read
Short answer: a UDIM tile number is 1001 + u + 10 × v, where u and v are the whole-number column and row of the UV tile, both counted from 0. Tile 1001 covers U 0 to 1 and V 0 to 1, 1002 sits to its right, and after ten tiles the next row starts, so 1011 sits directly above 1001.
For Unreal Engine, name every tile BaseName.####.ext with the same base name, for example T_Rock_BaseColor.1001.png, T_Rock_BaseColor.1002.png, and keep them in one folder. Unreal then imports the set as one virtual texture. The rest of this page shows the tile table, the patterns other apps use, and the mistakes that break an import.
Try it on your own model
Upload a GLB, OBJ, FBX, STL or PLY file (or pick a sample), describe the look, and let AI paint it from every side.
Open the AI 3D Texturing StudioHow UDIM tile numbers work
UDIM stands for U DIMension. Instead of fitting the whole UV map into the single 0 to 1 square, you spread UV islands over several squares (tiles), and each tile gets its own image. That lets the parts that matter get a big texture and the rest a smaller one.
The numbering, as the Blender manual puts it: the main tile is 1001, the next tile 1002 goes to its right, the array is ten tiles wide (1001 to 1010 on the first row), and the next row starts above the main tile, so 1011 is directly above 1001.
- From UV to tile: UDIM = 1001 + floor(U) + 10 × floor(V). A UV point at (2.3, 1.6) is in tile 1001 + 2 + 10 = 1013.
- From tile to UV: subtract 1001, then the last digit is the U column and the rest is the V row. Tile 1024: 1024 − 1001 = 23, so U column 3 (U 3 to 4) and V row 2 (V 2 to 3).
- Why ten columns: U only runs from 0 to 10 in the UDIM scheme. RenderMan’s docs state that UDIM is only defined for U values from 0.0 to 10.0 and positive V values, and warn against negative UVs in any tile workflow.
Autodesk Maya writes the same rule as 1000 + (u + 1 + v × 10), which is the same number.
UDIM tile table: 1001 to 1020
The first two rows of tiles, with the matching names in the two u/v styles (explained in the next section). U and V are the UV ranges each tile covers.
| UDIM | U range | V range | Mudbox style (1-based) | ZBrush style (0-based) |
|---|---|---|---|---|
| 1001 | 0 to 1 | 0 to 1 | u1_v1 | u0_v0 |
| 1002 | 1 to 2 | 0 to 1 | u2_v1 | u1_v0 |
| 1003 | 2 to 3 | 0 to 1 | u3_v1 | u2_v0 |
| 1004 | 3 to 4 | 0 to 1 | u4_v1 | u3_v0 |
| 1005 | 4 to 5 | 0 to 1 | u5_v1 | u4_v0 |
| 1006 | 5 to 6 | 0 to 1 | u6_v1 | u5_v0 |
| 1007 | 6 to 7 | 0 to 1 | u7_v1 | u6_v0 |
| 1008 | 7 to 8 | 0 to 1 | u8_v1 | u7_v0 |
| 1009 | 8 to 9 | 0 to 1 | u9_v1 | u8_v0 |
| 1010 | 9 to 10 | 0 to 1 | u10_v1 | u9_v0 |
| 1011 | 0 to 1 | 1 to 2 | u1_v2 | u0_v1 |
| 1012 | 1 to 2 | 1 to 2 | u2_v2 | u1_v1 |
| 1013 | 2 to 3 | 1 to 2 | u3_v2 | u2_v1 |
| 1014 | 3 to 4 | 1 to 2 | u4_v2 | u3_v1 |
| 1015 | 4 to 5 | 1 to 2 | u5_v2 | u4_v1 |
| 1016 | 5 to 6 | 1 to 2 | u6_v2 | u5_v1 |
| 1017 | 6 to 7 | 1 to 2 | u7_v2 | u6_v1 |
| 1018 | 7 to 8 | 1 to 2 | u8_v2 | u7_v1 |
| 1019 | 8 to 9 | 1 to 2 | u9_v2 | u8_v1 |
| 1020 | 9 to 10 | 1 to 2 | u10_v2 | u9_v1 |
Quick check: every tile in the first column (1001, 1011, 1021, …) starts at U = 0, and every tile on the bottom row (1001 to 1010) starts at V = 0.
UDIM file name patterns by app
There are two families of tile names. UDIM numbers (1001, 1002, …), labelled the Mari style in Maya and RenderMan, are what Unreal, Blender, Houdini and USD read. u/v names write the column and row into the file name instead, and they come in a 0-based and a 1-based flavour.
| App or style | Token or pattern | First tile looks like |
|---|---|---|
| Mari (UDIM) | 4-digit UDIM number | Diffuse1001.tex |
| Unreal Engine | BaseName.####.ext | MyTexture.1001.png |
| Blender | <UDIM> in the file name | monster-basecolor.1001.png |
| Blender (u/v) | <UVTILE> = u(u-tile + 1)_v(v-tile + 1) | monster-basecolor.u1_v1.png |
| Houdini / USD | <UDIM> | kaiju1001.exr |
| Substance 3D Painter export | $udim in the output template | …1001 in place of $udim |
| Mudbox (1-based) | u<U>_v<V> | Diffuse_u1_v1.tex |
| ZBrush (0-based) | u<u>_v<v> | Diffuse_u0_v0.tex |
Mudbox vs ZBrush: 0-based or 1-based?
Both write the tile’s column and row into the name, but they count from different numbers. In the Mudbox style the first tile (U 0 to 1, V 0 to 1) is u1_v1; in the ZBrush style the same tile is u0_v0. Maya’s UV Tiling Mode list names them exactly that way: “0-based (Zbrush)” and “1-based (Mudbox)”, and RenderMan’s atlas styles use the same examples. Blender’s <UVTILE> token is the 1-based (Mudbox) form.
To convert: Mudbox u = ZBrush u + 1, and UDIM = 1000 + Mudbox u + 10 × (Mudbox v − 1). So u3_v2 in Mudbox style is UDIM 1013.
A name pattern to copy
A clear, engine-friendly pattern is <prefix>_<asset>_<map>.<UDIM>.<ext>. Epic’s recommended asset naming is [AssetTypePrefix]_[AssetName]_[Descriptor]_[Variant] with T_ as the texture prefix, so a rock’s colour tiles become:
- T_Rock_BaseColor.1001.png
- T_Rock_BaseColor.1002.png
- T_Rock_BaseColor.1011.png
Use a dot before the four digits. Blender’s Detect UDIMs looks for a four-digit number after a dot just before the extension, and Unreal’s documented pattern is BaseName.####.
How to import UDIM textures into Unreal Engine
In Unreal, UDIM tiles are imported as a Streaming Virtual Texture (SVT). Epic lists UDIM support under SVT, not under the other method, Runtime Virtual Texturing.
- Turn on virtual textures for the project: Project Settings > Engine > Rendering > Virtual Textures > Enable virtual texture support. The editor must be restarted after this change.
- Name the tiles BaseName.####.ext with exactly the same BaseName, for example T_Rock_BaseColor.1001.png and T_Rock_BaseColor.1002.png.
- Put all tiles in one folder and import one of them. Unreal scans the source folder for other images with the same BaseName and a different tile number, and imports the whole group as one Virtual Texture asset.
- Sample it with a virtual sampler in the material. Epic’s docs say virtual textures use a Virtual sampler type in the Texture Sample node, such as Virtual Color instead of Color.
Tiles do not have to be the same size. Epic’s example is a 2 × 2 set with two 2048 px and two 128 px tiles, which the engine samples like one large texture; that is how UDIM lets a hero area get more pixels. Epic also notes that UDIM textures are flipped vertically during import.
Converting an ordinary texture by hand (ticking Virtual Texture Streaming in the Texture Editor) breaks the materials that already use it until you switch their samplers to a Virtual type. Right-click > Convert to Virtual Texture updates them for you.
UDIM in Blender, Houdini and RenderMan
Blender
- Load a set: Image > Open, pick any one tile and keep Detect UDIMs on. Blender looks in the same folder for files with a four-digit number before the extension and loads them as one tiled image.
- Make tiles: in the Image or UV Editor, Sidebar > Image > UDIM Tiles, add tiles starting at 1001 and use Fill so each one gets an image. A tile that is not filled is not saved with the image.
- Save: put <UDIM> in the file name (monster-basecolor.<UDIM>.png) and Blender writes one file per tile.
Houdini and USD
Write <UDIM> where the number goes, as in kaiju<UDIM>.exr. SideFX notes that most modern tools, including USD’s path resolver, expand it. Houdini’s file dialog can mistake a UDIM set for a frame sequence; choose <UDIM> rather than $F from its menu.
RenderMan
PxrTexture reads Mari UDIM, Mudbox and ZBrush tile sets. With an Atlas Style set, the file name carries a placeholder (_MAPID_ in RenderMan 25) that is replaced by the tile number or u/v name.
Why a UDIM import fails, and the fix
| What you see | Likely cause | Fix |
|---|---|---|
| Unreal imports one plain texture, not a set | Often: virtual texture support is off, or the name is not BaseName.#### | Enable virtual texture support (restart), rename to Name.1001.png |
| Some tiles are missing after import | Base names differ (BaseColor vs Basecolor) or tiles are in other folders | Same base name, one folder |
| Material errors after the import | Texture Sample still uses a non-virtual sampler type | Switch it to Virtual Color (or the matching virtual type) |
| Tiles land in the wrong place | Mudbox or ZBrush u/v names fed to a UDIM reader, or 0- and 1-based mixed up | Rename to UDIM numbers with the table above |
| Tile set starts at the wrong spot | The set does not start at 1001 | UDIM sets start at 1001 |
| Black or missing area on the model | UV islands with negative U/V or beyond U = 10 | Move islands into U 0 to 10, V 0 and up |
| A Blender tile never shows up on disk | The tile was added but not filled | Fill Tile, then save |
UDIM and the AI 3D Texturing Studio
Our AI 3D Texturing Studio paints one texture in the 0 to 1 UV square; it does not write UDIM tile sets. If a model’s UVs are spread over several tiles (more than 2% of the UV points outside 0 to 1), the studio treats them as not usable for painting and makes a fresh single-tile UV atlas, then exports one texture inside the GLB.
That suits quick props, prints and previews. For a hero asset you plan to finish in Unreal with UDIMs, keep the UDIM layout in your DCC app and use the studio for look development on a 0 to 1 copy.
Texture a model with AI
Upload a GLB, OBJ, FBX, STL or PLY, describe the look, and download a textured GLB plus the texture PNG.
Open the studioQuestions
What is the UDIM formula?
UDIM = 1001 + u + 10 × v, where u is the whole-number U column (0 to 9) and v is the whole-number V row, both counted from 0. Tile 1001 covers U 0 to 1 and V 0 to 1.
How should UDIM textures be named for Unreal Engine?
BaseName.####.ext with the same base name on every tile and all tiles in one folder, for example T_Rock_BaseColor.1001.png and T_Rock_BaseColor.1002.png. Import one tile with virtual texture support enabled and Unreal brings in the whole set as one virtual texture.
What tile is above 1001?
1011. Each row has ten tiles (1001 to 1010), and the next row starts directly above the first tile.
Is Mudbox UV tile naming 0-based or 1-based?
Mudbox style is 1-based: the first tile is u1_v1. ZBrush style is 0-based: the same tile is u0_v0. Maya and RenderMan both label them this way.
Do all UDIM tiles need the same resolution?
No. Unreal’s documentation says each UDIM image can have a different resolution, and Blender’s manual suggests mixing 4K, 2K and 1K tiles by importance.
Does Unreal need virtual texturing for UDIM?
Yes. Unreal reads UDIM sets through Streaming Virtual Texturing, so turn on Enable virtual texture support in Project Settings > Engine > Rendering and restart the editor first.
What does the <UDIM> token do?
It is a placeholder in a file path that the app replaces with each tile’s four-digit number when loading or saving. Blender, Houdini and USD use <UDIM>; Blender also has <UVTILE> for u1_v1-style names.
Ready to texture something?
Upload a GLB, OBJ, FBX, STL or PLY file (or pick a sample), describe the look, and let AI paint it from every side.
Start texturingStep-by-step tutorials
Keep reading
UV unwrapping explained (and why it matters for AI texturing)
UV unwrapping explained simply: what UVs are, why seams and islands exist, what texel density means, and what UV problems do to AI texturing, with fixes.
What is a texture atlas? One image, many pieces
What a texture atlas is, why games and 3D models pack textures into one image, how a UV atlas for a 3D model works, what a texture atlas generator does, and how to avoid bleeding at the edges.
PBR maps explained: albedo, normal, roughness, metallic and AO
PBR maps explained for beginners: what albedo, normal, roughness, metallic and ambient occlusion maps do, how a GLB stores them, and how AI textures fit in.
Which 3D model format keeps textures? GLB, OBJ, FBX, STL and 3MF compared
Which 3D model format keeps textures? How GLB, GLTF, OBJ + MTL, FBX, STL, PLY and 3MF store colour and texture maps, GLB vs OBJ, GLB vs FBX, and which to pick.
Sources
Checked 2026-10-18. Other tools change their features and prices often, so check their own pages too.
- Blender Manual: UDIMs
- Blender Manual: Image Editor editing (Detect UDIMs)
- Unreal Engine: Streaming Virtual Texturing (UDIM support)
- Unreal Engine: Virtual Texturing
- Unreal Engine: Virtual Texturing settings and properties
- Unreal Engine: Recommended asset naming conventions
- Autodesk Maya: Loading multi-tiled UV textures (UV Tiling Mode)
- RenderMan 25: PxrLayeredTexture (atlas styles)
- RenderMan 25: PxrBakeTexture (UDIM range note)
- SideFX Houdini: UDIM textures
- Adobe Substance 3D Painter: Output templates ($udim)