Blueprint — our demo

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

Demo: Patent Pending: The Cloud Catcher (46.7 s) · blueprint.mp4 · source in demo/

Story & structure

An inventor's patent drawing of a cloud-catching machine: it is drawn, exploded, runs perfectly, but there are no clouds; the hand revises the drawing, the revision cloud becomes a real rain cloud, it rains on the drawn garden and a flower grows. The style's story powers, as noted for this demo:

The whole film happens on one sheet of blueprint paper lying on a dark drafting table. Everything is white line work on uneven Prussian blue: centre lines, outlines, hatching, dimension lines, leader lines with numbered balloons, a title block and a notes column. The camera moves over the sheet like an eye reading a drawing. It is a 2D line-drawing language. You may use orthographic and oblique/isometric projection, but never 3D rendering.

The charm is the tension between rigorous engineering convention and whimsy. The drawing is dry and exact. The notes carry the jokes ("10 · COUNTERWEIGHT (GRANDMOTHER'S IRON)"). And once per film, a drawing symbol breaks the rules and becomes real.

Learn grammar from, but never copy: the moving technical drawings in Prologue Films' Iron Man (2008) end credits, Leonardo's Codex Atlanticus pages, 19th-century US patent drawings (Fig. 1 / Fig. 2, part balloons, fine-line shading) and the automaton drawings in Hugo (2011). No Marvel elements, no real patents, no real inventor's machine or signature.

The machine (or object, or plan) is the character. Parts act: a boom lifts hopefully or droops, a weather vane perks up or sags, bellows breathe, a gauge needle twitches at zero. The inventor appears only as a hand shadow with a pen tip, or as a signature.

Native power How the demo used it
Drafting order The object draws itself the way an engineer would: centre lines → outlines → gears/detail → hatching → dimensions → balloons → label. Each layer lands on a beat.
Live annotations Dimension lines measure moving parts and the numbers change. Leader lines and balloons fly with exploded parts. A section line A–A sweeps across a housing and reveals the inside.
Fig. numbers as transitions "FIG. 1" gets struck through and rewritten "FIG. 2 · EXPLODED VIEW", then "FIG. 3 · IN OPERATION".
Projection is a camera Animate the oblique depth factor from 0 (flat elevation) to 0.5. The line drawing "turns" and gains thickness, with no 3D renderer. Exploded parts fly along the depth axis.
Drawing symbols made real (put this at the emotional peak) A revision cloud becomes a real rain cloud. Other candidates: a dimension arrow becomes a real arrow, a hatch pattern becomes rain, a centre line becomes a road, a weld symbol sparks. Rule: this one symbol is the only thing in the film that leaves the drawing language. It gets soft volume, gradient, glow, and a shadow that falls across the drawing's lines.
Cyanotype and water Rain on the sheet: each drop blooms deeper blue with a pale tide line, and white lines inside the stain go soft. A drop on the signature makes it bleed.
The title block Title card = sheet header. Status field = the story's verdict (a red rubber stamp is the film's only non-blue colour). End card = the title block's last row being lettered in (STYLE / DRAWN BY).

How the topic is adapted (and the same recipe for others): turn the topic into something designed and let the drawing find a flaw that only the drawing can fix. A product launch becomes Fig. 1, exploded view, operation, then a revision that adds the missing feature. A love story: two machines on one sheet, and a revision cloud draws the bridge. A history lesson: a city plan revised again and again (REV. 1, 2, 3).

Demo emotional arc (46.7 s): curiosity (blank sheet, the object is drawn) → pride (exploded view) → excitement (it runs, on the beat) → the flaw (it works perfectly but the world lacks something; music stops) → the hand revises the drawing → the symbol becomes real (suspended chord, no voice) → payoff → echo (stamp, signature, title block).

Shots

Beat Camera
Opening Whole sheet on the dark table. The roll snaps open, then the T-square. Establishing shot only.
Title Push to the header lettering.
Drawing Medium on Fig. 1, machine ~80% of frame height, empty sky on the right (subtitles live there).
Exploded view Pull back so the machine is centre-left and the parts list peeks in on the right.
Operation (the memorable shot) Cut to a 2× close-up of crank and gears, then track along the drive chain up the mast to the boom and follow the net's arc. The camera follows the path of force.
The flaw Medium-wide with lots of empty sky. The emptiness is the joke.
Revision Locked-off while the hand shadow draws. Hold one beat on the finished symbol.
Symbol comes alive Slow push-in, no voice.
Payoff Follow the object down to the target, push in on the result (the flower).
Ending Pull back to the whole sheet (scale reveal). The stamp lands in the wide. Push to the title block for the end card.

Keep storytelling shots close. Only the opening and closing establishing shots are full-sheet.

Demo motion numbers: exploded parts leave one every ~0.055 of the progress on eighth notes and come back one eighth note per group with a brass click; gears advance 7.5° (one tooth) per eighth note with a 0.35-beat ease-out; bellows breathe per beat; failure over ~1.5 s (gears slow, bellows deflate, boom sags, vane droops); joy = vane snaps upright, needle overshoots to 1. The motion rules:

Score structure

Palette & props

Titles & subtitles

End card

End card: the title block. The last row is lettered in: STYLE: BLUEPRINT / DRAWN BY: LemoLab × Claude Opus 5.5. The "LemoLab × Claude Opus 5.5" sign-off belongs to this library's demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

styles/blueprint/demo/
  paper.js    WebGL2 compositor: procedural cyanotype sheet, ink bleed, wet stains, shadows, stamp, roll
  draw.js     drafting engine: camera, oblique projection, draw-on polylines, solids, hatching, dims, balloons, text
  machine.js  the Cloud Catcher: parts, gear meshing, explode offsets and paths, garden and flower
  sheet.js    border, header, title block, parts list, notes, revision cloud ↔ cloud, rain, hand shadow, stamp
  film.js     the whole timeline (108 BPM grid): cameras, acting, subtitles, sound events
  main.js     page entry (?frame=1|2|3 gate frames, ?nosub, ?poster)
  mix.py      foley + voice + music ducking       music/score.py  original score (sampler)
  tools/      subs.mjs (SUBS → subs.json), check_mix.py (whisper on the final mix)
  1. node core/render/still.mjs styles/blueprint/demo --range 0:46:1.5 then sheet.py to review. Iterate per section.
  2. .venv/bin/python core/tts/tts.py lines.json voices, then asr_check.py (6/6 OK).
  3. node core/render/events.mjs, then music/score.py, then mix.py, then tools/check_mix.py.
  4. node core/render/video.mjs styles/blueprint/demo --fps 24 --workers 3 (1120 frames, Canvas2D + WebGL, ~30 s).
  5. sh core/render/mux.sh out/video24.mp4 mix.wav blueprint.mp4 24 4. Or run everything with sh styles/blueprint/demo/build.sh.

Pitfalls