ArmorPaint accepts a wide variety of asset types — 3D meshes, texture images, fonts, environment maps, color lookup tables, and plugin scripts — through a unified import system. Press Ctrl+I to open the file browser and pick any supported asset; ArmorPaint automatically detects the file type and routes it to the correct importer. You can also drag and drop files directly onto the viewport or the nodes editor.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.
Importing Meshes
A mesh defines the 3D surface you paint on. When you import a mesh, ArmorPaint replaces the active scene geometry and resets the paint layers by default.Supported Formats
OBJ (.obj)
Wavefront OBJ — built-in importer. The most universally compatible option. Supports multi-object files split by object, material group, or UDIM tile.
glTF / GLB (.glb)
Binary glTF 2.0 — provided by the io_gltf plugin (cgltf 1.4). Supports skinning and multi-mesh scenes.
ARM (.arm)
ArmorPaint native binary format. Fastest load time; used for round-tripping meshes between ArmorPaint projects.
FBX (.fbx)
Autodesk FBX — provided by the io_fbx plugin (ufbx). Supports skinning with optional per-frame evaluation.
Blender (.blend)
Blender project files — imported via the import_blend_mesh bridge, which calls Blender’s Python API (
bpy.ops.wm.obj_export) to convert the mesh to OBJ and load it automatically.enums.h:
| Constant | Value | Format |
|---|---|---|
MESH_FORMAT_OBJ | 0 | Wavefront OBJ |
MESH_FORMAT_ARM | 1 | ArmorPaint native |
MESH_FORMAT_GLB | 2 | Binary glTF 2.0 |
Import Options
When importing an OBJ or FBX file, ArmorPaint shows an Import Mesh dialog with the following options:Split By
Split By
Controls how multi-object files are divided into separate paint objects:
- Object — split on object boundaries (default)
- Material — split on material group boundaries
- UDIM Tile — split into one object per UDIM tile
Apply Skinning (FBX / glTF)
Apply Skinning (FBX / glTF)
Evaluates the mesh skeleton at a specific animation frame before importing. Enable the checkbox and set the Frame slider (1–99) to bake a pose into the mesh geometry at import time.
Blender Executable (Blender .blend)
Blender Executable (Blender .blend)
Set the path to your Blender executable so ArmorPaint can call it to export the .blend mesh. This path is stored in your ArmorPaint configuration and persists across sessions.
Reimporting a Mesh
To reload the source mesh from disk (for example, after editing it in a modelling application) without losing your painted layers:- Ctrl+R — reimport the mesh from the last-used path, preserving existing paint layers
- Ctrl+Shift+R — reimport all project textures from disk
Importing Textures
Textures are imported into the project’s texture browser and can be applied to materials or used as stencils, brushes, and image nodes.Supported Formats
The built-in texture formats (registered inpath_texture_formats()) are:
| Format | Extension(s) |
|---|---|
| JPEG | .jpg, .jpeg |
| PNG | .png |
| TGA | .tga |
| BMP | .bmp |
| HDR (Radiance) | .hdr |
| PSD (via plugin) | .psd — requires io_psd plugin |
| TIFF (via plugin) | .tiff — requires io_tiff plugin |
| EXR (via plugin) | .exr — requires io_exr plugin |
| SVG (via plugin) | .svg — requires io_svg plugin (NanoSVG) |
Bit Depth
Texture bit depth is controlled by thetexture_bits_t enum in enums.h:
| Constant | Value | Description |
|---|---|---|
TEXTURE_BITS_BITS8 | 0 | 8-bit per channel (standard LDR) |
TEXTURE_BITS_BITS16 | 1 | 16-bit per channel (half-float precision) |
TEXTURE_BITS_BITS32 | 2 | 32-bit per channel (full float, EXR output) |
How Textures Are Added
When a texture file is imported, ArmorPaint:- Decodes the image and uploads it to GPU memory.
- Registers it as an
asset_tin the project’s asset list. - Makes it available throughout the texture browser, node editor, and brush stencil selector.
Importing Environment Maps
Environment maps set the scene lighting and background visible in the 3D viewport.Select an HDR or EXR file
ArmorPaint detects
.hdr files and automatically routes them through import_envmap_run(), which down-scales the image to 1024×512, pre-filters radiance mip levels, and computes spherical harmonics coefficients for irradiance.Importing Fonts
Fonts are used with the Text tool (TOOL_TYPE_TEXT) to paint text directly onto the mesh surface.
Import a font file
Press Ctrl+I and select a
.ttf, .ttc, or .otf font file. ArmorPaint calls import_font_run(), which reads all font faces from the file and registers each as a slot_font_t in the project’s font list.Importing LUTs
Color Lookup Tables (LUTs) apply color-grading transforms to the viewport display. ArmorPaint uses the standard.cube 3D LUT format.
Import a .cube file
Press Ctrl+I and select a
.cube file. ArmorPaint calls import_lut_run(), which parses the LUT_3D_SIZE header and RGB triplets, then packs the 3D data into a 2D GPU texture strip (width = N×N, height = N).Blender Integration
ArmorPaint includes two dedicated Blender import bridges that both require a valid Blender executable path set in Preferences → Plugins.Import Blend Mesh
Imports the mesh from a
.blend file. Internally calls Blender with bpy.ops.wm.obj_export to export a triangulated OBJ, then loads that OBJ into the current ArmorPaint project. The Blender executable path is configured in the Import Mesh dialog when a .blend file is selected.Import Blend Material
Bakes Cycles materials from a
.blend file into texture maps (base color, roughness, normal) using Blender’s bake system, then imports the resulting JPG textures into the ArmorPaint texture browser.Plugin-Based Importers
Several formats are handled by the plugin system rather than built-in code. These plugins register custom importer functions intoimport_mesh_importers or import_texture_importers at startup.
| Plugin | Format | Type |
|---|---|---|
io_gltf | .glb / .gltf | Mesh |
io_fbx | .fbx | Mesh |
io_exr | .exr | Texture |
io_tiff | .tiff | Texture |
io_psd | .psd | Texture |
io_svg | .svg | Texture |
context_enable_import_plugin(). Plugin source files (.c) can be installed by dragging them onto the viewport or through Preferences → Plugins.
Plugin importers ship as
.c source files and are compiled at runtime. If a required plugin is missing, ArmorPaint logs “Unknown asset format” to the console. See the Plugin API documentation for details on writing custom importers.