Phlanka Logo
Phlanka
Docs / Substance Painter

AI-generated documentation

These docs were generated with the help of AI and may contain inaccuracies. If something looks wrong, please open a ticket in our Discord server and we will get it corrected.

Substance Painter Addon

The Phlanka DayZ Exporter is a Substance Painter plugin that exports your painted textures in the formats DayZ expects, and optionally generates the .rvmat material file and a config.cpp class definition — all from a single dialog inside Substance Painter.

Everything the plugin produces lands in a folder of your choice. You walk away with ready-to-use DayZ texture files and, if you want, the supporting material and config files as well — no manual channel packing or file renaming required. Full UDIM / UV tile support means multi-tile meshes export each tile separately with correct filenames automatically.


Installation

The plugin is delivered as a .zip file. You do not need an installer — just extract the folder and place it in the right location.

  1. 1

    Download the zip

    Download the plugin zip from your Phlanka dashboard.

  2. 2

    Extract the zip

    Extract the zip file. You will get a single folder called Phlanka_DayZ. Do not rename this folder — Substance Painter loads the plugin by that exact name.

  3. 3

    Copy the folder to the plugins directory

    Move or copy the Phlanka_DayZ folder into your Substance Painter plugins directory:

    Platform Plugins folder path
    Windows C:\Users\YourName\Documents\Adobe\Adobe Substance 3D Painter\python\plugins\
    macOS /Users/YourName/Documents/Adobe/Adobe Substance 3D Painter/python/plugins/

    If the plugins folder does not exist yet, create it manually. The final structure should look like:

    python/
      plugins/
        Phlanka_DayZ/
          __init__.py
          custom_export.py
          ...
  4. 4

    Launch Substance Painter

    Start (or restart) Substance Painter. The plugin loads automatically on startup — no manual enable step is required. You will see a DayZ Export menu appear in the top menu bar.

  5. 5

    Activate your license

    Open any project, click DayZ Export → DayZ Export Options, then go to the About tab to enter and activate your license key.

Do not rename the folder

The folder must be named exactly Phlanka_DayZ. Renaming it will prevent Substance Painter from loading the plugin.


Getting Started

Once the plugin is installed and your license is activated, open any Substance Painter project and follow these steps.

  1. 1 Paint and bake your textures as normal inside Substance Painter.
  2. 2 In the top menu bar, click DayZ Export to reveal the plugin menu.
  3. 3 Click DayZ Export Options to open the main export dialog.
  4. 4 Start on the Texture Sets tab — choose which tiles to export and fill in the hidden selection names.
  5. 5 Move through the remaining tabs as needed, then click Export at the bottom.

No project open?

If no Substance Painter project is loaded when you open the dialog, most controls will be disabled and a notice will appear asking you to open a project first. Load your .spp file, then re-open the dialog.


Texture Sets Tab

The first tab in the dialog. This is where you control which texture sets and UV tiles are exported, and where you set the hidden selection names and image base names for each tile. You will use this tab on every export.

Select All / Deselect All

Two buttons appear at the top of the tab, above all texture set groups. They check or uncheck every tile across all texture sets in one click — useful when you have many sets and want to quickly enable or disable everything before making individual adjustments.

Texture sets that have multiple UDIM tiles also get their own per-group Select All / Deselect All buttons inside the group box, so you can control each set independently.

Texture Set Groups

Each texture set in your Substance Painter project appears as its own labelled group box. Inside each group, every UV tile is shown as its own row with three columns:

Column What it does
Tile A checkbox labelled with the UDIM number (e.g. 1001, 1002). Uncheck a tile to skip it entirely — no textures are exported for it and it is not included in the config.
Hidden Selection Name The name of the hidden selection on your 3D model that this tile corresponds to. This value goes into the hiddenSelections[] array in config.cpp. No spaces or special characters. Required when Config Generation is enabled.
Image Base Name (optional) The first part of the exported filename. If left empty, the hidden selection name is used instead. For example, if you enter sword_blade, the colour texture will be named sword_blade_CO.png.

Single-tile vs UDIM texture sets

Texture sets without UDIM tiles show a single row labelled 1001. Texture sets with multiple UDIM tiles show one row per tile (1001, 1002, 1003, …). Each tile is exported independently — you can choose to export only specific tiles by unchecking the others.

For multi-tile sets, the UDIM number is automatically appended to the filename between the base name and the texture type suffix: sword_blade_1002_CO.png

What hidden selections do

Hidden selections are named regions defined on your 3D model's geometry in Object Builder or Blender. The hiddenSelections[] array in config.cpp lists them, and hiddenSelectionsTextures[] / hiddenSelectionsMaterials[] map each one to a texture path and an RVMAT path. The plugin fills all three arrays automatically from the names you enter here and the files that are exported.

The name you enter must exactly match the selection name defined in your model. A mismatch means the texture will not be applied in-game.


Export Tab

The second tab in the dialog. Controls where files are saved, how large they are, and which texture types are produced.

Export Preset Bar

Sits at the top of the dialog (above the tabs). Lets you save and restore your entire export configuration so you do not have to re-enter the same settings for each project. See Export Presets for full details.

Dropdown

Lists all saved export presets by name. Select one to instantly load its settings.

Save Preset

Saves your current output path, resolution, texture checkboxes, and SMDI channel mapping as a named preset.

Delete Preset

Removes the currently selected preset after a confirmation prompt.

Output Location

Shows the currently selected export folder. All textures, RVMAT files, and config.cpp are saved into this single folder.

Select Output Folder

Opens your OS folder browser. Navigate to your target folder and click OK.

If no folder is selected, the plugin automatically creates a folder called CustomExports in the same directory as your open .spp file.

Output Resolution

A dropdown that sets the pixel dimensions of every exported texture. All textures are always square.

Resolution When to use
1024Small props, items held in hand.
2048Most DayZ assets. Good balance of detail and file size.
4096High-detail assets, large clothing or vehicles.
8192Maximum detail. Very large files — use sparingly.

Texture Type Checkboxes

One checkbox per texture type. Only ticked types are exported.

CO

Always ticked by default. Exports the base colour texture.

SMDI

Exports the composite specular/metallic/glossiness texture. Has a Customise button — see SMDI Channels.

NOHQ

Exports the normal map in DirectX format.

AS

Exports the ambient occlusion composite.

EM

Exports the emissive map. Only exports if an Emissive channel exists in the texture set — see Texture Types.

Export Button

The large button at the bottom of the dialog. Starts the export process and shows a progress bar as each tile is processed. Before starting, the plugin validates that all required fields are filled in — a dialog describes anything that needs correcting.


Texture Types

DayZ uses multiple texture maps to build up the final appearance of a surface in-game. Each is a separate PNG file. Tick the corresponding checkbox on the Export tab to include it in the export.

CO Colour / Albedo

The base colour of the surface. Reads all three colour channels (R, G, B) directly from Substance Painter's Base Color document channel. Every DayZ asset needs a CO texture.

Source
Base Color channel
Channels
RGB (full colour)
Format
PNG, 8-bit
NOHQ Normal Map — DirectX Format

Encodes surface detail without adding extra geometry. DayZ uses the DirectX convention. The plugin automatically uses Substance Painter's built-in DirectX normal map output — you do not need to flip the green channel manually.

Source
Generated Normal (DirectX)
Channels
RGB
Format
PNG, 8-bit
SMDI Specular / Metallic / Detail / Intensity

A composite texture where each colour channel carries different surface data. Default channel layout:

Channel Default source What it controls in DayZ
R White (solid fill) Specular intensity
G Metallic (greyscale) Metallic value
B Glossiness (generated) Surface smoothness

All three channels can be changed. See SMDI Channel Customisation.

Source
Configurable per-channel
Channels
RGB (independent)
Format
PNG, 8-bit
AS Ambient Occlusion Composite

Carries ambient occlusion data — the subtle darkening in crevices and tight corners. The Green channel holds the AO data; Red and Blue are filled with solid white. You need a baked or painted AO channel in your texture set for this to be useful.

G channel
AO (greyscale)
R + B channels
White (solid fill)
Format
PNG, 8-bit
EM Emissive / Self-Illumination

Used for surfaces that emit their own light — indicator lights, glowing elements. Where the EM texture is bright, the surface will glow in-game even in complete darkness.

If no Emissive channel exists in the texture set, the export is silently skipped for that tile and a message is printed to the log. When EM is exported, the plugin automatically sets the emissive multiplier in the RVMAT to 1,1,1,1; when not exported it is set to 0,0,0,0.

To use EM: in Substance Painter open the texture set settings, add an Emissive channel, paint your emissive areas, then tick the EM checkbox before exporting.
Source
Emissive channel
Channels
RGB (full colour)
Format
PNG, 8-bit

File Naming

File names are driven per tile from the Texture Sets tab. There is no longer a global prefix — instead each tile has its own Image Base Name field.

Part Where it comes from
{BaseName}The Image Base Name field for this tile in the Texture Sets tab. If left empty, the Hidden Selection Name for that tile is used instead.
{UDIM}The UDIM tile number (e.g. 1001, 1002). Only included for texture sets that have multiple UV tiles. Single-tile sets omit this part.
{TYPE}The texture type: CO, NOHQ, SMDI, AS, or EM.

Single-tile:  {BaseName}_{TYPE}.png
Multi-tile:   {BaseName}_{UDIM}_{TYPE}.png

Worked example — single tile

Image Base Name: sword_blade

sword_blade_CO.png

sword_blade_NOHQ.png

sword_blade_SMDI.png

sword_blade.rvmat

Worked example — UDIM tiles

Image Base Name: table_body  ·  Tiles: 1001, 1002, 1003

table_body_1001_CO.png

table_body_1001_NOHQ.png

table_body_1002_CO.png

table_body_1002_NOHQ.png

table_body_1003_CO.png

table_body_1003_NOHQ.png

config.cpp

All files land in the same output folder. The config.cpp is a single file regardless of how many tiles exist — it references all checked tiles inside its hidden selections arrays.


SMDI Channel Customisation

The SMDI texture packs three independent data sources into a single image. By default the channels are set to R = White, G = Metallic, B = Glossiness — but you can change any of them.

Opening the Customise Dialog

On the Export tab, tick the SMDI checkbox. A small Customise link button appears immediately to its right. Click it to open the SMDI Channel Configuration dialog.

Inside the SMDI Dialog

Three rows — one per channel (R, G, B), each with a dropdown listing every available source. Your choices are saved automatically and used on the next export.

Reset to Defaults

Restores all three channels to R = White, G = Metallic, B = Glossiness.

Option name What it reads Notes
White Solid white fill (255 across the full channel) Default for R. Channel will be completely white.
Black Solid black fill (0 across the full channel) Effectively disables the channel.
Roughness Roughness channel (greyscale) Higher values = rougher / less glossy.
Metallic Metallic channel (greyscale) Default for G.
Specular Specular channel (greyscale) Falls back to a generated virtual specular if no painted channel exists.
Specular Level Specular Level channel (greyscale) Controls overall specular response level.
Glossiness Generated Glossiness map (greyscale) Default for B. Computed from roughness data.
Glossiness² Generated Glossiness² map (greyscale) Same source as Glossiness but with a different contrast curve.

Automatic fallback behaviour

When a chosen painted channel does not exist in the texture set, the plugin automatically falls back to the closest generated virtual equivalent. A message is printed to the log explaining what fallback was used.


RVMAT Settings

The third tab. Controls the generation of the .rvmat material file. When enabled, one RVMAT file is generated per tile and saved into the output folder.

Generate RVMAT — Checkbox

The master switch. When unticked, no RVMAT file is produced.

RVMAT Preset Bar

Saves and restores RVMAT-specific values (ambient, diffuse, specular, specular power, Fresnel). Useful if you work with different material types (fabric, metal, wood) that need different settings.

Ambient (R / G / B)

Default: 0.8 · 0.8 · 0.8

Controls the ambient light colour the material receives. Leave at default for most assets.

Diffuse (R / G / B)

Default: 0.8 · 0.8 · 0.8

Influences how much scene lighting the surface absorbs and re-emits as diffuse. The default neutral grey works for most assets.

Specular (R / G / B)

Default: 0.3 · 0.3 · 0.3

Specular highlight colour. Higher for metal-like materials, lower for matte surfaces.

Specular Power

Default: 25

Controls how sharp or spread out the specular highlight is. Low values = large soft highlight (rough surfaces). High values = tiny hard highlight (polished metal).

Fresnel

Default: #(ai,64,64,1)fresnel(1.1,0.3)

The Fresnel shader expression. Controls rim reflection at glancing angles. The default values (1.1, 0.3) suit most DayZ assets.

How texture paths get into the RVMAT

The plugin uses a template and replaces placeholders at export time. Paths to NOHQ, SMDI, AS, and EM textures are written in automatically. If a texture was not exported, that slot falls back to a DayZ-compatible placeholder colour so the RVMAT is always valid.

The RVMAT is always overwritten on export. Save your values as an RVMAT preset before re-exporting so they are reapplied automatically. Do not edit the .rvmat file directly.

Config Generation

The fourth tab. Optionally generates a config.cpp file — a DayZ class definition that wires your item's textures and material into the game. Hidden selection names are set in the Texture Sets tab per tile; this tab handles the class details and required addons.

Generate Config — Checkbox

The master switch. When unticked, no config.cpp is produced.

Config Preset Bar

Saves and restores config-specific values: class name, base class name, display name, and description.

Config Type

e.g. CfgVehicles

A dropdown. Sets the top-level class name in the config: CfgVehicles (characters, clothing, wearables), CfgWeapons (weapons and attachments), or CfgMagazines (ammunition).

Class Name

e.g. DayZ_MySword

The unique internal identifier for your item. Used as the class name in the config and in CfgPatches. No spaces or special characters.

Base Class Name

e.g. Clothing

The DayZ class your item inherits from. Must be a valid class that exists in the base game or a mod dependency. No spaces.

Display Name

e.g. My Sword

The human-readable name shown to players in-game. Spaces are allowed.

Description

e.g. A sharp blade

The short description shown in the item's info card. Spaces are allowed.

Required Addons

A dynamic list of addon names that go into the requiredAddons[] array inside CfgPatches. Defaults to DZ_Data which is required by all DayZ mods.

Text input + Add

Type an addon name (e.g. DZ_Characters) and click Add to append it to the list. Duplicates are ignored.

Remove

Each addon row has its own Remove button. Click it to delete that entry from the list.

requiredAddons[] = {
    "DZ_Data",
    "DZ_Characters"
};

Config output format

The generated config.cpp uses multi-line formatting for all arrays so they are easy to read and edit:

hiddenSelections[] = {
    "camo1",
    "camo2"
};
hiddenSelectionsTextures[] = {
    "path\to\camo1_CO.paa",
    "path\to\camo2_CO.paa"
};
hiddenSelectionsMaterials[] = {
    "path\to\camo1.rvmat",
    "path\to\camo2.rvmat"
};

The arrays are populated automatically from the checked tiles in the Texture Sets tab. Unchecked tiles are excluded entirely.


Materials Library

The fifth tab — also available as a standalone dockable panel via DayZ Export → Materials Library. Browse, preview, and apply pre-made DayZ-ready materials directly to your active texture set without building them from scratch.

A valid and activated Phlanka license is required to use the Materials Library.

Search Box

Type any part of a material name to instantly filter the list in real time. Clear the field to show all materials again.

Category Dropdown

Filters by category (Fabrics, Metals, Wood, Concrete, etc.). Works together with the search box — both filters are applied simultaneously.

Recently Used Section

Shows thumbnails of recently applied materials at the top of the list. Persists between sessions.

Material List

The main scrollable list of available materials, each shown as a named thumbnail icon.

Single click

Opens a large preview dialog with the material name, category, and full-size preview image.

Double click

Applies the material directly to the active texture set. Use Substance Painter's undo if needed — this cannot be undone through the plugin.

Refresh Button

Re-downloads the material catalogue from the Phlanka server. Use this if new materials are not appearing in the list yet.

Apply to Active Texture Set Button

An alternative to double-clicking — select a material and click this button to apply it.


About Tab

The sixth and final tab. Contains license information, the plugin version, language settings, and material cache management.

License Information

Registered to: The email address the license is associated with.
License Expiration: The expiry date, or "Never Expires" for lifetime licenses.
Days Remaining: A countdown, or "Expired" if the license has lapsed.
Version: The current plugin version number.
Website: A clickable link to phlanka.com.

Language Dropdown

Change the language of all plugin UI text. Available: English, Chinese (Simplified), Chinese (Traditional), French, German, Spanish, and Russian.

Restart Substance Painter after changing the language for it to take effect everywhere.

Clear Material Cache Button

Removes locally cached material thumbnails. Use this if icons look incorrect or if you want to force a fresh download on the next library Refresh.


Export Presets

Presets save your current settings and let you reload them instantly for future projects. There are three independent preset systems stored locally alongside the plugin.

Saving a preset

  1. 1. Configure all the settings the way you want them.
  2. 2. Click the Save Preset button on the relevant tab.
  3. 3. Type a name for the preset and confirm.
  4. 4. The preset is saved and immediately appears in the dropdown.

Loading a preset

Select the preset from the dropdown on the relevant tab. All saved values are immediately applied. You can then adjust individual fields without affecting the saved preset.

Deleting a preset

Select the preset and click Delete Preset. A confirmation dialog appears. Deleted presets cannot be recovered.


Tips & Troubleshooting

Common issues and how to resolve them.

Nothing was exported — no files appeared in the output folder

Check that at least one tile is checked in the Texture Sets tab and that at least one texture type checkbox is ticked on the Export tab. Confirm the output folder is accessible. The Substance Painter output window will contain a log message explaining what failed.

Hidden selection names are not appearing in config.cpp

Hidden selection names are set in the Texture Sets tab — one per tile. Make sure the Generate Config checkbox is ticked and that every checked tile has a hidden selection name filled in. If any field is empty a validation warning appears before export.

Exported filenames are not what I expected

File names are driven by the Image Base Name field for each tile in the Texture Sets tab. If that field is empty, the hidden selection name is used instead. For multi-tile (UDIM) sets the UDIM number is automatically inserted between the base name and the type suffix. See File Naming.

Only one CO file was exported for a UDIM set — I expected one per tile

Each tile must be checked in the Texture Sets tab. Use the Select All button inside the texture set group to check all tiles at once, then re-export.

The SMDI texture looks wrong — unexpected colours or brightness

Click the Customise button next to the SMDI checkbox and verify the source assigned to each channel. Check the Substance Painter output window — the plugin logs exactly which source was used and any automatic fallbacks. See SMDI Channel Customisation.

The RVMAT file is missing texture paths, or paths are wrong

The RVMAT is completely regenerated on every export. Unticked texture types fall back to DayZ placeholder values — they do not carry over paths from a previous export. Tick all needed texture types and re-export. See RVMAT Settings.

The EM texture was not exported — the EM file is missing

An Emissive channel must exist in the texture set. In Substance Painter, open the texture set settings, add an Emissive channel, paint your emissive areas, then export again with EM ticked. See Texture Types → EM.

I edited the .rvmat file manually and my changes were lost on re-export

The RVMAT is always overwritten. Save your values through the RVMAT Settings tab as an RVMAT preset before re-exporting.

The dialog opened but most controls are disabled

No Substance Painter project is open. Open your .spp file and re-open the dialog.

Materials are not appearing in the Materials Library

Click Refresh in the Materials Library tab to re-download the catalogue. If materials still do not appear, verify your license on the About tab and check your internet connection.

Material icons look corrupted or show as blank squares

Go to the About tab, click Clear Material Cache, then return to the Materials Library and click Refresh to force a full re-download.