Documentation Index
Fetch the complete documentation index at: https://mintlify.com/armory3d/armorpaint/llms.txt
Use this file to discover all available pages before exploring further.
When you are ready to use your painted textures in a game engine or renderer, press Ctrl+E to open the Export dialog. ArmorPaint flattens your paint layers according to the selected mode, packs channels using the active export preset, and writes the resulting image files to disk. Use Ctrl+Shift+E to export to a different location without changing the project’s default export path.
Export Dialog
The Export dialog is organised into three tabs: Export Textures, Presets, and Atlases. The most commonly used settings are on the Export Textures tab.
Resolution and Bit Depth
| Setting | Options | Notes |
|---|
| Resolution | 2048, 4096, 8192, 16384, Custom | Applies to all exported texture maps |
| Color (bit depth) | 8-bit, 16-bit, 32-bit | Drives the output format; 16-bit and 32-bit always write EXR |
The bit-depth constants used internally are defined in enums.h:
| Constant | Value | Description |
|---|
TEXTURE_BITS_BITS8 | 0 | 8-bit per channel (PNG or JPG) |
TEXTURE_BITS_BITS16 | 1 | 16-bit per channel (EXR) |
TEXTURE_BITS_BITS32 | 2 | 32-bit float per channel (EXR) |
Texture Format
When 8-bit is selected, you can choose between PNG and JPG:
| Constant | Value | Format |
|---|
TEXTURE_LDR_FORMAT_PNG | 0 | PNG — lossless |
TEXTURE_LDR_FORMAT_JPG | 1 | JPG — lossy; the Quality slider (0–100) controls compression |
When 16-bit or 32-bit is selected, the format is fixed to EXR and the Quality slider is disabled.
Export Mode
The Layers dropdown controls which layers are included in the flattened export:
| Constant | Value | Behaviour |
|---|
EXPORT_MODE_VISIBLE | 0 | Merge all visible layers (default) |
EXPORT_MODE_SELECTED | 1 | Export only the currently selected layer or group |
EXPORT_MODE_PER_OBJECT | 2 | Generate a separate set of texture files for each paint object |
EXPORT_MODE_PER_UDIM_TILE | 3 | Generate a separate set of texture files for each UDIM tile |
Per-UDIM Tile mode scans the active layers for object masks whose names end with a UDIM tile suffix (e.g. .1001, .1002). A separate texture set is written for each discovered tile, making it straightforward to integrate with UDIM workflows in Houdini, Maya, or Blender.
Export Destination
The Destination dropdown controls where the exported files are written:
| Constant | Value | Behaviour |
|---|
EXPORT_DESTINATION_DISK | 0 | Writes files to a folder you choose with the file browser |
EXPORT_DESTINATION_PACK_INTO_PROJECT | 1 | Encodes the textures as assets embedded directly inside the .arm project file |
When Pack into Project is selected, no file browser is shown; the textures are added to the project’s internal asset list and stored inside the .arm file on the next save.
Padding
Enable the Padding checkbox to dilate the texture paint by up to 256 pixels beyond UV island boundaries before exporting. This prevents seams caused by bilinear filtering at UV edges in the target engine.
Layer Merging on Export
Before writing any pixel data, ArmorPaint composites all qualifying layers into three internal render targets:
- expa — Base color + opacity channel
- expb — Normal map + emission/subsurface flags
- expc — Occlusion / Roughness / Metallic / Height (packed)
Layers are blended in stack order using each layer’s opacity value and blend mode. Invisible layers are skipped in EXPORT_MODE_VISIBLE; only the selected layer is used in EXPORT_MODE_SELECTED. Mask layers are resolved before compositing.
Bake Material on Export
ArmorPaint can evaluate a procedural node-based material and bake the result to textures using export_texture_run() with bake_material = true. This renders the material onto a temporary fill layer using the Fill tool on an internal plane geometry, then exports that layer through the normal pipeline.
Access this from Material → Bake to Textures in the export dialog.
Exporting Meshes
In addition to texture maps, ArmorPaint can export the underlying mesh geometry. Open the Export Mesh tab (or use the Mesh export action from the header menu) to choose the output format and object scope.
Mesh Export Formats
| Constant | Value | Format | Notes |
|---|
MESH_FORMAT_OBJ | 0 | Wavefront OBJ | Always available; supports Merge Shared Vertices option |
MESH_FORMAT_ARM | 1 | ArmorPaint native | Binary format; fastest to reload |
MESH_FORMAT_GLB | 2 | Binary glTF 2.0 | Requires the io_gltf plugin |
The Meshes dropdown lets you export All objects at once or a single named paint object.
Enable Merge Shared Vertices to weld coincident vertices in the OBJ output — useful for downstream tools that expect a clean watertight mesh.
Pack Assets on Export
When exporting a Material (.arm) or Brush (.arm), the Pack Assets checkbox (pack_assets_on_export) embeds all referenced texture files into the exported .arm bundle. This produces a self-contained file that can be shared without separate texture files.
Similarly, pack_assets_on_save embeds assets when saving the project file itself.
Viewport Screenshot
You can capture the current viewport render to a texture from within scripts or the node canvas using viewport_capture_screenshot_to(). This writes the visible rendered viewport (including lighting, environment, and any post-processing) rather than the raw paint layers.
Use Ctrl+Shift+E (Export As) to write textures to a new folder without changing the project’s stored export path. This is useful for exporting multiple engine-specific versions of the same project.