Decal Tool¶
Surface → Decal Tool
Select faces, pick a decal from your library, press one button: you get
surface-aligned decal.sps planes, and your mesh is never touched.
Select face → choose decal → Create Decal.
The decal library¶
Point the add-on at any folder. Each subfolder becomes a category:
Decals/
Dirt/ dirt_01.png dirt_02.png dirt_03.png
Cracks/ crack_01.png crack_02.png
Leaks/ leak_01.png
Graffiti/ graffiti_01.png
The folder is an add-on preference, not a scene setting — you pick it once and it is remembered across new files, restarts and updates.
Supported: .png, .tga, .dds, .jpg, .jpeg. Images sitting directly in
the library root show up under a single (root) category, which works fine —
categories only start earning their keep when you want Random Texture to
pick "any dirt" rather than "anything in the library".
Nothing is hard-coded. Drop a new file in and press Refresh Library; no restart needed.
Placing a decal¶
- Set Decal Library once, press Refresh Library.
- Select the mesh, enter Edit Mode, select one or more faces.
- Pick a Category and Texture — the preview shows exactly what you are about to place.
- Press Create Decal.
You stay in Edit Mode with your selection intact, so you can pick another texture and fire again immediately.
One object is created per selected face — or per surface, see Merge Coplanar
below — each with a quad aligned to that face, a border ring that dissolves
into the surface, a full 0–1 UV layout, and a decal.sps material carrying
your image.
Decals on walls and slanted surfaces are oriented visually upright (world Z projected onto the face). On floors and ceilings, where "upright" means nothing, they fall back to the face's own edge tangent.
Placement settings¶
| Setting | Does |
|---|---|
| Merge Coplanar | on by default: touching faces in the same plane count as one surface, so a wall split into twenty quads takes a single decal centred on the whole wall. Off gives one decal per selected face |
| Width / Height | decal size in metres, measured across the outer boundary |
| Edge Fade | width of the alpha-0 border ring. Capped at just under half the decal, so a fade wider than the decal blunts rather than turning inside out |
| Surface Offset | lift off the surface. 0.003 m by default |
| Rotation | spin around the face normal, so 45° looks the same on a floor and on a wall |
Randomization¶
Random Rotation, Scale, Texture and Position are evaluated independently per selected face, so a multi-face selection gives variation in one press.
Random Position drops each decal at a random spot inside its face instead of at the centre. Turn it on when placing several decals on one large face — otherwise every press lands on top of the last one. A decal too big for its face stays centred rather than hanging over the edge.
Selected Decal¶
Select a generated decal and its panel appears, with its thumbnail so you can tell decals apart at a glance. Everything here updates as you drag.
Nothing is regenerated on a change — four vertices, one colour attribute and the object matrix — so the UVs and the material come through untouched.
Sliding across the surface¶
Offset U / V slide the decal across the surface. Push one past the edge of the face and the decal walks onto the neighbouring face: it re-orients to that face's normal and the leftover travel continues there, so it turns corners instead of hanging off into space. It can cross several faces in one drag, and dragging back retraces the path exactly. An open boundary edge stops it.
Rotation spins in place and never slides it. Center puts it back at the middle of the face it came from.
The decal stays a flat quad: crossing an edge moves it onto the next face, it does not bend around the corner. One parked exactly on a corner will overhang; slide it a little further and it settles onto one side.
Fading¶
Border Alpha sets the alpha along each side of the border ring — bottom, right, top, left — all 0 by default. Raise one to keep that edge hard, for instance where a decal meets a floor, while the rest still fade out. Where two sides meet, the ring corner takes the lower of the two, so a faded side stays faded all the way into its corners.
Corner Alpha sets the alpha on the four corners of the inner rectangle, laid out in the panel the way the decal sits. Blender interpolates between them, so four values give any linear gradient — top to bottom, side to side or diagonal — while the quad stays four vertices. Fade Down and All 1.0 are one-click shortcuts.
1.0 is as opaque as the texture allows
decal.sps renders Color 1 α × texture α. Decals are created fully
opaque and you fade them from there. If one looks too faint at 1.0, the
transparency is in the PNG itself.
What it builds¶
- one
seto_decal_<texture>object per face or merged surface - a 4×4 grid (16 vertices, 9 quads) whose outer ring starts at alpha 0
- a full 0–1
UVMap 0across the outer boundary, andColor 1 - a
decal.spsmaterial with your image inDiffuseSampler - origin at the centre of the decal
- filed into
decals/<category>, mirroring your library folder, or into the source's Drawable collection