Manual

Text-based guide to ArmorPaint.

Welcome

Version 1.0

Image

ArmorPaint is a stand-alone software designed for physically-based texture painting. Drag & drop your 3D models and start painting. Receive instant visual feedback in the viewport as you paint.


Download

Windows (10 or newer), Linux or macOS (apple silicion) is recommended. Experimental iOS and Android builds are also provided. On desktop, ArmorPaint is a portable application with no installation - just unpack and run.

Get ArmorPaint

Requirements

Painting process in ArmorPaint runs on the GPU and the performance mainly depends on a graphics card. Minimum for 4K painting is an Intel HD4000 graphics card. For 16K painting, Nvidia RTX 2080/8GB or better is recommended.

See Preferences to tune performance.

Updating

Latest builds can be downloaded through your Itch Library. Learn more here.

In ArmorPaint, press Help - Check for Updates... to check if newer build is available.






Get Started

Windows

Unpack downloaded archive and run ArmorPaint.exe. In some cases, Windows may prompt you with the unrecognized app dialog - press More Info - Run Anyway.

Linux

Unpack downloaded archive and run ArmorPaint. In some cases, you may need to open terminal in the extracted folder and run ./ArmorPaint.

macOS

Unpack downloaded archive and run ArmorPaint.app.

iOS

Experimental: Available on the AppStore.

Android

Experimental: Available on Google Play.

Controls






Basics

Image

Import Meshes

Drag and drop unwrapped .obj file into the viewport. This will replace the currently painted mesh. Up to ~4GB .obj files are supported. .fbx, .blend, .stl, .gltf and .glb files are also supported.

In the Import Mesh dialog:

Modifying imported mesh data:

You can get sample assets for testing in the ArmorPaint cloud.

See Menu bar - Preferences... - Plugins to enable support for additional mesh formats.

Import Materials

Drag and drop a folder with PBR texture set onto the viewport. ArmorPaint will recognize the file extensions and create a new material from imported textures. Multiple folders can be dropped at once.

Click on the Materials tab - Import button to import materials from ArmorPaint .arm files.

You can get starter content in the ArmorPaint Cloud.

Import Textures

Drag and drop .jpg, .png, .tga, .bmp, .gif, .psd, .hdr, .svg, .exr (uncompressed only) or .tif images into the node editor. This will import the image and place a new Image node onto the canvas.

See Menu bar - Preferences... - Plugins to enable support for additional image formats.

Export Textures

Click on the Menu bar - File - Export - Textures... button.

Configure custom channel swizzling for exported textures in Presets tab:


Image

Create object groups in Atlases tab:

Export Mesh

Click on the Menu bar - File - Export - Mesh... button to save the currently loaded mesh into .obj or .glb file. This is handy when you want to export the sculpted mesh or the mesh has been unwrapped / modified in ArmorPaint.

Save / Load Project

Click on the Menu bar - File - Save button (Ctrl + S) to save the currently opened project. Mesh, layers, materials and brushes will be saved into .arm project file.

Enable Menu bar - File - Pack Assets option to pack all external assets like textures into the .arm file during project save.

To open the project file, drag and drop .arm file onto the viewport. .arm files can also be set to open directly with ArmorPaint executable from the OS file explorer.

.obj and other asset types can also be associated if you wish to use ArmorPaint as a model / texture viewer.

If the mesh file was modified after it was already imported in ArmorPaint, you can use Menu bar - File - Reimport Mesh / Reimport Textures buttons to reload assets.

Browser

Click on the Status bar - Browser tab to activate the built-in asset browser.






Tools

Image

Brush

Image

Select Brush(B) tool from toolbar. Configure brush parameters in the header. Use left mouse button / pen to paint strokes using the selected material.

Hold brush ruler key (SHIFT) when painting to restrict strokes horizontally or vertically. Hold brush ruler key (SHIFT) and click onto the surface to paint lines. Hold x key to snap brush strokes to a grid.

Eraser

Image

Select Eraser(E) tool from toolbar. Use left mouse button / pen to erase strokes on the currently selected layer.

Fill

Image

Select Fill(G) tool from toolbar. Press left mouse button / pen to fill active layer with selected material. Fill tool respects active object mask, material mask and color id mask.

Decal

Image

Select Decal(D) tool from toolbar. Press left mouse button / pen to apply active material as a decal onto the surface.

Hold z key to align decal to the camera view, instead of snapping it alongside the mesh normal. Hold ctrl key to use decal as a stencil mask.

Text

Image

Select Text(T) tool from toolbar. Press left mouse button / pen to apply active material as a text onto the surface. Drag and drop a .ttf file into the viewport to change the font.

See Fonts tab to manage imported fonts. Click 2D View to preview the font.

Clone

Image

Select Clone(L) tool from toolbar. Hold ALT to set clone source location. Use left mouse button / pen to clone the material from source location to active location.

Blur

Image

Select Blur(U) tool from toolbar. Use left mouse button / pen to blur the material applied to the surface.

Particle

Image

Select Particle(P) tool from toolbar. Use left mouse button / pen to apply particles onto the surface.

Color ID

Image

Select Color ID(C) tool from toolbar. Drag and drop color-id texture onto the viewport and assign it into the Color ID Map field. Afterwards, click on a model to pick a specific color. All drawing operations will now be restricted to this color. Picked color can be removed with a Clear button.

Picker

Image

Select Picker(V) tool from toolbar. Press left mouse button / pen in viewport to read material values from the surface. Base color, normal, occlusion, roughness and metallic values will be displayed in the header.

Material

Image

Select Material tool from toolbar. A live material preview will be displayed in the viewport, allowing for easier material creation.

Cursor

Image

Select Cursor(r) tool from toolbar. A gizmo will appear in the viewport allowing you to adjust the transform of objects in the scene. Location, rotation and scale will be displayed in the header.

Select

Image

Select Select(m) tool from toolbar. Press left mouse button / pen to draw a rectangular mask in the viewport. The painting operations will now be restricted to this area. Press Clear button to discard the mask.






Materials

Image

Materials in ArmorPaint are composed with nodes. When painting, brush applies a material onto the surface. To compose a material, open node editor by clicking Materials tab - Nodes (TAB).

Material preview is displayed instantly in the Materials tab as the nodes are assembled.

Right-click onto material preview to expose material operations:


Image
translucent opacity mode

Drag and drop material into viewport or Layers tab to create a fill layer.

ArmorPaint material nodes mimick the Cycles nodes. See Cycles nodes documentation.

See list of implemented nodes.

See Import Materials.

Use Swatches tab to save and load color sets.






Neural Nodes

All neural node processing in ArmorPaint is done locally on user device. Once AI models are downloaded, internet connection is not required. A minimum of 6GB of video memory is recommended. ArmorPaint uses models published under open source licenses.

Neural nodes are available on Windows (Vulkan), Linux (Vulkan) and macOS (Metal).

Currently supported models:

Neural node processing is based on the open-source iris.c library.

Setup

Image

Navigate to the Menu bar - Edit - Preferences... - Neural tab. Pick desired model and click the Download button. Once the download is completed, neural node in the material editor is ready to be used.

Press Run on the neural node to process it. Once finished, double click on node header or click the eye icon to preview the node output.

Right-click onto the node and press Capture Output to save the node output into the Textures tab.

Edit Image Node

Image

Edit image connected to the color input by describing the changes via text prompt or raising the Variance slider. Make the image seamless by enabling the Tile option.

Paint a mask in the viewport and connect it to the mask input. If mask is connected the node outputs a texture where mask area is filled with new content.

Image to PBR Node

Image

Extract base color, occlusion, roughness, normal map and height from color input. A photo image is expected as a color input.

Text to Image Node

Image

Generate an image described via text prompt. Make the image seamless by enabling the Tile option.

Upscale Image Node

Image

Upscales color input by a factor of 4.

Photo to Material

Utilize a combination of neural nodes to create a new 4K PBR material.

Image

To preview the material, create a new project and select the highly tessellated plane_2048 or sphere_2048 template. Fill the material onto the layer and press Meshes tab - Edit - Apply Displacement to apply height channel onto the mesh.

Image

Console Model

Navigate to the Menu bar - Edit - Preferences... - Neural tab and pick the desired console model. By default, Qwen model will be selected which needs to be downloaded via Models - Qwen section. In this case the console prompt will be processed locally. If your machine does not have enough memory, you can change the console model to claude, grok or codex. Note that in this case processing will be done in the cloud and you need to have access to these models set up on your computer.

See Console Prompt.






Brushes

Image

Brushes in ArmorPaint are composed with nodes. When painting, brush nodes are evaluated for each painted stroke. To compose a brush, open node editor by clicking Brushes tab - Nodes (TAB).

Brush preview is displayed instantly in the Brushes tab as the nodes are assembled.

Right-click onto brush preview to expose brush operations:

Brushes can be imported from .arm files by clicking Brushes tab - Import.

Brush Mask

To use image as a brush mask:

Brush Jitter

Lazy Mouse

Directional Brush

Brush Stencil

To use image as a brush stencil:

See list of implemented nodes.






Layers

Image

To create a new layer, press Layers tab - New and select a layer type:

Brush will paint onto the currently selected layer.

Right-click on the layer to expose layer operations:

Right-click on the mask to expose mask operations:

For path layers:

Drag textures from Textures tab into the viewport or Layers tab to create mask for active layer.


Image
using a path - draw straight lines with editable control points


Image
using a curve - draw curved lines with editable control points


Image
using a decal - project a sticker using transform controls onto a mesh


Image
using a path layer to paint sewing


Image
using a filter - edit parent layer using nodes






2D View

Image

Click Layers tab - 2D View to show the channels of the selected layer. The 2D View is updated immediately as you paint.

In the 2D View top bar:






Viewport

Image

Set viewport parameters in Menu bar - Viewport.

Drag and drop a .hdr file onto the viewport to change the environment map.

Hold Ctrl + middle mouse button to rotate environment map.

To simulate pixel-art like painting, disable Filter Textures option and set Super Sample in preferences to 0.25x.
Image

Viewport Mode

Set viewport render mode in Menu bar - Mode.

Path Traced Viewport

Camera

Set camera parameters in Menu bar - Camera:

Workspace

Set workspace layout in Menu bar - Workspace.


Image
paint 3d - draw onto a 3d mesh


Image
paint 2d - draw onto a plane


Image
nodes - build materials


Image
script - create plugins

Workflow

Set workflow to configure available Material Output node sockets.


Image
pbr - all channels are available


Image
base - restricts painting to base color and opacity, use for non-PBR projects


Image
sculpt - enables displacement socket






Baking

Image

Open material node editor (TAB) and add a Bake Texture node. Pick a bake mode, then click the Bake button.

For ray-traced bake modes, multiple samples (set via the Samples option) will get accumulated until the operation is complete.

The result can be further processed with nodes, or connected to the Material Output node socket to use it directly. Alternatively, right-click onto the Bake Texture node and press the Capture Output button. This will save the bake result into the Textures tab from where the texture can be exported to disk.

Use AO bake with small Radius to bake Cavity.

Use Curvature bake to create dirt masks.
Image






Sculpting

Image

Press Menu bar - Workspace - Workflow - Sculpt to enter sculpt mode.

work-in-progress






Scripting

Image

Plugins

Press Plugins tab - Manager to open the plugin manager.

Scripts Tab

Scripts tab allows you to edit and run scripts directly in ArmorPaint. It supports basic code editing, mini map display and syntax coloring.

Console Prompt

Once console model is set up, navigate to the Console tab, enter the text prompt and click the Run button. Once done, a script will be generated in the Scripts tab. You can inspect the script and press the Run button to execute it.

See Console Model setup.

Live-link plugins are currently in development:

Plugin Development

Plugins are written in a minimal interpreted C variant. For a basic example, see the bundled hello_world.c file located in the ArmorPaint/data/plugins folder.

Timeline wip

In the timeline tab you can:


Image
skinned mesh

Command line / terminal

Control ArmorPaint via the command line arguments.

Usage: armorpaint [options] [file]
Options:
  --background                      Run without displaying the window
  --export-textures <type> <preset> <path>
                                    Export textures to path
                                    type: png, jpg, exr16, exr32
  --export-mesh <path>              Export mesh to path
  --export-material <path>          Export material to path
  --reload-mesh                     Reimport mesh on startup
  --script <path>                   Run script on the opened project
  --api                             Print the scripting API reference
                                    Contents of the opened project are included
  --player                          Run in player mode
  --help                            Show this help message






Preferences

Image

Click Menu bar - Edit - Preferences... to show the preferences window.

Interface


Image
node previews

Theme

Usage


Image
live brush preview

Camera

Pen

Pen pressure is expected to work on Windows, Linux, macOS, Android and iOS.

ArmorPaint uses Windows Ink API on Windows. When using a Wacom tablet, ensure Use Windows Ink option is enabled in Wacom Tablet Properties.

When using a Wacom tablet on Windows, you can rotate the viewport by assigning Alt + Left click modifier onto pen button in Wacom Tablet Properties.

If you are having issues with pressure detection on Linux, try installing opentabletdriver.

Viewport

On faster GPUs:

On slower GPUs:

Additional options:

Keymap

Select an existing preset or define custom keyboard shortcuts.

Neural






FAQ

Image

Faces are missing on the imported mesh

The missing faces are likely caused by inverted normals & backface culling. Reversing normals for the affected faces should resolve the issue.

There is also a way to disable backface culling in ArmorPaint at Menu bar - Viewport - Cull Backfaces, however it may cause issues with lighting due to normals pointing in the opposite direction.

If the issue persists, triangulating the mesh before importing it to ArmorPaint might help.

Mesh gets painted on multiple places at once

Make sure the UV map has no overlapping faces. It can be resolved by unwrapping the mesh so that each face occupies unique space on the UV map, or using multiple layers to paint objects with multiple UV sets.

Simple meshes can be unwrapped directly in ArmorPaint via Meshes tab - Edit - UV Unwrap.

Black spots appear on the imported mesh

Make sure all mesh faces are present on the UV map.

Download of neural model does not start

Check that the ArmorPaint connection is not blocked by a firewall or a software like vmware fusion.