One-line Drawing 一笔画

The Line That Never Lifted·48s·Lemo-Opuscarby Lemomo

A single ink line that never leaves the paper. Everything on screen is that one line being drawn; scenes don't cut, they morph.

The demo: One unbroken line draws a whole life, then the pen passes to a child.

Brand storiesLife milestonesMinimal ads
Style prompt · STYLE.md

A single ink line that never leaves the paper. Everything on screen is that one line being drawn; scenes don't cut, they morph. References (grammar only): Osvaldo Cavandoli's La Linea (1971) — one line is both the world and the character, and transformations of the line are the jokes and the transitions; Gjon Mili's 1949 photographs of Picasso drawing with light — the confidence and speed of a single gesture; Norman McLaren's Begone Dull Care and Boogie-Doodle — lines drawn to the music. Do not copy La Linea's character, its gibberish voice, or any specific continuous-line illustration.

1. Essence, and what it is not

  • One continuous line on warm white paper. The pen never lifts: in code the whole film can literally be one point array, from the first touch of the nib to the last frame.
  • Everything is a line: characters, places, objects, even time. No fills, no shading, no second line weight, no background art.
  • We watch the line being drawn: the camera follows the nib with a little lag and anticipation.
  • Besides ink there is only the paper and a soft shadow of the pen (the real world above the paper). One accent colour at most, used once.

Not a whiteboard explainer (no hand, no marker, no erasing, no text-heavy boards), not ink wash (no tones, no brush bloom as a look), not a line-art animation with cuts and many strokes.

2. Materials & rendering

  • Paper: warm white (around #F4EFE4), procedural mottling (soft-light, large tile), long fibres that fade out when zoomed out (or they shimmer), a sparse paper-tooth speckle over the ink at close zoom, light vignette. All textures anchored to the paper; they move with the camera.
  • Ink is a filled polygon around the path (not ctx.stroke), mixed with paper colour to an opaque tone per point.
    • Width = base width of the current "voice" of the line × pen pressure × fine noise (±8 %); pressure from speed: 0.66 + 0.8·exp(−v/300) (fast = thin, slow = fat).
    • The line's character can change along the path (base width, alpha, tremble, dryness); blend over a short stretch at boundaries.
    • Ink bleed: the same polygon slightly wider, blurred on an offscreen layer, composited at ~20 %.
    • Pooling: extra round dots where speed drops low.
    • Tremble (perpendicular noise) and dry-brush gaps (long-scale noise + thin bristle strands) for age, fear or fatigue.
    • A stop leaves a teardrop-shaped blot: tip at the nib, belly sagging downward as it spreads, a dark tide line at the rim.
    • A screen-space minimum width: widths scale with zoom like a line under a macro lens, but clamp the zoom used for width during pull-backs so a wide view keeps its weight.
  • The pen is never drawn: a soft blurred wedge of shadow from the nib and a tiny contact dot. Hands, if any, appear only as shadows, each hand composited as one flat layer.
  • Path design: chapters written as SVG path strings, sampled by arc length, joined by tangent-continuous connectors; time assigned per point weighted by curvature.

3. Colour logic

  • Ink on paper. A warm black (around #1D1A17) on warm white; nothing else fills the frame.
  • One accent at most, used once, on a stretch of the line that means something; it returns to ink afterwards and stays visible in the final picture if the picture is revealed.
  • Examples of an accent's job: red for love or danger; blue for water or cold; gold for money or a prize. Never a second accent.

4. Type & subtitles

  • Text is written, like the line: a handwriting face (e.g. Caveat) for subtitles, ink at ~84 %, no box, centred near the bottom, written on left to right (~0.2 s + ~17 ms per character) behind a soft paper-coloured halo so passing lines never cross the letters; fade out ~0.45 s. Hold ≥ max(1.8 s, speech + 0.6 s).
  • Titles in a monoline connected script (e.g. Sacramento: itself a one-line drawing), written on in empty paper away from the drawing, gone before the camera moves into them.

5. Motion quality

  • Everything on ones (24 fps): the appeal is the continuous act of drawing; stepping breaks it.
  • Timing = chapter windows + curvature: within a window, time per point is weighted by 1 + K·turn (sharp turns get more time, smoothed so speed never jumps). Pin musical beats with marks: by arc-length fraction or by position ("the second time the pen passes here"). A stop is two marks at the same place.
  • Corners (speed minima at high turn) can be exported to the soundtrack as candidate note onsets.
  • Speeds: ~300–700 units/s for travelling lines, ~50–150 for small details. The most important stroke is usually the slowest.
  • Retracing over an existing line is legal and invisible (it only thickens slightly).

6. Camera grammar

A vocabulary, not a route. The camera is one continuous move: composition centre, zoom, a few degrees of roll, and a follow weight (0 = composed, 1 = locked to the nib); the follow point averages the nib over roughly −0.55…+0.4 s (lag and anticipation), with a soft clamp keeping the nib inside the central ~70 % of the frame. Opening and ending come from the topic.

Move What it expresses Can serve
Follow the nib (high follow weight) travel; momentum; a thread of time a journey; a process; a timeline
Composed frame, low follow weight a scene that must read as a whole a vignette; a joke; a diagram
Macro on the nib intimacy; the act of making a first touch; a signature; a detail
Hold with a slow push-in weight; a stop a loss; a doubt; a decision
Mirrored framing rhyme across time parent and child; before/after
Continuous pull-back everything was one picture a reveal; a map; a word
Lateral scroll with the line running ahead a horizon; a graph; a race a stock chart; a heartbeat; a road
Roll with the line vertigo; play a loop-the-loop; a fall; a dance

No cuts. Transitions are morphs: the last stroke of one image is the first stroke of the next.

7. Sound palette

  • Music: one solo instrument, one unbroken melodic line, the sound equivalent of the drawing: a bowed or plucked string (cello, violin, viola, harp), a solo woodwind (clarinet, flute, bassoon), a hummed voice, a single guitar. A second colour only as a rare accent (a chime, a pizzicato stretch). No pads.
  • Write the score to the drawing: key notes on marks and corners; fast line = short notes; a stopped line = one long note fading into silence; the highest note on the most important touch.
  • The pen on paper is the most important sound, synthesised from the pen speed: band-passed noise (brighter when fast, duller when slow), random paper-fibre ticks with density ∝ speed, amplitude ∝ √speed, panned with the nib's screen position; broken up by dry gaps; lighter and jerkier for a young hand. Plus: a wooden tap on the first touch, a faint wet swell for a blot, a tiny rub for a handoff, a page lift.
  • Silence is literal: zero the music bus including reverb tails; drop room tone.
  • Mix: music ducks ~5 dB and the pen ~4 dB under voice; −14 LUFS; grain 0 (the paper is in the render).
  • Voice: warm, few short lines that leave space for the line; place key words on picture beats with whisper word timestamps.

8. Native moves

A menu: use the ones your story needs.

  • The pen never lifts. Anything that is one continuous thing. Fits content like: a river from source to sea; a relay race; a production line.
  • The line is time. The stroke's character changes with age, mood or strain. Fits content like: a building aging; a runner tiring; a machine wearing out.
  • Transformation. One image morphs into the next. Fits content like: a seed becoming a tree becoming a table; a sketch becoming a product; a word becoming its object.
  • Stopping is an event. The nib stops, ink pools, music cuts to silence (1.5–3 s). Fits content like: a power cut; a pause for a minute's silence; a hesitation before a signature.
  • Reverse-designed scale reveal. Every vignette is secretly part of one big picture seen at the end. Fits content like: a city's landmarks forming its skyline; a company's milestones forming its logo; a recipe's steps forming the dish.
  • Handoff. The pen passes to another hand (as a shadow) and a new line begins. Fits content like: a teacher and a student; a founder and a successor; one generation to the next.
  • Line as graph. The line becomes a chart while staying a drawing. Fits content like: a heartbeat; a temperature record; a football match's momentum.

9. Pitfalls of the medium

  • Stray connectors ruin a reveal: every extra line reads as a wrinkle, beard or mask. Fix the topology (where each chapter enters and leaves), not the drawing. Plan it like an Euler path: a closed motif is a circuit (you leave where you came in); retrace or reorder chapters.
  • Each region of a final picture is drawn exactly once; connectors must fall on natural lines of that picture.
  • Test the reveal early and often: render the whole path at once at final scale after every change.
  • Lines drawn too close braid together once width is applied; keep a gap.
  • A round blot reads as a mole → a sagging teardrop.
  • Thin lines at wide zoom → clamp the width zoom.
  • Translucent hand shadows double-darken where they overlap → one layer per hand.
  • Titles collide with the drawing as the camera moves → check every frame of the title's window.
  • Whisper mishears short lines → rephrase rather than fight it.

10. Engine

In demo/: geom.js (samples SVG paths by arc length in the browser, adds tangent-continuous connectors, assigns time by curvature, marks and holds), ink.js (the line renderer: pressure, bleed, pooling, tremble, dry brush, accent stretch, blot, minimum screen width), paper.js (paper, fibres, tooth, vignette), cam.js (composition keys + nib follow + soft clamp), hands.js (pen and hand shadows), subs.js (written-on subtitles and titles). The drawing itself lives in one file of SVG path strings and a chapter table (face.js); replace it with your own path. Debug views (?all=1, ?cams=) render the whole path or many camera views in one session: see DEMO.md "Build notes".

11. Variation space

You decide what the line draws, whether it reveals one final picture, where it stops, the accent (or none), the opening and the ending. All far from our demo:

  • Structures: a line that is a graph (a data series drawn as a horizon; each peak and trough becomes a scene); two lines that start in opposite corners and are drawn in alternation until they meet; a loop (the line draws a scene and then retraces its way back to the start, which now means something else).
  • Openings: mid-line at speed, the pen already running across the paper; a finished drawing whose line then unravels into the story; a word written in script whose last letter becomes the first scene.
  • Endings: the line runs off the edge of the paper and keeps going; the ink runs out and the last stroke fades into dry scratches; the pen stops in mid-air over the paper before the last stroke.

How our demo was made (story, shots, score, end card, build): DEMO.md. Read it after your treatment exists.

Director's notes for the demo film

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: The Line That Never Lifted (47.5 s) · one-line.mp4 · source in demo/

A 30–60 second film: one man's life drawn as one line that, in the final pull-back, turns out to be his own face as an old man.

Story & structure

A film made of one continuous line on warm white paper. The pen never lifts: in code the entire film is literally one point array, from the first touch of the nib to the last frame. There are no cuts. The camera follows the nib like a tracking shot, with a little lag and a little anticipation, so the audience always watches the line being drawn.

Everything is a line: characters, places, objects, even time. No fills, no shading, no second weight of line, no background art. The only things on screen besides ink are the paper itself and a soft shadow of the pen (the real world above the paper). One accent colour at most, used once.

Learn the grammar from Osvaldo Cavandoli's La Linea (1971) — one line is both the world and the character, and transformations of the line are the jokes and the transitions; from Gjon Mili's 1949 photographs of Picasso drawing with light — the confidence and speed of a single gesture; and from Norman McLaren's Begone Dull Care and Boogie-Doodle — lines that are drawn to the music. Do not copy La Linea's character, its gibberish voice, or any specific continuous-line illustration.

Pick stories where the continuity of the line is the meaning. The demo used all five native powers and put the strongest one (the scale reveal) at the peak:

Native power Story use
The pen never lifts A life, a journey, a process, a history: anything that is one continuous thing. No cuts, ever; the camera follows the nib.
The line is time The character of the stroke changes with age or mood: light and fast in youth, full and steady in adulthood, trembling with dry-brush breaks in old age. One stretch can change colour (love, danger) and change back.
Transformation A kite string becomes a bicycle frame, a smile becomes a road. Scenes don't cut, they morph: the last stroke of one image is the first stroke of the next.
Stopping is an event When the nib stops, ink pools and blooms. A 1.5–3 s stop with music cut to silence is the strongest possible beat in this medium (loss, doubt, a decision).
Reverse-designed scale reveal Every vignette drawn in close-up is secretly a part of one big picture. At the end the camera pulls back and the audience sees that the whole story was a face (a tree, a map, a word).

Adapting any topic: find the one picture the story can end on, and the 6–8 moments that can each become a part of it. A company history → the founders' first desk, the first product, the first office… are the features of the logo. A city → its landmarks are the lines of a portrait of its founder. A love story → two lives drawn separately that join into one heart.

Emotional arc for 40–50 s: a single touch on blank paper (hook in the first 3 s) → quick, light early chapters → the one coloured chapter → a stop (silence, ink blooms) → the line resumes, changed → the final, slow strokes while the camera pulls back → the whole picture, held → a coda that passes the pen on.

Shots

The camera is one continuous move: keyframes of composition centre, zoom, a few degrees of roll, and a follow weight f (0 = composed, 1 = locked to the nib). The follow point is a weighted average of the nib position over −0.55…+0.4 s, which gives lag and anticipation. A soft clamp keeps the nib inside 72 % × 66 % of the frame.

Beat Camera
Opening Macro (z ≈ 4.3) on blank paper where the pen will land; the first vignette is composed, f ≈ 0.1
Traveling lines Follow (f 0.6–0.85), zoom out to ≈ 2.4
Each vignette Composed (f 0.15–0.35), framed so the finished drawing sits centred
The stop Hold, with a very slow push-in (4.6 → 5.4) through the silence
Mirror chapter Same framing as the chapter it rhymes with, mirrored
Reveal One continuous pull-back from ≈ 3 to 1 over 5 s while the last strokes are drawn, then hold ≈ 1 s
Coda Push in to where the pen rests for the handoff; pull back again as the new line runs; the end card sits in the empty paper
  • Everything on ones (24 fps). The appeal is the continuous act of drawing; stepping it would break the illusion.
  • Timing = chapter windows + curvature. Each chapter has a time window; within it, time per point is weighted by 1 + K·turn (sharp turns get more time, smoothed so speed never jumps). Pin musical beats with marks: by arc-length fraction f, or by position at:[x,y] ("the second time the pen passes the nose"). A stop is two marks at the same place.
  • Corners (local speed minima at high turn) are exported to the soundtrack as candidate note onsets.
  • Typical speeds: 300–700 units/s for traveling lines, 50–150 for small details (fingers, eyelashes). The last stroke of a life should be the slowest in the film.

Score structure

  • Music: one solo instrument, one unbroken melodic line — the sound equivalent of the drawing. The demo uses cello (cellos at low velocity, mono, slightly left, legato with 0.14 s overlaps), cellos_pizz for childhood, one hand_chimes note when the next generation starts. No piano, no string pad.
  • Write the score to the drawing: key notes on the marks and corners (the grip closes on the tonic, each kite corner is a pluck, the highest note is the first touch of the two noses, eyelashes of the last eye are the last three notes). Line fast = short notes; line stopped = one long note fading into silence.
  • Silence is literal: zero the music bus including reverb tails during the stop; drop room tone to 15 %.
  • The pen on paper is the most important sound: synthesized from the pen speed track — band-passed noise (bright 2.2–7.5 kHz when fast, dull 0.7–2.4 kHz when slow), random paper-fibre ticks with density ∝ speed, amplitude ∝ (v/520)^0.5, panned with the nib's screen position; broken up by the dry-brush gaps in old age; lighter and jerkier for the child. Plus a wooden tap on the first touch, a barely audible wet swell for the blot, a tiny rub at the handoff.
  • Voice: warm, retrospective male narrator (Kokoro am_liam, speed 0.84; high-passed at 85 Hz, low-passed at 7.2 kHz to soften it). 5–6 short lines that leave space for the line. Place them by whisper word timestamps so key words land on picture beats ("holding on" on the grip, "goes on" when the pen resumes). Music ducks ≈ 5 dB and the pen ≈ 4 dB under voice. Loudness −14 LUFS, grain 0 (the paper texture is in the render).

Palette, props & the reverse-designed face

Reverse design is the core technique. Draw the final picture first, then cut it into chapters, then design each chapter so it reads as its own scene in close-up and as a feature of the final picture. Rules that made this work in the demo:

  • Each region of the final picture is drawn exactly once. Connectors between chapters must fall on natural lines of the final picture: lens rims, nasolabial folds, crow's feet, the jaw contour, a hair. Every "extra" connector becomes a stray wrinkle, a jowl or a beard in the reveal.
  • Plan the topology like an Euler path. A closed motif such as a mouth (smile + upper lip + two profiles) is a circuit: you leave where you came in. Either route the next chapter from the same point (a retraced fold is invisible) or reorder the chapters. We moved "loss" before "child" purely for topology, then made it the emotional point ("and then it goes on").
  • Retracing is legal and invisible: going back over an existing line only thickens it slightly. In the demo the pen "reels in" the kite by retracing its tail and string back down to the head.
  • Test the reveal early and often: render the whole path at once, at final scale, after every change (?all=1&cam=0,-170,1).

Mapping used in the demo (old man's face): left ear = his birth (a baby fist curled into the C of an ear, gripping an adult finger that is also the arm of his glasses); bald dome = kite string, the kite = his single hair; glasses = the bicycle (wheels = lenses, saddle = left brow, handlebar = right brow, frame = sides of the nose); mouth = first love (two profiles nose to nose; their crowns form the M of the upper lip, the red smile below); nose = the house (the ring and a round window are the nostrils); right eye + tear = the loss; right ear = his own child (mirror of his birth); jaw contour = old age; left eye closing = the last stroke.

Paper: warm white #F4EFE4; procedural mottling (1400-unit tile, soft-light), long fibres (260-unit tile, fading out when zoomed out so it does not shimmer), a sparse "paper tooth" speckle screened over the ink at close zoom; vignette 0.13 multiply. All textures are anchored to the paper and move with the camera.

Ink: warm black #1D1A17, rendered as a filled polygon around the path (not ctx.stroke), mixed with paper colour to an opaque tone per point.

  • Width = age base width × pen pressure × fine noise (±8 %). Pressure from speed: 0.66 + 0.8·exp(−v/300) (fast = thin, slow = fat).
  • Base widths (paper units): child 2.4 (alpha .82), teen 2.5, adult 2.9 (.96), old 2.7 (.93), the next generation 2.0 (.76). Blend styles over ±60 units at chapter boundaries.
  • Ink bleed: the same polygon slightly wider, drawn to an offscreen layer, blurred (≈0.9 × zoom px) and composited at 22 %.
  • Pooling: extra round dots where speed < 45 units/s.
  • Old age: perpendicular tremble (two noise octaves, amplitude up to ≈1.1 units), dry-brush gaps from long-scale noise plus three thin bristle strands; reduce the dryness again for the final strokes so the last gesture is clear.
  • The stop: a teardrop-shaped blot (tip at the stopped nib, belly sagging downward as it spreads, dark tide line at the rim).
  • Keep a screen-space minimum line width. Line widths scale with zoom like a real line under a macro lens, but during the pull-back clamp the zoom used for width to ≥ 1.3 (≈ 3–4 px at the reveal). Without it the final picture looks like a pencil sketch and loses weight.

Colour: at most one accent, used once and kept in the final picture where it means something. The demo's red #B3332B starts exactly at the mouth corner and returns to ink at the next chapter, so the old man's only colour is his smile.

The pen: never drawn. Only a soft shadow (blurred wedge from the nib toward the lower right, length ≈ 560 × zoom px, alpha .15) and a 1–4 px contact dot. Hands appear only as shadows at the handoff (each hand composited as one flat shadow so overlaps don't darken).

Titles, subtitles & end card

  • Subtitles: Caveat 500, 46 px, ink at 84 %, no box, centred with the baseline 100 px from the bottom; they are written on left to right (0.2 s + 17 ms per character) behind a soft paper-coloured halo so passing ink lines never cross the letters; fade out over 0.45 s. Stay ≥ voice + 0.6 s and ≥ 1.8 s.
  • Title: Sacramento (a monoline connected script — itself a one-line drawing) 76 px, written on over 1.6 s in empty paper away from the current vignette, with a small Caveat sub-line. Keep it short enough to disappear before the camera moves into it.
  • End card: Sacramento title on two lines, "ONE-LINE DRAWING" in Caveat 600 with wide tracking, the credit line below, written in the empty paper beside the final picture while the new line is still being drawn. Its "LemoLab × Claude Opus 5.5" line (subs.js) belongs to this library's demo only: a user's film carries no LemoLab credit and no copy of this card.

Pitfalls we hit (demo record)

  • Stray connectors ruin the reveal. Every early version had lines that read as a beard, jowls, a bib or a mask. Fix the topology (which chapter enters and leaves where), not the drawing.
  • A kite drawn straight up from the head made a pointed onion dome. Let the string be the single hair and retrace (reel in) back to the crown so the dome stays a clean arc.
  • Hands jutting sideways from the temples read as bolts. Curl the baby fist into the vertical C of an ear, fingertip hidden inside, knuckles as four short round bumps (long loops read as springs).
  • Two profiles closed by an arc over their heads read as a goblet (Rubin's vase). Let their crowns become the M of the upper lip instead, and join their necks into the smile at one point.
  • Profiles too close braid together once line width is applied; keep ≥ 5 units between lips, touch only at the nose tips.
  • Eyes: almond shapes with bags read as toothy mouths; a closed lid (‿) with three short lashes reads best.
  • A round blot reads as a mole. Make it a teardrop that sags as it spreads.
  • Thin lines at the reveal. Clamp the width zoom (see "Palette, props & the reverse-designed face").
  • Hand shadows as separate translucent shapes double-darken where fingers overlap — composite each hand as one layer.
  • Titles collide with the vignette as the camera moves. Check the title against every frame of its window, not just the first.
  • Whisper mishears: "Sometimes it stops" was heard as "But sometimes it stops" and "Your turn." as "Your turns" — rephrase ("Sometimes the line stops.", "Your turn now.") rather than fight it.
  • zsh: ===== as an echo separator is expanded; heavy machine load makes still.mjs slow — the page supports ?cams= / ?camt= to render many views in one browser session.

Build notes

styles/one-line/demo/
  face.js    THE drawing: every chapter as SVG path strings + transforms, and the chapter table (time windows, marks, holds)
  geom.js    samples SVG paths by arc length (browser SVGPathElement), adds tangent-continuous connectors, assigns time (curvature-weighted, marks, holds)
  ink.js     line renderer (pressure, bleed, pooling, tremble, dry brush, red stretch, teardrop blot, min screen width)
  paper.js   procedural paper, fibres, tooth, vignette          cam.js    composition keys + nib follow + soft clamp
  shots.js   camera keyframes                                    hands.js  pen shadow and hand shadows
  story.js   single source of truth for voice/subtitle/title/handoff times
  subs.js    written-on subtitles, title, end card               main.js   render(t), debug modes, events for the mix
  lines.json voice script   music/score.py  solo cello score   mix.py  pen-scratch foley + voice + music   build.sh
  1. Design the final picture in face.js and iterate with node core/render/still.mjs styles/one-line/demo 0 --q 'all=1&nopen=1&nosub=1&cams=0,-170,1.0' (add more ;x,y,z views to check vignettes in the same run).
  2. Voice: core/tts/tts.py lines.json voices → asr_check.py; read voices/words.json and place lines in story.js.
  3. Set chapter windows and marks in face.js; node demo/tools/probe.mjs 0.5 prints part boundaries and the nib track to write camera keys.
  4. node core/render/events.mjs styles/one-line/demo → music/score.py → mix.py.
  5. node core/render/video.mjs styles/one-line/demo --fps 24 --workers 3 (1140 frames ≈ 30–45 s) → sh core/render/mux.sh out/video24.mp4 mix.wav one-line.mp4 24 0.
  6. Or simply sh styles/one-line/demo/build.sh.