Skip to content

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

  1. Layouts ▸ Atelier; pick a brush, set anchor (paper / object / anchored3d) and scope (click an object in the panel).
  2. Paint in the viewer; strokes stay strokes — re-bakeable, one undo each.
  3. Layers stack in the panel; medium = wet runs the watercolour sim; N draws notes that never render.
  4. ⚒ Bake through an ObjectBake to take object paint to textures.

Inputs

InputWhat it takes
inthe image this node works on

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
strokesTextThe 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.
scopeTextWhich 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.
anchorChoicepaperWhere 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_layerTextautoThe UV pass the bake scatters through. auto finds uv / st / UV; name it when the render calls it something else.
crypto_layerTextautoThe cryptomatte family that scopes strokes. auto finds CryptoObject (then CryptoAsset, CryptoMaterial, ObjectID).
uv_checkChoiceonThe 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_sizeFloat30.0Diameter of the next stroke, px. [ and ] in the viewer.
brush_hardnessFloat0.80 = fully soft skirt, 1 = hard edge. Shift+[ and Shift+] in the viewer.
brush_opacityFloat1.0The ceiling one stroke can reach however often you cross the same spot (Photoshop's Opacity). 1…0 in the viewer for 10%…100%.
brush_flowFloat0.6Per-dab deposit within a stroke (Photoshop's Flow). Recorded now; honoured fully by the live paint layer.
brush_colorColor[0.0, 0.0, 0.0, 1.0]Scene-linear paint colour. The Mixer's → brush sets it from a pigment mix.
brush_tipTextThe 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_nameTextRoundThe chosen brush's name, for the panel.
brush_spacingFloat0.25Dab spacing as a fraction of the diameter. 0.25 for a round; sampled tips usually want 0.1.
brush_smoothingFloat0.35StreamLine: 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_taperFloat0.0Pixels 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_speedFloat0.0Speed 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_grainFloat0.0Paper 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_kindChoicenoiseThe 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_scaleFloat1.0The shader's cell size — 1 is about 6 px; 0.6 fine, 2 coarse. Locked to the canvas whatever the brush size.
live_strokeTextThe 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_blendChoicenormalHow 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
tipsTextThe 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.
layersTextThe 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_layerInt0The layer new strokes go to (click a layer in the panel).
lightingChoiceas_paintedHow 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
mediumChoicedryWhat 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_wetnessFloat1.0Water laid per stroke — how far a wash can travel.
wet_loadFloat0.6Pigment laid per stroke — how dark the wash dries.
wet_viscosityFloat1.0Runnier towards 0.55, syrup towards 1.9.
wet_evaporationFloat0.02Water lost per step. Pigment settles as the water thins, so faster drying means less spread.
wet_tiltFloat2[0.0, 0.0]The board's tilt (x, y): the wash runs downhill.
wet_granulationFloat0.5Pigment settles into the paper's valleys — the speckled texture of a granulating pigment.
wet_edgeFloat0.6Pigment gathers at the drying edge — the dark rim of a wash, the bloom.
wet_diffusionFloat0.15Pigment spreading through standing water — wet-in-wet softness.
wet_rewetFloat0.35Standing water re-liquifies dried paint under it. 0 = staining pigment that never lifts; higher = a water brush softens and moves a dry wash.
wet_dripsFloat0.5Pooled water on a tilted board breaks into droplets that run downhill and leave tapering trails. 0 = never.
wet_stepsInt24Legacy (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_speedFloat12.0The 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_scaleFloat6.0The paper's grain size, px.
wet_seedInt11The paper's valleys — every sheet its own grain.
wet_resChoice2The 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_showChoiceoffA sheen where water still stands. offon
mixingChoicekmHow paint meets paint and paper. km: Kubelka–Munk pigment mixing (blue + yellow makes green) — ours. additive: light. kmadditive
mixer_aColor[0.1, 0.2, 0.85, 1.0]The Mixer's first pigment.
mixer_bColor[0.95, 0.85, 0.1, 1.0]The Mixer's second pigment.
mixer_tFloat0.5How much of B in A.
stroke_levelFloat0.0How far the next anchored3d stroke floats off the surface along its normal, in the render's world units — silhouette fuzz, halos.
depth_toleranceFloat0.05How much nearer a surface must be before a re-projected anchored3d point counts as hidden (world units).
stroke_inFloat-1.0First frame the next paper stroke shows on (−1 = from the start). Annotations and timed paint.
stroke_outFloat-1.0Last frame the next paper stroke shows on (−1 = to the end).
annotationsChoiceshowGrease 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_holdInt1How 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.
previewChoiceallWhat 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_objectTextSet by ⚒ Bake in its own copy of the graph: the paint plane then holds one object's strokes alone. Leave empty.
bake_lightingTextSet by ⚒ Bake with bake_object: one lighting mode's strokes alone. Leave empty.
bake_layerTextThe layer the bake writes the paint-over into, by name.
disabledBoolfalseBypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back.
labelTextA note shown under the node in the graph — what this node is FOR. Never affects the render or the cache.
hide_inputBoolfalseDraw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap).