Crayon Picture Book 蜡笔儿童绘本

The Moon Can't Sleep·52s·Lemo-Opuscarby Lemomo

A picture-book page drawn live in wax crayon on toothy paper, with a watercolour wash that reveals what the crayon was hiding.

The demo: The moon can't sleep, so a little girl climbs onto the roof to sing it a lullaby.

Picture booksBedtime storiesKids' learning
Style prompt · STYLE.md

A picture-book page drawn live in wax crayon on toothy paper, with a watercolour wash that reveals what the crayon was hiding. References (grammar only): Raymond Briggs' The Snowman (1982) (hand-textured frames that breathe, wordless tenderness, a lyrical passage carried by one tune, still backgrounds with living figures). Copy none of its characters, song or imagery, and never name it in the film.

1. Essence, and what it is not

A children's picture book page being drawn while you watch: wax crayon on warm off-white paper, a limited box of crayons, child-logic perspective, colour that spills past the outline, and every line gently boiling because each frame is a fresh drawing. The tone is picture-book storytelling: tender, unhurried, music-led, a few lines of narration that are literally the words printed on the page. Any topic becomes one page of a picture book that gets finished: drawing and colouring are the plot.

It is not "cute vector art with a crayon filter": the look comes from material physics (wax sticks only to the peaks of the paper tooth, pressure decides how much of the tooth it reaches, watercolour is repelled by wax). Not a whiteboard explainer (no marker, no hand), not a watercolour painting (the wash is a guest, the crayon the host), not a chalkboard.

2. Materials & rendering

  • Paper: warm off-white (around #f4efe3). The tooth is anchored to the page (it pans with the camera; on zoom two octaves cross-fade so grains stay ~1 px on screen), never screen-fixed: three octaves of value noise plus a horizontal fibre term. A final pass embosses it (lit top-left), less where wax filled the tooth. Low mottling ±2 %, warm vignette.
  • Wax adhesion (the core rule): every crayon layer is a canvas where RGB = colour and A = pressure; the shader deposits wax where tooth > 1 − k·pressure (soft edge). Light pressure = speckled peaks; heavy = almost solid, slightly darker.
  • Strokes: ribbons with a low-frequency hand wobble (1–2 px), width ±15 %, tapered ends, a denser core and 1–2 thin streaks. Characters and buildings get the heaviest outline; refined "adult" objects about half.
  • Colouring: back-and-forth zig-zag hatching with a visible gap, each pass at a slightly different pressure; overshoot the outline by a few px; a lighter cross-hatch pass on big areas.
  • Watercolour wash: a separate density canvas multiplied over the page. Pigment pools at edges (density minus blurred density), granulates in the deepest pits, blooms with noise, and is resisted by wax (density × (1 − ~0.9·wax coverage)). Brush strokes are wide bands with bristle streaks and a darker wet leading edge while moving.
  • Occlusion: a front part erases what is behind it inside its outline; characters "keep the paper white" behind them (a knock-out that restores paper and resets wax), the way a child draws the figure first and colours around it.
  • Characters: a skilled adult imitating a child: round head (≈2.5 heads tall), dot eyes with a white-wax catchlight, pink cheeks, tube limbs, mitten hands, bold hair shapes; objects with faces get big eyes and eyelids. Child perspective: gable front + slanted side wall; people bigger than doors.

3. Colour logic

  • A box of about a dozen crayons, never more. Outlines in one dark colour (indigo, dark brown, plum), never black. One white crayon reserved for wax resist.
  • At most one watercolour per film, chosen for what it reveals (ultramarine for night, rose for dawn, sap green for rain). It never paints the characters.
  • Saturated crayon on lots of bare paper; value comes from pressure, not extra hues. One accent on a character may echo the story.
  • Example boxes: seaside — navy line, coral, sand, teal, turquoise, lemon, white; orchard — brown line, russet, apple red, mustard, olive, plum, cream, white.

4. Type & subtitles

  • Subtitles are the book's printed words: a handwriting face (Patrick Hand, OFL), 50–56 px, in the outline colour, bottom-centre, each glyph tilted and offset, boiling on twos, written left→right in ~0.35 s, on a ragged knock-out patch of blank paper (never a dark box). Hold ≥ max(1.8 s, speech + 0.6 s); none during wordless music.
  • Titles are hand-lettered on the page (Gaegu Bold or similar), written letter by letter. You can't fade crayon: a title leaves by the camera moving off it, a page turn or being coloured over.

5. Motion quality

  • Everything drawn steps at 12 fps (lines, colouring, characters, boil seed); camera, the wash's leading edge and twinkles run at 24 fps.
  • Boil: each stroke re-jitters offset (<1 px), wobble and hatching rows every 2 frames. Characters full, background lines ~0.6, background colouring still (it also halves the bitrate). Calm the boil to about half when the film goes quiet.
  • Drawing on: lines reveal along their length in 0.4–0.9 s; colouring row by row; text letter by letter.
  • Acting: substitution, a new drawing per pose on the beat; two key drawings alternate for a repeated action. Big simple poses; a child's drawing doesn't in-between.
  • Colouring is an action: being coloured in is doing (a coat scribbled on = putting it on; pink scribble = blushing; a wash = night falling).

6. Camera grammar

The camera moves over a large page. A vocabulary, not a route; every move needs a reason. Opening and ending come from the topic.

Move What it expresses Can serve
Locked full page Paper before drawing; the whole picture a beginning from nothing; a tableau; a reveal that needs the page
Push toward a character "This one" a title giving way; a feeling arriving
Locked medium close-up Substitution poses act comedy; a decision; a small failure
Tilt along a gaze We see what they see discovery; longing; something huge
Tight follow The world draws itself ahead of the subject a brave act; a path; building
Held wide while the brush moves The material is the motion a wash reveal; weather; day or night falling
Slow truck across the page Reading left to right a list; a sequence; a family
Pull out past the page edge The page is an object a book on a table; a fridge drawing
Page turn New chapter, time jump before/after; the next day

Key figures ≥ 1/4 of frame height in close shots; keep bare paper at the bottom for the printed words. Transitions: drawing on, colouring over, the wash, a pan or a page turn; never a dissolve.

7. Sound palette

  • Small wooden and metal-toothed instruments, no strings or grand piano: ukulele or nylon guitar, clarinet or bassoon (bass, humour), music box (can wind down with a pitch droop), glockenspiel or celesta (a note per uncovered sparkle), toy piano (one note per counted thing), flute or recorder as the singing voice, shaker and woodblock. A simple lilt; one theme can be held back and heard in full once.
  • Silence is a beat: a full beat of nothing after a failure; a short breath before a wordless passage.
  • Foley follows the material: crayon = stick-slip band-passed noise whose grain follows stroke speed (colouring = rhythmic swishes); wet brush = soft low-passed noise with bristle grain, panned with the stroke; felt puffs, fabric swishes, a sharpener, a crayon set down, a page turn (lift / whoosh / flap). Ambience: faint crickets or birds, room tone, a distant clock.
  • Mix: music under narration, rising for wordless passages; metal voices get a gentle high lift. −14 LUFS.
  • Voice: a soft, warm storyteller, short lines with breaths. Compress before EQ, cut the highs, de-ess, a warm near-field reverb far under the dry voice; a few dB over the bed, never louder. Whisper-check every line, dry and on the final mix. Avoid famous-book phrases.

8. Native moves

A menu: use the ones your story needs.

  • Wax resist. White crayon is invisible until a wash passes; hide the payoff in plain sight from the first frame. Fits content like: a farewell message; a product's hidden feature; roots under a garden.
  • Drawn live. The world draws itself just ahead of the hero. Fits content like: a bridge plank by plank; a journey map; a company timeline.
  • Colouring is an action. Fits content like: a town lighting up window by window; a team putting on kit; fruit ripening.
  • Boil. A held frame is alive; calming it quiets the film. Fits content like: a pause for thought; grief; rest.
  • Child logic. Wrong perspective, faces on objects, numbers in the sky. Fits content like: a launch countdown; a talking house on insulation; a sun that clocks out.
  • It is a book. Pull back to the object; turn the page. Fits content like: a year in review; a "chapter two"; a thank-you card.

9. Pitfalls of the medium

  • Gaps between wash bands leave white stripes → overlap bands and cover all intended paper.
  • Wavy band edges and wide light streaks read as hills → small high-frequency waviness, thin faint streaks (α ≤ 0.12).
  • Light-pressure colouring goes muddy under a wash → pressure ≥ 0.8 or cross-hatch wherever the wash crosses.
  • Text where the wash passes survives it (wax resists) → place it elsewhere or accept it.
  • Characters vanish under a wash → composite them after the wash.
  • Outlines over hair read as a headband → outline hair masses on their outer edge only.
  • Knock-out drawn into a plain layer shows as grey crayon → use a dummy canvas.
  • Page turn from rectangle strips shows a staircase → an affine transform per strip.
  • Double vignette/emboss at a page-to-object transition → page with vignette 0, ramp the outer scene's in.
  • Screen-fixed tooth bloats the file → anchor it, don't boil background fills, no ffmpeg grain.
  • Reverb IR from unit-variance noise is hugely loud → scale wet to ~18 dB under dry.

10. Engine

In demo/: gl.js (WebGL2 compositor: paper, wax adhesion, knock-out, watercolour + resist, emboss/vignette/lamp), crayon.js (line ribbons with taper, streaks, boil; fill hatching with overshoot; text; shapes), rig.js (occlusion + knock-out parts, limb tubes), sheet.js (model sheets, ?test=model&page=…), end.js (page on a desk, page turn). Draw your own character's model sheet with them before any shot. File map and commands: DEMO.md.

11. Variation space

You decide the structure, the characters (or none), the page, the opening, the ending, the camera path, the pacing, the crayon box and whether there is a wash. All far from our demo:

  • Structures: a colouring-book page (all outlines there from frame one; each idea colours one area); a flip through several pages (one stage per page, joined by turns); two children, one page (two crayon colours argue, then combine).
  • Openings: a finished page rubbed out to begin again; a crayon tip in extreme close-up mid-stroke, pulling back; a crumpled page being flattened.
  • Endings: the page taped to a fridge among others; a last scribble filling the frame with one colour; a stray splash of water finding the white-wax message.

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 Moon Can't Sleep (52 s) · crayon-book.mp4 · source in demo/

Story & structure

A bedtime story on one page: the moon can't sleep; she tries counting sheep and fails; a girl at a lit window sees her, climbs a ladder that draws itself rung by rung, and a sweep of watercolour reveals the stars that were drawn in white crayon all along. The moon is tucked in under a quilt; the camera pulls back to the book on a table and turns the page to "The End".

The demo was written for the rule "the act of drawing and colouring is the plot" and spent all six native moves, with the strongest (wax resist) at the emotional peak: the 250 white-wax stars were on the page from the first frame and were uncovered by the wash on the song.

Arc (45–55 s): blank page → a character is drawn and wakes up (hook in 3 s) → a small comic problem (failed sheep count) → a second character (the girl) → a small brave act (the ladder) → the wash reveal on the song (peak, no narration) → everyone sleeps → pull back to the book, page turn.

How the old guide mapped the native moves onto this story:

Native move How the demo used it
Wax resist Hid the payoff (the stars) in plain sight from the first frame; a sweep of watercolour uncovered it at the climax.
Drawn live Opened on a blank page; the ladder grew rungs under the girl's hands.
Colouring is an action Pulling up a blanket = scribbling a quilt over the moon; night falling = the wash.
Boil Calmed to half amplitude when the story went to sleep.
Child logic A face on the moon; numbers written in the sky while counting sheep.
It is a book Ended by pulling back to the physical book on a table, the crayons beside it, and turning to "The End". A one-take film over one page is explained by that reveal.

The old guide's adaptation examples (a product drawn in outline and a wash revealing the hidden feature; a history page coloured in event by event; a thank-you film with names in white crayon) are now the "Fits content like" lines in STYLE.md §8.

Shots

One continuous camera over one page (world 3200×1800; full page = scale 0.6).

Beat Camera
Opening Locked full page, flat: the audience sees the paper before anything is drawn
Title leaves Push toward the moon instead of fading the title (you can't fade crayon)
Comic beat Locked medium close-up; substitution poses do the comedy (tossing = a scrunched face rotated 35°, on the beat)
Discovery Tilt along the moon's gaze (the camera is the moon looking down)
Two-shot The moon peeking in from the frame edge, the girl small in a lit window
Brave act Tight follow tilt; the ladder draws itself just ahead of her; climbing alternates two key drawings per rung
Wash reveal Held wide. The brush and the music do the motion. Small figure, huge sky
Resolution Slow push-in on the moon falling asleep, then tilt to the girl
Ending Pull out until the page becomes a book on a table; page turn; glide onto "The End"

Why this route, for this story: a bedtime story wants one uninterrupted page; the locked blank page put paper before drawing; the held wide at the reveal let the material be the motion; the pull-back explained the one-take. Each of these is one choice from STYLE.md §6, not the style's default.

Sleep grammar used on the moon: eyelids come down as yellow scribbles, a nightcap is drawn on, a quilt is coloured up from below with the folded edge appearing first, a tiny hand tucks it in.

Score structure

Music first, in 3/4 at 72 BPM (bar = 2.5 s). Music box (lead), toy piano (comic waltz, one note per sheep / per rung), flute as the singing voice, clarinet for bass and humour, glockenspiel for every star the wash uncovers (driven by glint events). No strings, no grand piano. The lullaby theme appears in full exactly once, at the wash; the opening music-box motif is its first phrase. It ends with the music box winding down (ritardando + slight pitch droop).

Silences: a full beat of silence after the failed sheep count; a 0.3 s breath before the song.

Foley specific to this film: sheep landing = felt puff; tossing = blanket swish; page turn = lift / whoosh / flap. Night = very faint crickets; the desk = warm room tone and a distant clock.

Mix: music −7 dB under narration, +4 dB for the wordless song; music-box and glockenspiel stems +3 dB with a gentle 3–7 kHz lift.

Voice: Kokoro af_heart, speed 0.86–0.90 (v3 re-voice: bf_emma read too bright and hard), 6–8 short lines. Chain: high-pass 75 Hz → compress first (thr 0.2, 2.5:1, 8 ms / 140 ms) → low shelf +1.5 dB @220 Hz, −2 dB dip @3.2 kHz, high shelf −4 dB @6 kHz → split-band de-esser (4.8–10 kHz, 4:1) → per-line RMS match → warm near-field reverb (12 ms pre-delay, early reflections, 0.7 s low-passed tail, wet ~−17 dB). Music ducks ~7 dB and foley ~4 dB under it; voice ~7–10 dB over the bed. "Goodnight, Moon" was avoided as a famous-book phrase ("Night, night." instead).

Palette & props

  • Paper #f4efe3; tooth octaves 1.35 / 2.9 / 6.3 px plus fibre term (x/10, y/1.9), contrast smoothstep(.16,.86); emboss strength ~0.55.
  • Wax threshold tooth > 1 − 1.22·pressure (soft edge ±0.07); darkening ×(1−0.1·p²).
  • Outline wobble ~1.7 px; outline width ~7 px on characters, 8 px on buildings, 4–5 px for refined objects. Hatching gap ~10.5 px, width ~11 px, pressure 0.72–1.14×, overshoot 0–7 px; cross-hatch at 40–50 %.
  • Boil: offset ±0.8 px, wobble ±0.9 px; background lines ×0.6; after the characters fall asleep ×0.5.
  • 12 crayons: ink/indigo #2d3263 (all outlines), yellow #f5c63c, orange #ec8a3c, red #d4483c, pink #ee8ea4, peach #f4c7a4, brown #7a4b31, ochre #e7b867, green #62a24c, sky #79acd9, violet #6a5aa6, white #fbfaf4 (wax resist). One watercolour: ultramarine, transmission (0.15, 0.19, 0.44). Wash resist density × (1 − 0.93·smoothstep(.12,.55, waxCoverage)).
  • The girl: ≈2.6 heads tall, scalloped fringe, a yellow star hair-clip that echoes the stars. The moon: big eyes, eyelids, eye-bags, nightcap, patchwork quilt. The sheep. The house (gable + slanted side wall + big roof), a round tree with red dots, the ladder, 250 white-wax stars, 3 wash bands.

End card

Title: hand-lettered on the page in two lines in a corner (Gaegu Bold), written on letter by letter while the colours are scribbled in. Subtitles: Patrick Hand 54 px, indigo crayon.

End card: the next page of the book — "The End" (Gaegu Bold), a small crescent doodle, the style name and credit in Patrick Hand. 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/crayon-book/demo/
  gl.js      WebGL2 compositor: paper, wax adhesion, knock-out, watercolour + resist, image pass, final emboss/vignette/lamp
  crayon.js  stroke engine: line (ribbons, taper, streaks, boil), fill (zig-zag hatching, overshoot), text, shapes
  rig.js     parts with occlusion + knock-out, limb tubes, curves
  chars.js   the girl (views × expressions × poses), the sheep, the moon (expressions, nightcap, quilt, crescent face)
  world.js   the page: house, tree, grass, ladder, 250 white-wax stars, 3 wash bands
  film.js    timeline, one-take camera, events, subtitles     end.js  book on a crayon desk, page turn, The End
  sheet.js   model sheets (?test=model&page=girl|moon)        lines.json, mix.py, music/score.py, build.sh
  1. node core/render/still.mjs styles/crayon-book/demo 0.5 --q 'test=model&page=girl' — model sheet first; iterate the character before any shot.
  2. core/tts/tts.py lines.json voices → asr_check.py until all OK.
  3. Build the timeline in film.js; review with still.mjs --range 0.5:51.5:1 + sheet.py (two rounds minimum).
  4. node core/render/events.mjs → music/score.py (cues on the 72 BPM grid, glockenspiel from glint events) → mix.py.
  5. node core/render/video.mjs styles/crayon-book/demo --fps 24 --workers 3 (1248 frames ≈ 80 s on an M-series Mac).
  6. CRF=26 sh demo/tools/mux.sh out/video24.mp4 mix.wav crayon-book.mp4 24 0 — no added grain (the paper is the grain); the local mux copy exposes CRF. demo/build.sh runs the whole chain from TTS to the finished film.

File size: screen-fixed tooth made the film 190 MB; anchoring the tooth, not boiling background fills, no extra grain and CRF 26 → 74 MB with no visible loss.

Pitfalls tied to this demo's props:

  • White gaps between wash bands and a sky that stopped above the ground: the last band must reach down to the grass line; sky exists wherever there is paper.
  • Walls coloured at light pressure turned muddy blue under the wash.
  • Titles and numbers written in the sky survived the wash (the counted sheep numbers): the title went in a corner the wide shot won't show.
  • Outlines drawn over the girl's hair read as a headband.
  • A blanket drawn as a flat violet half read as the moon's dark side. It needed quilt features: patchwork squares, stitch lines, star appliqués, a light turned-down edge, a draped hem that spills past the disc, and a hand that pulls it up.
  • Double vignette/emboss at the book transition: the desk's vignette, emboss and lamp light ramp in from 0.
  • The heroine disappeared into the night because the wash sank into her colouring gaps; she is composited after the wash.