Skip to content

Nodes · Atelier

BS_Painterly

Atelierv1coreNeeds full inputForge

Overview

Repaints the frame as brush strokes that stay put on the surface: stroke particles seeded from the position pass ride camera moves and deformation without boiling, oriented by the picture's own flow, sized by distance, painted far to near. Cadence (on twos) and a rationed boil are the artistic time controls.

How to

How-to

  1. Wire a render with a position pass (a plate works, as paper strokes).
  2. Start from a preset (Oil, Impasto, Gouache…), then spacing — the biggest control — and length, hardness, color_jitter.
  3. Lock the lattice: type the reported auto cell_size in so strokes stay anchored to the world across the shot.
  4. cadence = 2 for on-twos; boil for rationed life; ⚒ Bake frames when done.

Inputs

InputWhat it takes
inthe image this node works on

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
spacingFloat12.0Wanted stroke spacing on screen, px, at the octave that fits. The single biggest look control.
cell_sizeFloat0.0The lattice's cell size in the render's world units — the scale strokes are anchored at. 0 = auto from this frame, which drifts with the shot; the node reports the value it used — set it to that to LOCK the strokes across the shot.
octavesInt3How many lattice scales (each twice the last). More = strokes keep a sensible size over a wider depth range.
densityInt3Strokes per lattice cell. Overlap is what makes a canvas read as paint rather than a grid of dabs.
flattenFloat0.0A Kuwahara flattening of the picture before the strokes take their colour (radius px, 0 = off): flat fields, kept edges — the oil-painting base.
bakedTextThe frames ⚒ Bake frames wrote. While set, every frame that exists in the sequence is READ instead of computed.
baked_hashTextThe look fingerprint the bake was made from; the panel says ⚠ stale when a knob or the upstream has moved.
statusTextWhat the node found: the lattice's cell size (auto or locked), the passes it anchored to, and whether it plays from a ⚒ Bake.
lengthFloat2.4Stroke length as a multiple of its spacing.
aspectFloat0.32Stroke width as a fraction of its length. 1 = round dots.
angle_jitterFloat9.0Random turn per stroke, degrees, seeded (the same stroke turns the same way every frame).
orientationChoiceflowWhat strokes follow: the picture's flow (edge tangents — the painter's choice), the normal pass, or one fixed angle. flownormalfixed
angleFloat0.0The fixed angle, degrees, for orientation = fixed.
flow_smoothFloat4.0How far the flow field is smoothed, px. Larger = calmer, longer sweeps.
detailFloat0.04Fine strokes paint only where the coarser layer left at least this much contrast behind (0 = everywhere). Hertzmann's coarse-to-fine.
opacityFloat0.95Per-stroke opacity.
hardnessFloat0.85Dab edge: 0 soft, 1 hard.
bristlesFloat0.5Ridges of lighter and darker paint along the stroke (colour, never transparency).
grainFloat0.2Paper grain through the paint — from the coherent (world-anchored) noise when there is a position pass.
jitterFloat0.8How far a stroke sits from its cell's centre, 0 (a grid) to 1.
color_jitterFloat0.15Seeded per-stroke value and hue drift — what lets neighbouring dabs read as separate dabs.
overhangFloat0.35How far strokes may reach past their object's silhouette: 0 clipped, 1 free (Meier's loose edges).
min_strokeFloat2.0Strokes shorter than this on screen are dropped and the plate shows: distant surfaces become fewer strokes, not noise.
paper_fillChoiceonPixels with no object (sky, void) get screen-space paper strokes so the whole frame is one painting. They slide under a camera move — as a painted backdrop does. onoff
cadenceChoice1Stylize on ones, twos, threes or fours: the INPUT is held at the stepped frame, so strokes and picture step together (no motion blur in the styled layer). 1234
boilFloat0.0How far strokes re-jitter at each boil tick (0 = still). Deliberate, rationed life in the media — the strokes that exist never change.
boil_rateFloat8.0Boil ticks per second (8–12 is the hand-drawn feel).
fpsFloat24.0The shot's frame rate, for boil_rate.
seedInt1The lattice's seed: a different set of strokes, same everything else.
backgroundChoiceplateWhat the strokes paint over: the plate, transparency, or a flat colour. platetransparentcolour
background_colourColor[0.92, 0.9, 0.85, 1.0]The flat colour for background = colour.
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).