What you will build
By the end you will have designed a themed PBR material in the browser, previewed it lit in 3D, and exported a Painter Python script that rebuilds the whole layer stack - folders, per-channel fill layers and generator masks - on your own mesh in Substance 3D Painter 10.1 or newer. You will also have the procedural base maps and a spec sheet.
Before you start: nothing here needs an install and the whole tool is free - no account, no login. Exporting the Painter Python script is free too; running it needs Substance 3D Painter 10.0+ (the layerstack API arrived in the 2024 release).
Step 1 - Pick a base style and theme
Open the app. On the left, choose a base style - Realistic for grounded, physically-plausible surfaces, or Stylised for higher saturation, crisper edge wear and a more hand-authored look. Then pick a theme from the library: clean or worn metal, rusted metal, chipped paint, sci-fi panel, stone, wood, fabric, leather, concrete or gold.
The centre preview redraws immediately, and the right-hand panel fills in the channel targets and the layer recipe for that theme. Three themes are free; the rest are unlocked on Pro.
Step 2 - Tune the channels
The Customize panel on the right lets you override the theme without leaving it:
- Roughness, Metallic and Normal strength as sliders.
- Base colour and Emissive as colour pickers.
Every change flows straight through the pipeline - the 2D maps regenerate, the 3D preview updates, and the values feed the exported script, spec sheet and preset. Hit Reset to snap back to the theme defaults.
Step 3 - Preview it in 3D
Switch the centre toggle from 2D map to 3D viewer. The generated maps are applied to a lit 3D mesh so you can judge the material the way it will actually read on a model:
- Mesh: sphere, shader ball, cube, cylinder or plane - or load your own
.glb/.gltf. - Lighting: a neutral studio environment, or day / sunset / night skies. Drop in an
.hdrfile to light the material with a real HDRI. - Exposure and auto-rotate controls, plus click-drag to orbit.
If your browser has no WebGL, the viewer falls back to the 2D map - everything else still works.
Step 4 - Paint it onto the model (optional)
In the 3D viewer, hit Paint on model to brush your designed material straight onto the mesh over a base coat:
- Pick a Base - a neutral primer, or any theme as an undercoat.
- Drag on the model to paint; tune brush size and hardness, or switch on Erase. Orbit is off while painting - toggle Paint back off to rotate.
- Clear or Fill the whole mask in one click.
- Export the painted mask (a black-and-white PNG you can drop onto a layer's mask in Painter) and the composited maps.
This is an honest browser preview of a masked layer - the same idea the generated Painter script sets up as a real, mesh-aware mask inside Painter. The deep paint work still belongs in Painter; this gets the rough-in and the mask started on your actual model.
Step 5 - Export
From the right panel you can export, at any map size:
- Base maps (PNG) - base color, roughness, metallic, normal, height and AO. Free.
- Spec sheet - a printable summary of every channel value and the layer stack. Free.
- Preset (JSON) - the full design, to reload or share. Free.
- Painter script (.py) - the layer-stack builder. Pro.
Step 6 - Run the script in Substance 3D Painter
In Painter, open a project with a mesh, then run the script:
- Python menu → open the script folder, or drop the
.pyinto the Painter Python console. - Run it. The script targets your active texture set and builds a folder with a fill layer per channel and the theme's generator masks.
- The result is a real, editable material - adjust fills, swap masks, or paint over it as normal.
Mask generators (Metal Edge Wear, Dirt and so on) reference resources on your Painter shelf. The script searches for them and, if one is missing, falls back to a plain black mask so the build never fails outright.
Where the base maps fit
The exported PNGs are procedural, tiling, mesh-unaware textures. They are a useful starting base layer - drop them into a fill layer under your generators - but they are not the smart material itself. The editable material comes from the script. This is the honest split: the browser designs and documents, Painter holds the live layer stack.