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.

The Preferences dialog gives you centralized control over every aspect of ArmorPaint’s behavior — from window layout and rendering quality to camera navigation, brush physics, pen pressure, and AI neural processing. Open it at any time with Ctrl+K (the edit_prefs keymap action). The dialog is organized into tabs: Interface, Theme, Usage, Camera, Pen/Pencil, Viewport, Keymap, Neural, and Plugins.
All preferences are persisted automatically to config.json in your application data directory. Changes take effect immediately; no manual save step is needed.

Preferences Sections

These settings control the operating-system window presented at startup.
SettingTypeDefaultDescription
window_modeinteger0 (Windowed)0 = windowed, 1 = fullscreen
window_winteger1720Initial window width in pixels
window_hinteger960Initial window height in pixels
window_resizablebooltrueAllow the window to be resized by dragging its edges
window_maximizablebooltrueShow the maximize button in the window title bar
window_minimizablebooltrueShow the minimize button in the window title bar
window_vsyncbooltrueLock the render loop to the display refresh rate
window_frequencyintegersystem HzTarget refresh rate (Hz) when vsync is enabled
window_scalefloat1.03.0*Global UI scale multiplier. Slider range: 1.0–4.0
* The default scale is raised automatically to 2.0 on macOS, iOS, and Android, and further to 2.53.0 on high-DPI mobile displays. On desktop monitors with a resolution ≥ 2560×1600 the default is also 2.0.Additional Interface options available in this tab:
SettingTypeDefaultDescription
node_previewsboolfalseShow a live preview thumbnail on each material node
wrap_mouseboolfalseWrap the pointer around viewport edges during camera navigation
show_asset_namesboolfalseDisplay file names below asset thumbnails in the browser
touch_uiboolfalse*Enlarge UI elements for touch/tablet interaction
splash_screenboolfalse*Show the splash screen on launch
grid_snapboolfalseSnap nodes to the grid in the node editor
experimentalboolfalseEnable in-development features that may be unstable
* Defaults to true on Android and iOS.
Controls the real-time rendering pipeline quality in the 3D viewport.
SettingTypeDefaultDescription
rp_supersamplefloat1.0Super-sampling multiplier. Options: 0.25×, 0.5×, 1.0×, 1.5×, 2.0×, 4.0×
rp_ssaobooltrue*Screen-Space Ambient Occlusion (deferred renderer only)
rp_bloomboolfalsePost-process bloom glow (deferred renderer only)
rp_vignettefloat0.2Vignette darkening at viewport edges (0.0–1.0)
rp_grainfloat0.09Film grain / noise overlay intensity (0.0–1.0)
lut_pathstring""Absolute path to a .cube LUT file for color grading
texture_filterbooltrueApply bilinear filtering to textures in the viewport
displace_strengthfloat0.0Mesh displacement magnitude driven by the height channel (0.0–10.0)
* Disabled by default on Android and iOS to conserve GPU memory.The Renderer combo (render_mode) lets you switch between Desktop (deferred, full feature set) and Mobile (forward renderer). A Path Tracer quality mode is also available: Fast or Quality.
Tune how the 3D viewport camera responds to mouse and keyboard input.
SettingTypeDefaultDescription
camera_fovfloat0.69Default camera field-of-view in radians (range 0.3–1.4)
camera_pan_speedfloat1.0Pan speed multiplier (0.1–4.0)
camera_zoom_speedfloat1.0Zoom speed multiplier (0.1–4.0)
camera_rotation_speedfloat1.0Orbit/rotation speed multiplier (0.1–4.0)
camera_upside_downboolfalseAllow the camera to flip upside-down past the poles
zoom_directionenumVerticalMouse-axis used for zooming: Vertical, Vertical Inverted, Horizontal, Horizontal Inverted, Vertical and Horizontal, Vertical and Horizontal Inverted
wrap_mouseboolfalseWrap the pointer around viewport edges during camera moves
camera_pivotenumCenterRotation pivot: Cursor (orbit around the surface point under the cursor) or Center (orbit around the world origin)
camera_controlsenumOrbitNavigation mode: Orbit, Rotate, or Fly
Global defaults that govern paint-stroke behavior and layer management.
SettingTypeDefaultDescription
brush_liveboolfalseDraw a live brush preview ring in the viewport while hovering
brush_depth_rejectbooltrueSkip painting on surfaces facing away from the camera (depth test)
brush_angle_rejectbooltrueSkip painting on surfaces whose normal exceeds the angle threshold
brush_alpha_discardfloat0.1Alpha threshold below which brush mask pixels are discarded (0.0–1.0)
dilate_radiusinteger2Pixels to dilate painted textures outward to prevent UV seams (0–16)
displace_strengthfloat0.0Displacement strength applied to the mesh at render time
layer_resenum2048Default resolution for new layers: 2048, 4096, 8192, or 16384
scene_atlas_resenum8192Resolution of the scene texture atlas: 2048, 4096, 8192, or 16384
grid_snapboolfalseSnap nodes to grid in the node editor
material_livebooltrue*Instantly rebuild the material preview whenever a node changes
undo_stepsinteger6*Number of undo history slots (1–64)
* material_live defaults to false on macOS, iOS, and Android. undo_steps defaults to 4 on Android and iOS.
On projects with large layer resolutions (8192 px or higher), reduce undo_steps to 2–4 to significantly lower GPU memory consumption. Each undo slot stores a full copy of every layer.
Configure how stylus pressure maps to brush attributes. These settings are shown as Pen on desktop and Pencil on iOS.
SettingTypeDefaultDescription
pressure_radiusbooltrueModulate brush radius with pen pressure
pressure_hardnessbooltrueModulate brush hardness with pen pressure
pressure_opacityboolfalseModulate brush opacity with pen pressure
pressure_angleboolfalseModulate brush angle with pen pressure
pressure_sensitivityfloat2.0Global pressure curve exponent (0.0–10.0). Higher values make light strokes feel lighter
touch_uiboolfalseEnable enlarged touch-friendly UI elements (also in Interface tab)
General application behavior options found in the Usage tab alongside the painting settings.
SettingTypeDefaultDescription
undo_stepsinteger6Depth of the undo/redo history stack (1–64)
show_asset_namesboolfalseDisplay filenames under asset thumbnails
splash_screenboolfalseShow the startup splash screen
node_previewsboolfalseEnable per-node preview thumbnails in the material editor
material_livebooltrueLive-update the material preview on every node change
experimentalboolfalseUnlock experimental and in-development features
Settings for the on-device AI inference features. Available on desktop platforms (Windows, Linux, macOS) only.
SettingTypeDefaultDescription
neural_resinteger512Resolution used for neural inference passes: 512, 1024, or 2048
serverstringhttps://cloud.armory3d.comRemote inference server URL used as a fallback when a local model is unavailable
All neural processing runs locally on your device by default. Individual AI models can be downloaded or removed from the Neural tab model list. A Models Directory button opens the folder where downloaded model files are stored.
SettingTypeDefaultDescription
blenderstring""Absolute path to the Blender executable, used for pipeline integrations
SettingTypeDefaultDescription
localestring"en"UI language code ("en", "de", "ja", etc.) or "system" to auto-detect the OS language
themestring"default.json"Active theme file name, relative to the themes/ data folder
keymapstring"default.json"Active keymap preset file name, relative to the keymap_presets/ folder
Locale, theme, and keymap can all be changed at runtime from dedicated tabs within the Preferences dialog. See Themes & Localization and Keymap for details.

Config File Location

ArmorPaint writes all preferences to a config.json file. The exact location depends on your platform:

Standard install

config.json lives alongside the application data in the ArmorPaint data directory (next to the executable on most platforms).

Protected path (e.g. Program Files)

When the application is installed in a system-protected directory, config.json is written to the OS user application-data folder (iron_internal_save_path()).
The config file is validated on load by checking the version field. If the SHA does not match the current build, the config is reset to defaults automatically.

Restoring Defaults

Inside the Interface tab, click Restore to reset all preferences to their defaults. A confirmation menu prevents accidental resets. You can also click Import… in the same menu to restore preferences from a previously exported config.json backup. The Reset Layout button resets only the panel and sidebar sizes to their initial proportions without touching any other preferences.

Build docs developers (and LLMs) love