Nodes · Atelier
PaintOver
Atelierv1core
Overview
The Atelier's canvas: paint over a rendered frame with strokes that stay strokes (re-bakeable, one undo each), scoped to an object by its cryptomatte. Checks the render delivers what painting on the object needs - a UV pass, unfiltered, tagged as data - and says so on the node when it does not.
How to
How-to
- Layouts ▸ Atelier; pick a brush, set
anchor(paper / object / anchored3d) andscope(click an object in the panel). - Paint in the viewer; strokes stay strokes — re-bakeable, one undo each.
- Layers stack in the panel;
medium = wetruns the watercolour sim; N draws notes that never render. - ⚒ Bake through an ObjectBake to take object paint to textures.
Inputs
| Input | What it takes |
|---|---|
| in | the image this node works on |
Outputs
| Output | Type |
|---|---|
| out | Image |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| strokes | Text | The stroke ledger — every stroke as data (points, pressure, brush, anchor, scope, medium), never pixels. One undo each; re-bakeable after a re-render. Edited by painting, not by hand. | |
| scope | Text | Which object(s) the NEXT stroke belongs to, by cryptomatte name (comma-separated). Click an object in the Atelier panel. Empty = the whole frame. Object-anchored strokes must have one — it is what the bake paints onto. | |
| anchor | Choice | paper | Where the next stroke LIVES. paper: on the screen, every frame. object: on the object's surface, baked to its texture by ObjectBake and riding the shot through ObjectApply. anchored3d: floating off the surface by stroke_level, riding every frame through the position pass, hidden behind nearer things. advected: carried by the picture's motion from its frame (wire a BS_Advect, strokes mode). paperobjectanchored3dadvected |
| uv_layer | Text | auto | The UV pass the bake scatters through. auto finds uv / st / UV; name it when the render calls it something else. |
| crypto_layer | Text | auto | The cryptomatte family that scopes strokes. auto finds CryptoObject (then CryptoAsset, CryptoMaterial, ObjectID). |
| uv_check | Choice | on | The seam census on the UV pass. A filtered (anti-aliased) UV pass averages two islands' coordinates at seams and bakes paint onto garbage texels — the node says so rather than baking. Turn off only for a stream you have vetted. onoff |
| brush_size | Float | 30.0 | Diameter of the next stroke, px. [ and ] in the viewer. |
| brush_hardness | Float | 0.8 | 0 = fully soft skirt, 1 = hard edge. Shift+[ and Shift+] in the viewer. |
| brush_opacity | Float | 1.0 | The ceiling one stroke can reach however often you cross the same spot (Photoshop's Opacity). 1…0 in the viewer for 10%…100%. |
| brush_flow | Float | 0.6 | Per-dab deposit within a stroke (Photoshop's Flow). Recorded now; honoured fully by the live paint layer. |
| brush_color | Color | [0.0, 0.0, 0.0, 1.0] | Scene-linear paint colour. The Mixer's → brush sets it from a pigment mix. |
| brush_tip | Text | The next stroke's tip: empty is the procedural round; otherwise a brush from the library (Photoshop .abr packs dropped into the brush folder import themselves). The tip is embedded in the project so the strokes replay anywhere. | |
| brush_name | Text | Round | The chosen brush's name, for the panel. |
| brush_spacing | Float | 0.25 | Dab spacing as a fraction of the diameter. 0.25 for a round; sampled tips usually want 0.1. |
| brush_smoothing | Float | 0.35 | StreamLine: how hard the recorded point is pulled toward the pen. 0 = raw; 0.35 takes hand jitter out; 0.8 draws long clean curves with a little lag. The stroke always ends under the pen. |
| brush_taper | Float | 0.0 | Pixels of path over which the stroke thins in at the start and out at the end. 0 = blunt ends; 40 gives an inked, brush-like entry and exit without a tablet. |
| brush_speed | Float | 0.0 | Speed as pressure, for mice and untracked pens: at 1, a fast flick is a third of the width of a slow line. 0 = off. A tablet's real pressure multiplies with it. |
| brush_grain | Float | 0.0 | Paper tooth, 0..1. The stroke's coverage is multiplied by a grain fixed to the canvas (not to the dab), so chalk, pencil and dry brush skip across the same sheet however the dabs overlap. 0 = smooth. |
| brush_grain_kind | Choice | noise | The grain's pattern, locked to the canvas: noise (paper tooth), paper (a laid sheet), halftone (a 45° dot screen), hatch, crosshatch, riso (random print dots), mezzotint (fine dense grain). The Shaders brushes set this; brush_grain is how strongly it applies. noisepaperhalftonehatchcrosshatchrisomezzotint |
| brush_grain_scale | Float | 1.0 | The shader's cell size — 1 is about 6 px; 0.6 fine, 2 coarse. Locked to the canvas whatever the brush size. |
| live_stroke | Text | The stroke under the pen, while it is under the pen. The live session injects it into each render so the real kernel draws it; the project never stores it. Empty at rest. | |
| brush_blend | Choice | normal | How the next stroke lands on its layer: normal, multiply, screen, add — erase, which takes paint off the active layer only — or smudge, which drags the layer's paint along and lays none of its own. The Tools strip's Eraser and Smudge set this. normalmultiplyscreenadderasesmudge |
| tips | Text | The brush tips this project's strokes use, embedded as PNG (paint spec §5.3) — never edit by hand. A stroke whose tip is neither here nor installed is named on the node. | |
| layers | Text | The layer stack, bottom to top: name, visible, opacity, blend, locked, and notes for a grease-pencil layer (what lands on it is seen and never becomes paint). Edited in the Atelier panel's Layers section; every change is one undo. | |
| active_layer | Int | 0 | The layer new strokes go to (click a layer in the panel). |
| lighting | Choice | as_painted | How ridden paint meets each frame's light. as_painted keeps the light it was painted under (the Arcane feel). relit un-lights the stroke by this frame's beauty ÷ albedo at bake and re-lights it by each frame's own — it darkens into shadow. Needs an albedo pass; refused without one, never faked. as_paintedrelit |
| medium | Choice | dry | What the next stroke is made of. dry: a dab of paint where it is laid. wet: water and pigment on the paper — it spreads, runs under tilt, granulates and blooms at the edge before it dries (the Wet layer section). drywet |
| wet_wetness | Float | 1.0 | Water laid per stroke — how far a wash can travel. |
| wet_load | Float | 0.6 | Pigment laid per stroke — how dark the wash dries. |
| wet_viscosity | Float | 1.0 | Runnier towards 0.55, syrup towards 1.9. |
| wet_evaporation | Float | 0.02 | Water lost per step. Pigment settles as the water thins, so faster drying means less spread. |
| wet_tilt | Float2 | [0.0, 0.0] | The board's tilt (x, y): the wash runs downhill. |
| wet_granulation | Float | 0.5 | Pigment settles into the paper's valleys — the speckled texture of a granulating pigment. |
| wet_edge | Float | 0.6 | Pigment gathers at the drying edge — the dark rim of a wash, the bloom. |
| wet_diffusion | Float | 0.15 | Pigment spreading through standing water — wet-in-wet softness. |
| wet_rewet | Float | 0.35 | Standing water re-liquifies dried paint under it. 0 = staining pigment that never lifts; higher = a water brush softens and moves a dry wash. |
| wet_drips | Float | 0.5 | Pooled water on a tilted board breaks into droplets that run downhill and leave tapering trails. 0 = never. |
| wet_steps | Int | 24 | Legacy (pre-W1). The wash now earns exactly the time you watch pass after pen-up, recorded to the ledger; this knob no longer drives the sim. |
| wet_speed | Float | 12.0 | The drying clock: sim steps per second of watching, after pen-up. The passing time is recorded into the ledger, so a reopened project replays the same drying. |
| wet_paper_scale | Float | 6.0 | The paper's grain size, px. |
| wet_seed | Int | 11 | The paper's valleys — every sheet its own grain. |
| wet_res | Choice | 2 | The sim's resolution against the frame: full, half or quarter. A wash needs no more than half; the sim only runs over the wet strokes' region. 124 |
| wet_show | Choice | off | A sheen where water still stands. offon |
| mixing | Choice | km | How paint meets paint and paper. km: Kubelka–Munk pigment mixing (blue + yellow makes green) — ours. additive: light. kmadditive |
| mixer_a | Color | [0.1, 0.2, 0.85, 1.0] | The Mixer's first pigment. |
| mixer_b | Color | [0.95, 0.85, 0.1, 1.0] | The Mixer's second pigment. |
| mixer_t | Float | 0.5 | How much of B in A. |
| stroke_level | Float | 0.0 | How far the next anchored3d stroke floats off the surface along its normal, in the render's world units — silhouette fuzz, halos. |
| depth_tolerance | Float | 0.05 | How much nearer a surface must be before a re-projected anchored3d point counts as hidden (world units). |
| stroke_in | Float | -1.0 | First frame the next paper stroke shows on (−1 = from the start). Annotations and timed paint. |
| stroke_out | Float | -1.0 | Last frame the next paper stroke shows on (−1 = to the end). |
| annotations | Choice | show | Grease pencil: show draws every notes layer in the picture, hide takes them all out at once — hide before a render or a Write. Notes never enter the paint plane or a bake either way; this only decides whether they are SEEN. showhide |
| annotation_hold | Int | 1 | How many frames a new note (the Note tool, N) stays on screen from the frame it was drawn on. 1 is this frame only, like a per-frame annotation; 0 keeps it for ever. |
| preview | Choice | all | What the node shows over the picture: everything, or paper strokes only. ⚒ Bake sets paper so the frame a stroke was painted on shows the ridden paint from ObjectApply once, not twice. allpaper |
| bake_object | Text | Set by ⚒ Bake in its own copy of the graph: the paint plane then holds one object's strokes alone. Leave empty. | |
| bake_lighting | Text | Set by ⚒ Bake with bake_object: one lighting mode's strokes alone. Leave empty. | |
| bake_layer | Text | The layer the bake writes the paint-over into, by name. | |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |