Skip to main content

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

SettingOptionsNotes
Resolution2048, 4096, 8192, 16384, CustomApplies to all exported texture maps
Color (bit depth)8-bit, 16-bit, 32-bitDrives the output format; 16-bit and 32-bit always write EXR
The bit-depth constants used internally are defined in enums.h:
ConstantValueDescription
TEXTURE_BITS_BITS808-bit per channel (PNG or JPG)
TEXTURE_BITS_BITS16116-bit per channel (EXR)
TEXTURE_BITS_BITS32232-bit float per channel (EXR)

Texture Format

When 8-bit is selected, you can choose between PNG and JPG:
ConstantValueFormat
TEXTURE_LDR_FORMAT_PNG0PNG — lossless
TEXTURE_LDR_FORMAT_JPG1JPG — 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:
ConstantValueBehaviour
EXPORT_MODE_VISIBLE0Merge all visible layers (default)
EXPORT_MODE_SELECTED1Export only the currently selected layer or group
EXPORT_MODE_PER_OBJECT2Generate a separate set of texture files for each paint object
EXPORT_MODE_PER_UDIM_TILE3Generate 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:
ConstantValueBehaviour
EXPORT_DESTINATION_DISK0Writes files to a folder you choose with the file browser
EXPORT_DESTINATION_PACK_INTO_PROJECT1Encodes 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

ConstantValueFormatNotes
MESH_FORMAT_OBJ0Wavefront OBJAlways available; supports Merge Shared Vertices option
MESH_FORMAT_ARM1ArmorPaint nativeBinary format; fastest to reload
MESH_FORMAT_GLB2Binary glTF 2.0Requires 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.

Build docs developers (and LLMs) love