wizz-method 2.22.0 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +7 -1
- package/package.json +1 -1
- package/removals.txt +3 -0
- package/skills-registry.yaml +93 -5
- package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +27 -0
- package/src/modules/lowticket/README.md +2 -1
- package/src/modules/lowticket/module.yaml +1 -1
- package/src/modules/lowticket/skills/wizz-clone-do-expert/SKILL.md +86 -0
- package/src/modules/lowticket/skills/wizz-clone-do-expert/references/clone-prompt-template.md +21 -0
- package/src/modules/wizz/_shared/video-pipeline.md +2 -0
- package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +2 -2
- package/src/modules/wizz/agents/wizz-growth/customize.toml +7 -2
- package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +3 -2
- package/src/skills-lib/wizz-ios-build/SKILL.md +61 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +2 -2
- package/src/skills-lib/wizz-paywall-upgrade-cro/SKILL.md +1 -0
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/README.md +13 -13
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/SKILL.md +11 -7
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/assets/template.html +8 -21
- package/src/skills-lib/wizz-pesquisa-de-publico/references/interview-mode.md +69 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +23 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/design-sources.yaml +73 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +5 -1
- package/src/skills-lib/wizz-seo-audit/SKILL.md +4 -0
- package/src/skills-lib/wizz-seo-audit/references/gsc-regex-perguntas.md +64 -0
- package/src/skills-lib/wizz-signup-flow-cro/SKILL.md +1 -0
- package/src/skills-lib/wizz-signup-flow-cro/references/trial-abuse.md +40 -0
- package/src/skills-lib/wizz-ui-ux-pro-max/SKILL.md +1 -1
- package/src/skills-lib/wizz-ui-ux-pro-max/references/common-rules-checklist.md +11 -0
- package/src/skills-lib/wizz-video-effects/SKILL.md +3 -1
- package/src/skills-lib/wizz-video-effects/assets/effects.config.template.json +10 -0
- package/src/skills-lib/wizz-video-effects/references/data-contract.md +2 -0
- package/src/skills-lib/wizz-video-effects/references/gates.md +1 -0
- package/src/skills-lib/wizz-video-effects/references/one-take.md +41 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_one_take.py +159 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_one_take.py +126 -0
- package/src/skills-lib/wizz-video-styles/LICENSE-lemo-opuscar.txt +21 -0
- package/src/skills-lib/wizz-video-styles/SKILL.md +12 -7
- package/src/skills-lib/wizz-video-styles/assets/film-styles/dark-keynote.html +78 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/remotion/Riso.tsx +63 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/risograph.html +69 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/swiss-motion.html +84 -0
- package/src/skills-lib/wizz-video-styles/references/check-ins.md +25 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/DIRECTOR.md +139 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/archive-lighttable.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/art-deco.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ascii-crt.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/backrooms.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/blueprint.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/brick-toy.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/briefing-board.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/caption-news.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/cel-anime-80s.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/city-symphony.md +142 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/countdown.md +132 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/crayon-book.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dark-keynote.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/data-physical.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dataviz.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/engraving.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/game-show.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/glass-product.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/halftone-dossier.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hd-2d.md +111 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hologram-hud.md +129 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/impasto.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ink-wash.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/iso-infographic.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/kino-montage.md +151 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lidar-survey.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/living-screencast.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lowpoly-island.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microgame.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microscope.md +108 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/midcentury-toon.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/news-package.md +158 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/newsreel.md +136 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/one-line.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-lantern.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-popup.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/papercut-red.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pictogram-motion.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pixel-rpg.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/risograph.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/rubber-hose.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/satellite-briefing.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/scifi-toon.md +121 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/shadow-puppet.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silent-film.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silkscreen-poster.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/spy-titles.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/stained-glass.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/swiss-motion.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/teardown.md +127 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/telestrator.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/tilt-shift.md +107 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ukiyoe.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/urban-sketch.md +126 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/visual-investigation.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/watercolor.md +113 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/white-model.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/whiteboard.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/woodcut.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/insert-recipes.md +33 -0
- package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +38 -6
- package/src/skills-lib/wizz-vsl/SKILL.md +1 -1
- package/src/skills-lib/wizz-vsl/references/assembly-qa.md +1 -1
- package/src/skills-lib/wizz-vsl/references/blocks-and-leads.md +1 -1
- package/src/skills-lib/wizz-vsl/references/diagnosis.md +2 -2
- package/src/skills-lib/wizz-vsl/references/intake.md +5 -5
- package/src/skills-lib/wizz-web-security/SKILL.md +2 -0
- package/tools/installer/guided/labels.js +16 -0
- package/tools/installer/install-text.js +2 -0
- package/tools/installer/modules/cli-config.js +3 -0
- package/tools/installer/ui.js +6 -0
- /package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/prompts.md +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/paper-popup), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
|
|
2
|
+
|
|
3
|
+
# Paper Pop-up Book — Style Prompt
|
|
4
|
+
|
|
5
|
+
> A pop-up book on a real desk becomes a stage: flat cut-paper actors with white borders perform in front of paper sets that spring up from the page, under real lamp light and a real macro lens.
|
|
6
|
+
> References (grammar only): the *Paper Mario* series (flat cut-paper actors with a white border in a 3D diorama, bubbles that type on with blips, action ratings); Robert Sabuda / Matthew Reinhart pop-up books (layered V-folds, pieces rising back to front, pull-tabs); macro "tiny world on a real desk" photography. Never copy their characters, logos, UI or music, and never name them in the film.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
Two worlds in one frame. **The real world** at human scale: a photoreal surface lit by an HDRI room, a few real objects, a macro lens (shallow focus, warm practical light, soft contact shadows). **The paper world**: a hardcover book in that room; when it opens, one board stands up as the **backdrop** and the lower page is the ground. Every set piece is a **flat cut-paper card** that lies on the page and **pops up** around its bottom edge. Characters are cut paper too: a few centimetres tall, flat, with a thick off-white border, a grey cardboard edge and grain.
|
|
11
|
+
|
|
12
|
+
What sells it is the **mismatch of scale and material**: flat, saturated, outlined paper cartoons under real light, casting cut-out-shaped shadows and going soft in real lens blur. Keep the paper graphic; let light and lens make it real.
|
|
13
|
+
|
|
14
|
+
Not a papercut silhouette film (no one-colour lace, no backlight), not a 3D cartoon (nothing modelled round), not claymation (paper hinges, folds, curls and slides; it never squishes).
|
|
15
|
+
|
|
16
|
+
## 2. Materials & rendering
|
|
17
|
+
|
|
18
|
+
- **Real units** (metres): page 0.3–0.5 m wide, actors 3–5 cm, near plane a few mm, so HDRI, shadows and depth of field behave like a real macro shot.
|
|
19
|
+
- **Cut-paper finish**: Canvas2D art with a dark ink outline; its silhouette dilated (drawn at many angles on several rings, recoloured `source-in`) into a grey cardboard edge offset slightly down (thickness) and a wide off-white border; a shared paper grain on top (`source-atop`).
|
|
20
|
+
- **Drawing**: one dark-brown ink (never black), thick outline + thinner detail line, round joins; shading = one hard **crescent** (fill with shade, refill shifted with base); wobbly shapes (low-harmonic noise), never perfect geometry; simple faces.
|
|
21
|
+
- **Pop-up pieces**: planes with art on the front and plain paper on the back (same alpha); `alphaTest` + `alphaToCoverage`; a custom depth material with the alpha map so **the shadow is the cut-out silhouette**. Anything "3D" is several flat cards (front/back layers, triangles hinged on a keel).
|
|
22
|
+
- **The book** is modelled: cloth cover with foil title (roughness/metalness map), page block with edge lines, a curling leaf.
|
|
23
|
+
- **Real world**: HDRI environment and softly blurred background, real wood or fabric, a few CC0 props. **Neutral tone mapping** (ACES shifts paper colours).
|
|
24
|
+
- **Depth of field by hand**: CoC = aperture × (1/focus − 1/z), spiral gather that keeps far samples off a sharp foreground (stock bokeh looks fake at this scale); then light bloom, vignette, warmth.
|
|
25
|
+
|
|
26
|
+
## 3. Colour logic
|
|
27
|
+
|
|
28
|
+
- Saturated children's-book colour, **never neon**; the real world stays natural and slightly warm so paper pops against it.
|
|
29
|
+
- **One dominant hue family per spread**, so a page turn is also a colour change; a few accents (a red, a yellow, a gold) recur across spreads to stitch the book together.
|
|
30
|
+
- Ink dark brown, border off-white, card backs plain paper.
|
|
31
|
+
- Unfinished or "outside the story" pages lose colour: graphite on cream. Night is a change of the paper art; the real lamp keeps its warmth.
|
|
32
|
+
|
|
33
|
+
Examples of spread families: green meadow under sky blue; pink-and-lilac market with mint accents; ochre desert with a turquoise oasis.
|
|
34
|
+
|
|
35
|
+
## 4. Type & subtitles
|
|
36
|
+
|
|
37
|
+
- Rounded OFL faces: a rounded sans for subtitles, bubbles, signs (e.g. Fredoka); a chunky display face for cover, banners, action words (e.g. Lilita One); a storybook serif for taglines (e.g. IM Fell English); a playful Chinese face (e.g. ZCOOL KuaiLe) with the Latin face in its stack.
|
|
38
|
+
- **Narration subtitles**: bottom centre, ~40 px, cream with a thick dark-brown outline and soft shadow, second language smaller below. Hold ≥ max(1.8 s, speech + 0.6 s).
|
|
39
|
+
- **Speech bubbles** live in the paper world: white card, ink outline, tail projected each frame to the speaker; pop in with overshoot, type on with blips.
|
|
40
|
+
- **Titles are paper objects**: a cardboard sign dropping on strings and swinging; the cover itself is the film title. Action words (italic display, gradient, double stroke, rays) sparingly, like a game rating.
|
|
41
|
+
- Subset Chinese fonts to the characters used; re-subset after every text change.
|
|
42
|
+
|
|
43
|
+
## 5. Motion quality
|
|
44
|
+
|
|
45
|
+
- On ones (60 fps suits the smooth macro camera), all a pure function of `t`. Paper moves stiffly; life comes from easing: `back()` overshoot for pop-ups, springs for things on strings, squash and stretch on characters.
|
|
46
|
+
- **Pop-ups rise back to front** (delay grows with distance from the reader), far pieces lying back, near ones folding forward face-down; they fold down in the same order.
|
|
47
|
+
- Plants and light props sway a few hundredths of a radian around their base.
|
|
48
|
+
- **Characters are flat cards redrawn per quantized pose** (walk phase, arms, eyes, mouth, look, blink); walk phase follows distance walked, so feet don't slide.
|
|
49
|
+
- **Turning around = a `scale.x` flip** between front and back drawings; never `rotation.y`. Jumps: parabolic arcs, squash at both ends, a paper puff on landing.
|
|
50
|
+
- **Page turn**: a many-segment strip whose bend is integrated along its length, so it curls like paper.
|
|
51
|
+
- Never moves: the room.
|
|
52
|
+
|
|
53
|
+
## 6. Camera grammar
|
|
54
|
+
|
|
55
|
+
One virtual macro camera keyed as position / target / fov / aperture / focus with monotone-cubic interpolation; a new key list = a hard cut. A vocabulary, not a route. Opening and ending come from the topic.
|
|
56
|
+
|
|
57
|
+
| Move | What it expresses | Can serve |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| Eye-level macro track, shallow focus | being inside the story at the actors' size | a walk; a conversation; a chase |
|
|
60
|
+
| Pull up to a 3/4 view of the spread | the mechanism, the map | a page turn; a new setting; a plan |
|
|
61
|
+
| Descending dolly from human height | entering the book's scale | an arrival; zooming into one part of a system |
|
|
62
|
+
| Push-in on a face | feeling | a wish; a fear; a decision |
|
|
63
|
+
| Reverse shot from inside the book to the blurred room | the world beyond the page is huge | curiosity; an outside threat; a reader watching |
|
|
64
|
+
| Rack focus paper ↔ real object | paper and reality touch | cause and effect; a real product in a paper story |
|
|
65
|
+
| Top-down over the open spread | a board game, a diagram | a route; two sides of the gutter compared |
|
|
66
|
+
| Locked frame on a pull-tab | the trick is the event | before/after; a count |
|
|
67
|
+
| Rising crane leaving the book small | scale, distance | aftermath; a summary; time passing |
|
|
68
|
+
|
|
69
|
+
Actors in focus, room objects as soft foreground or background; keep near pop-ups out of the lens path. Transitions: page turns, a book closing and reopening, a hard cut on a paper sound; never a video dissolve inside the book.
|
|
70
|
+
|
|
71
|
+
## 7. Sound palette
|
|
72
|
+
|
|
73
|
+
- **Paper foley is the signature**: page swish, cardboard thump, pop-up snap (short sine sweep + crinkle), fold and crease, pull-tab slide, footsteps as tiny taps with crinkle, slat flaps, string-drop tinks; the book's spine creak and closing thump. All synthesizable from the page's event list.
|
|
74
|
+
- **Character voices as typing blips**: one waveform and pitch range per character, a blip every other letter.
|
|
75
|
+
- **Narration**: one warm storyteller, picture-book sentences; pronunciations kept apart from displayed text.
|
|
76
|
+
- **Music**: whimsical, acoustic or toy-like: music box, pizzicato strings, clarinet, glockenspiel, ukulele, toy piano, brushes. Options: a warmer cue for anything in the real room; a bar-aligned internal edit of a library track so its ending lands on a picture event; a pull-tab's clicks setting a cue's pulse.
|
|
77
|
+
- **Ambience**: room tone and a clock for the room; one bed per spread for the paper world.
|
|
78
|
+
- **Silence** = the book held still with only room tone; before a turn that matters, or a hesitation.
|
|
79
|
+
- **Mix**: voice high-passed, compressed, well above music; music ducked under speech with smooth release; limit SFX per channel; −14 LUFS.
|
|
80
|
+
|
|
81
|
+
## 8. Native moves
|
|
82
|
+
|
|
83
|
+
A menu: use the ones your story needs.
|
|
84
|
+
|
|
85
|
+
- **The book opens**: creak, the board swings up, the world pops up back to front. *Fits content like:* a project launch; a first school day; a recipe book.
|
|
86
|
+
- **Page turn = scene change**: old pieces fold down as new ones spring up. *Fits content like:* stages of a process; a farm's seasons; chapters of a biography.
|
|
87
|
+
- **Pull-tab mechanisms**: flipping slats, a sun on a stick, sliding strips, a hinged door, pieces on strings. *Fits content like:* a forecast; old way/new way; a lock opening.
|
|
88
|
+
- **Paper as character**: crumpled, smoothed, refolded, torn, taped. *Fits content like:* a mistake becoming a lesson; recycling; a rejected draft becoming the design.
|
|
89
|
+
- **The edge of the page**: crossing between paper and the room, either way. *Fits content like:* a character stepping into a phone on the desk; a real object entering the story; a drawing coming true.
|
|
90
|
+
- **The real object plays a part**: a lamp as a sun, a mug as a tower. *Fits content like:* a product at home; the reader's presence; real clock time.
|
|
91
|
+
- **Typed bubbles and ratings**. *Fits content like:* a tutorial; a quiz; a small victory.
|
|
92
|
+
|
|
93
|
+
## 9. Pitfalls of the medium
|
|
94
|
+
|
|
95
|
+
- `rotation.y` shows a card edge-on, then its blank back → `scale.x` flip. Negative scale also swaps front/back materials → draw mirrored props instead.
|
|
96
|
+
- A one-plane container hides its contents → back card + front card, contents between.
|
|
97
|
+
- Near-lens foreground pop-ups fill the frame with blur → move them or close the aperture.
|
|
98
|
+
- Rectangle shadows kill the illusion → alpha-mapped depth material on every card; tight shadow bias and a big shadow map against acne on thin cards.
|
|
99
|
+
- A turning page goes black facing away from lights → emissive map = colour map.
|
|
100
|
+
- ACES shifts paper colours → Neutral.
|
|
101
|
+
- Headless Chrome falls back to software WebGL → GPU ANGLE flags; ES modules need HTTP.
|
|
102
|
+
- Redrawing character canvases each frame → redraw only on pose change.
|
|
103
|
+
- Chinese subsets miss new characters and Latin glyphs → re-subset; Latin face in the stack.
|
|
104
|
+
|
|
105
|
+
## 10. Engine
|
|
106
|
+
|
|
107
|
+
In `demo/` (three.js r170 + Canvas2D): `paper.js` (cut finish, grain, crescent, blobs), `cutmesh.js` (cut mesh with paper back and cut-out shadow, strings, particles), `book.js` (`setOpen(θ)`, `setLeaf(u)` curling page), `art.js` (drawings at a fixed px/m), `actors.js` (posable flat characters, a foldable plane), `sets.js` (spreads, back-to-front pop scheduling), `post.js` (hand DOF → bloom → vignette), `hud.js` (subtitles, bubbles, banners), `lib.js` (easing, `back`, `spring`, `track`), `render.mjs` (stills / events / video). API table and a minimal new-spread example: DEMO.md "Engine reference".
|
|
108
|
+
|
|
109
|
+
## 11. Variation space
|
|
110
|
+
|
|
111
|
+
You decide the book, the room, the characters (or none), the spreads and mechanisms, the opening, the ending, the camera path and each spread's palette. All far from our demo:
|
|
112
|
+
|
|
113
|
+
- Structures: **the almanac** (one spread per month or stage, each pull-tab left running so the book fills with motion); **two books facing each other**, characters trading objects across the gap; **one spread pulled again and again**, each pull a step of how something is made.
|
|
114
|
+
- Openings: **mid-turn** (a page already curling, we land in chapter three); **inside the gutter** (low along the fold as the first piece rises over the lens); **a mechanism alone** (a tab slides by itself before any character appears).
|
|
115
|
+
- Endings: **the book closes** (pieces fold in reverse, a puff of air, stillness); **one piece stays up** (everything folds but the card that is the point); **the shelf** (the camera finds this book among many).
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/paper-popup/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/papercut-red), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
|
|
2
|
+
|
|
3
|
+
# Red Paper-cut — Style Prompt
|
|
4
|
+
|
|
5
|
+
> Chinese window-flower paper-cuts brought to life: jointed red cut-outs on paper grounds, where the cut *is* the drawing and the holes are where the light gets in.
|
|
6
|
+
> References (grammar only): folk window flowers of Shaanxi and Yuxian (sawtooth, crescent, cloud and swirl cuts, fold-symmetric rosettes, *yin* and *yang* cutting); the 1958–59 Shanghai Animation Film Studio cut-paper shorts (jointed figures, profile acting, paper layers in parallax). Copy no studio character, no named artist's work and no real motif sheet: generate every pattern from code, and never name the references in the film.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
Every visible thing is **a piece of paper that was cut with scissors** and laid flat on another sheet. There is no painting, no gradient shading, no outline stroke: detail, volume and expression come only from **what was cut away**. Red paper is the hero material; grounds are paper too (a light paper by day, a deep dyed paper by night). Characters are **jointed cut-outs** (head, torso, upper and lower limbs pinned at rivets) animated in hard 12 fps steps.
|
|
11
|
+
|
|
12
|
+
Not shadow puppetry: no light behind a screen, no translucent dyed hide, no rods. Here the paper is **front-lit and opaque**; backlight is a special event you save for the moment that needs it. Not flat vector art (no strokes, no gradients), not a silhouette film (every shape's interior is cut).
|
|
13
|
+
|
|
14
|
+
## 2. Materials & rendering
|
|
15
|
+
|
|
16
|
+
- **Paper grain:** a neutral-grey texture in `soft-light` inside each piece (dye mottling, fibres, specks), then the piece's alpha restored with `destination-in`, so holes stay holes.
|
|
17
|
+
- **Cut edge:** every silhouette is a polyline with a slight low-frequency wobble (hand-cut), a 1 px light rim upper-left and a dark rim lower-right (the cut face). Architecture and machines use straight segments + wobble, never smoothing.
|
|
18
|
+
- **Paper thickness:** each piece casts a tight soft shadow on the layer below; stacked folded paper shows 2–6 offset darker edges.
|
|
19
|
+
- **Figures: red block + yin lines.** Every figure piece gets an **inset contour** (a thin slit a few units inside the outline): the classic double outline, which also separates red-on-red overlaps (an arm over a coat).
|
|
20
|
+
- **Folk cutting vocabulary** (`demo/motifs.js`): sawtooth rows (fur, grass, tiles, fringe), serrated edges, crescents (scales, quilting), swirls (joints), clouds, rosettes, plum, coin, tapered slits.
|
|
21
|
+
- **No floating islands.** A closed ring cut would drop its centre out of real paper. Eyes are two crescents (upper and lower lid) that leave bridges, plus a pupil *hole*.
|
|
22
|
+
- Faces never morph: expressions are **swappable face pieces** (smile, surprise, fear, determined, asleep).
|
|
23
|
+
- **The rosette (团花)** is designed as one 45° wedge and mirrored 8× (D4); other folds give 2×, 4× or 6×. Alternate rings of *yang* cut (band cut away, red lines left) and *yin* cut (lines cut out of a red field). Fold seams leave faint crease lines: keep them, they are true to the craft.
|
|
24
|
+
- **Light:** front-lit scenes use the paper as is. Night: `frame × lightmap` + warm pools, then **emissive** backlit pieces (light × paper transmission via `multiply`; holes at full light), a two-level bloom and optional rays. Keep bloom low enough that the pattern stays legible at the centre.
|
|
25
|
+
- **Projected pattern:** a piece's hole mask, squashed onto the ground and added with `lighter`; on a character, masked by its layer alpha over a solid warm spot, so cut features still read as holes.
|
|
26
|
+
|
|
27
|
+
## 3. Colour logic
|
|
28
|
+
|
|
29
|
+
- **China red** (around `#d2201f`, range `#c8102e`–`#d7261e`) is the hero material. Depth and role are shown by **paper tones one step apart**, not by shading: near pieces one step brighter, far pieces one step darker, an antagonist or a heavy object one step deeper.
|
|
30
|
+
- **Ground and hero must be different paper families.** If background and hero are both red, the silhouettes stop popping. At night, all background layers are one dark dyed family and only the pieces that matter to the story are red; by day, a light paper ground with red and pale-red layers.
|
|
31
|
+
- **Gold foil** is an accent kept for one late moment (a sun, a title, a coin); never a second main colour.
|
|
32
|
+
- Examples of ground families: indigo night papers (far layers lighter blue, near darker); a warm rice-paper day with pale-red far hills; a jade-green or black paper for a story that isn't festive. Choose from the topic.
|
|
33
|
+
|
|
34
|
+
## 4. Type & subtitles
|
|
35
|
+
|
|
36
|
+
- **Subtitles are a paper strip in the world**, e.g. a red banner (横批) darker than the picture's reds so cream text holds, serrated edges, swallow-tail ends; a sturdy OFL serif (e.g. Fraunces SemiBold) around 44 px, low, with a paper shadow. It drops in on two 12 fps steps, like a couplet being pasted. Hold ≥ max(1.8 s, speech + 0.7 s); never overlap.
|
|
37
|
+
- **Titles** are cut-out letters (*yang*-cut, counters are real holes) popping in letter by letter on 12 fps steps, with sawtooth border strips and a seal cut by code.
|
|
38
|
+
- Small credits may be printed ink on paper.
|
|
39
|
+
|
|
40
|
+
## 5. Motion quality
|
|
41
|
+
|
|
42
|
+
- **Characters step at 12 fps** (pose sampled at `floor(t·12)/12`); **camera, light, weather, flames and flying pieces move on ones** at 24 fps.
|
|
43
|
+
- Rigs pin pieces at rivets (neck, shoulders, elbows, hips, knees, jaws, tails). Hard poses, tiny eases, 1-frame overshoots ("pop" = 1.15× for one step). Weight comes from **size and camera shake**.
|
|
44
|
+
- In profile, a raised near arm crosses the face: keep hands forward of the face or let a prop cover them.
|
|
45
|
+
- **Folding:** the flap is split into ~16 strips; each is compressed by cosθ and enlarged along the fold by `1 + 0.28·height` (fake perspective), darkened as it stands up, in a lighter back colour past 90°, with a growing shadow and a crease after. About half a second per fold, each on a hit.
|
|
46
|
+
- **Cutting:** the pattern is revealed through a mask of circles along the scissor path; the offcut drops once the outer edge is passed; blades open and close on a subdivision of the beat; scraps flutter out and land.
|
|
47
|
+
- **Unfolding:** successive unfolds a fraction of a second apart, each flap swinging from folded to flat with ease-out (the "pa!" snap), then a scale bump and warm flash on the accent.
|
|
48
|
+
|
|
49
|
+
## 6. Camera grammar
|
|
50
|
+
|
|
51
|
+
A vocabulary, not a route. Opening and ending come from the topic.
|
|
52
|
+
|
|
53
|
+
| Move | What it expresses | Can serve |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| Extreme close-up tracking the scissor tip | making; attention to craft | a beginning of work; a precise act; a signature |
|
|
56
|
+
| Flat front view, locked | the cut-out as an emblem | a title; a statement; a family portrait |
|
|
57
|
+
| Slow pan across paper layers (parallax) | a world laid out | a village, a route, a timeline |
|
|
58
|
+
| Low wide, a shape standing up from the ground layer | scale, threat | a storm; a rival; a deadline arriving |
|
|
59
|
+
| Top-down tabletop | the craft as plot | folding, cutting, assembling, sorting |
|
|
60
|
+
| Push toward a lit piece, pull back to many | one act spreading | influence; a network lighting up |
|
|
61
|
+
| Page turn / sheet peel | time or place changing | day to night; before and after; chapters |
|
|
62
|
+
| Pull back to an object in a room | the film was a thing someone made | memory; a gift; a tradition |
|
|
63
|
+
| Rotation around a rosette's centre | order, repetition | a cycle; a team |
|
|
64
|
+
|
|
65
|
+
Framing: layers stay parallel to the screen; depth comes from parallax and paper tones, never from perspective. Transitions are paper actions (fold, page turn, peel, a sheet flying off, a cut through the frame); no dissolves.
|
|
66
|
+
|
|
67
|
+
## 7. Sound palette
|
|
68
|
+
|
|
69
|
+
- **Foley follows the material:** scissors = metallic shear sweep (2.5–9 kHz) + a short ring + a fibre crack; folds = swish + crease tap; unfold = sharp snap; heavy steps = *cardboard* thud, not flesh; paper peel; pasting = a palm pat; match strike, puff; firecrackers = dense clicks 20–60 ms apart with low booms.
|
|
70
|
+
- **Instruments:** a bright Chinese chamber ensemble, not piano and strings and not the opera percussion of shadow puppetry: pipa (tremolo on long notes), zheng (`dan_tranh`: broken chords, glissandi, tremolo), erhu (glides), dizi (flute), sheng or yangqin colours, woodblock, small and big gong, frame drum. Pentatonic modes.
|
|
71
|
+
- Options: one snip = one beat subdivision; a rising zheng run, one note per thing that appears; a frame-drum heartbeat for weight; one big gong saved for one accent; total silence for a held breath.
|
|
72
|
+
- **Voice:** warm storyteller, few lines. Duck music ≈ 9 dB and foley ≈ 3 dB under the voice; keep impacts out of voice windows. Folk names may need an `asr` alias in `lines.json`.
|
|
73
|
+
- Mix to −14 LUFS, **no film grain** (the paper fibres are the texture).
|
|
74
|
+
|
|
75
|
+
## 8. Native moves
|
|
76
|
+
|
|
77
|
+
A menu: use the ones your story needs.
|
|
78
|
+
|
|
79
|
+
- **Fold – cut – unfold.** Fold a sheet 2/4/8 times; one cut becomes many. Put the unfold on a strong beat. *Fits content like:* one teacher, many students; a single design mass-produced; one seed becoming a field.
|
|
80
|
+
- **Holes are light.** A cut-out lit from behind glows deep red, every hole glows, and the pattern is projected onto the world. *Fits content like:* an idea shining through a person; a lighthouse; a window at night in a story about home.
|
|
81
|
+
- **Symmetry replicates.** A mirrored motif peels off and multiplies (rosette → window flowers → fireworks). *Fits content like:* a franchise; cell division; a song spreading through a crowd.
|
|
82
|
+
- **Scraps have a future.** The bits that fall while cutting come back later (as snow, confetti, stars). *Fits content like:* recycling; leftover time; small failures that add up.
|
|
83
|
+
- **Everything is one flat sheet.** Things share the same cuts, so a ridge can stand up and be a creature, or a wave become a road. *Fits content like:* a landscape that becomes a map; a factory that turns out to be one machine; a zoom out to the made object.
|
|
84
|
+
- **Mirrored pair.** Two figures cut from one folded sheet. *Fits content like:* twins; a partnership; before/after of the same person.
|
|
85
|
+
|
|
86
|
+
## 9. Pitfalls of the medium
|
|
87
|
+
|
|
88
|
+
- **Red on red** reads as one blob → different ground family, near/far paper tones, inset contours for overlaps.
|
|
89
|
+
- **Darkening a layer through the light map** also darkens what covers it → tint the layer itself (multiply + restore alpha).
|
|
90
|
+
- **A flat cos-squashed flap reads as a sliding card**, not a fold → strips with fake perspective, darken as it stands up, show the back colour.
|
|
91
|
+
- **Cut reveal shows the uncut stack through the holes** → stack thickness inside the "uncut" mask only; the cut part gets its own offset copies.
|
|
92
|
+
- Scissors pointing backwards → the blade axis follows the direction of travel, the rivet a little behind the cutting point.
|
|
93
|
+
- Blank frames between shots → overlap outgoing and incoming paper actions.
|
|
94
|
+
- Engine traps (`put()` transforms, piece boxes, test pages) are in DEMO.md build notes.
|
|
95
|
+
|
|
96
|
+
## 10. Engine
|
|
97
|
+
|
|
98
|
+
In `demo/`: `paper.js` (paper textures, piece builder: fill, cut, inset, edge, grain, shadows, transmission), `motifs.js` (folk pattern library), `rig.js` (2D affine rig helpers), `tuanhua.js` (8-fold rosette from one wedge × D4), `light.js` (night lightmap, backlit pieces, bloom, rays, masked projected light), `fold.js` (fold – cut – unfold sequence), `hud.js` (subtitle banner, cut-letter text); `?test=` pages draw model sheets from the real engine. A first test not in the demo: a bicycle from `paper.js` pieces (`sawRow` spokes), wheels riveted in `rig.js`, rolling on 12 fps steps.
|
|
99
|
+
|
|
100
|
+
## 11. Variation space
|
|
101
|
+
|
|
102
|
+
You decide the structure, the cast (or none), the sets, the paper families, the opening, the ending, the camera path, the pacing and which native moves carry the story. All far from our demo:
|
|
103
|
+
|
|
104
|
+
- Structures: **a year of twelve cuts** (a zodiac or calendar wheel, one wedge per month, rotating); **an assembly line** (a product built piece by piece from cut parts, each part a pattern); **a letter** (a folded message unfolds panel by panel, each panel a scene).
|
|
105
|
+
- Openings: **a finished pattern** (a full rosette, then one piece falls out and walks away); **an empty ground** (a blank sheet, one fold crease appears); **a crowd of cut figures** already dancing, parallax full.
|
|
106
|
+
- Endings: **refold** (the world folds back into a small square that is handed to someone); **scraps settle** (every offcut drifts down into a new pattern); **backlit only** (the lights go off except behind one cut piece, which projects the last image on the wall).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/papercut-red/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/pictogram-motion), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
|
|
2
|
+
|
|
3
|
+
# Pictogram Motion — Style Prompt
|
|
4
|
+
|
|
5
|
+
> A beat-locked flash-card film built from three things only: a **square-grid "core graphic"** of circles, half-discs and tiny patterned cells whose rows slide past each other; **geometric pictograms** made of round-capped bars and a disc head; and **bold bilingual type** that slides up out of masks. Every cut lands on a drum hit.
|
|
6
|
+
> References (grammar only): Otl Aicher's 1972 Munich pictograms (geometric athletes); multi-sport-games "look of the games" identity systems (a modular pattern + a colour set used for everything); Swiss sports-broadcast graphics (mono meta text, tick-bar progress). Learn the grammar; never copy any real event's pictograms, emblem, slogan, pattern artwork or colour names, and never name them in the film.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
A **catalogue film**: N items (products, dishes, steps, species…) shown one card at a time, fast, on the beat. Each card = **one pictogram doing one action + a huge title + a second-language line + a mono index "07 / N"**. Cards group into chapters; each chapter owns one hue, opened by a full-bleed pattern card.
|
|
11
|
+
|
|
12
|
+
What makes a frame read as this style at a glance:
|
|
13
|
+
1. **The grid pattern**: big discs and half-discs spanning square cells, about half the cells carrying a small motif, all in **five tones of one hue**, with **whole rows cut and shifted sideways**: the signature that drives backgrounds and transitions.
|
|
14
|
+
2. **The pictogram figure**: flat, faceless, rounded bars and a disc head; far-side limbs mixed toward the background. Props are discs, rings, capsules, lines.
|
|
15
|
+
3. **Type as architecture**: a 900-weight grotesk title set very large, a heavy second-language line under it, small mono meta text in the corners like a broadcast HUD.
|
|
16
|
+
4. **Beat lock**: every shot starts on a beat, every key action lands on a beat.
|
|
17
|
+
|
|
18
|
+
Mood: premium broadcast identity; flat colour, light grain, one soft light sweep as the only gradient.
|
|
19
|
+
|
|
20
|
+
Not an isometric infographic (no depth, no 3D), not Swiss motion graphics (the figure and the pattern carry as much as the type), not a cartoon (figures never emote, have no faces), not a data film (numbers are labels, not charts).
|
|
21
|
+
|
|
22
|
+
## 2. Materials & rendering
|
|
23
|
+
|
|
24
|
+
- **Flat Canvas2D**, rendered clean; grain only at mux time. **One square grid** (cell ≈ 1/6 of the frame height) rules bands, transitions and walls.
|
|
25
|
+
- **Pattern model**: fill with a mid-dark tone; on grid nodes randomly place cell-radius discs in random tones and discs-with-inner-discs; then a fraction of cells get one motif from a library of generic geometry (quarter-discs, fish-scale waves, dot and triangle scales, concentric arcs, sun wheels, checkers, crescents…), rotated by multiples of 90°; never mascots, landmarks or logos. Draw it wider than the screen so any row can shift one cell.
|
|
26
|
+
- **Figure model**: unit = body height, origin at the hip; draw far limbs (mixed ~40 % toward the background), torso, near limbs, head. A second person sits behind, mixed further (~60 %).
|
|
27
|
+
- **Stage**: the figure stands on a large **sun disc** in a neighbouring tone, crossed by one faint light sweep.
|
|
28
|
+
- **Figure environments** (water, nets, ramps) live in the figure's own buffer, masked to zero before the text column.
|
|
29
|
+
|
|
30
|
+
## 3. Colour logic
|
|
31
|
+
|
|
32
|
+
- **A set of five hues + one dark neutral**, each hue in **five tones** (darkest → lightest, the middle one is the base). A chapter = one hue; a multi-hue chapter rotates through the set per card.
|
|
33
|
+
- Under type the pattern runs at **low contrast**; on chapter cards at **full contrast**.
|
|
34
|
+
- **Light hues take dark type and dark figures**, and their disc uses the lighter tone; dark hues take cream. On the dark neutral, the disc uses a lighter tone or it vanishes; its accent is one warm hue.
|
|
35
|
+
- One cream and one ink serve every hue. No outlines, no highlights except the sweep.
|
|
36
|
+
- Choose the set from the topic. Examples: warm festival (red, violet, forest green, gold, ochre); coastal (navy, teal, coral, sand, sky); kitchen (tomato, basil, saffron, aubergine, flour cream). Invent names for your hues; never borrow an event's colour names.
|
|
37
|
+
|
|
38
|
+
## 4. Type & subtitles
|
|
39
|
+
|
|
40
|
+
- Title: a 900-weight grotesk (e.g. Inter Tight), 150–330 px at 1080p, tight tracking, auto-fitted. Second language: a heavy face under it. Meta: a mono (e.g. DM Mono) ~22 px, wide tracking; tags as mono chips.
|
|
41
|
+
- **HUD** on every card: mono corner text and a **progress bar of N ticks** (current tall, done dimmed, rest faint), N derived from the item list.
|
|
42
|
+
- **Bilingual rule**: one language is always the big title; the second language is chosen per version by a switch, never by hand-editing cards.
|
|
43
|
+
- The card type *is* the text layer. With narration, captions are a mono line on a solid band in the chapter hue, bottom, never over the title; hold ≥ max(1.8 s, speech + 0.6 s). A card that must be read (a spec, a number) holds ≥ 1.6 s.
|
|
44
|
+
- Deliver an `.srt` of the title cards, generated from the edit list.
|
|
45
|
+
|
|
46
|
+
## 5. Motion quality
|
|
47
|
+
|
|
48
|
+
- **A grid of time**: pick one tempo for the film; every shot starts on a beat and every key action in a pose (release, contact, landing) lands on an integer beat.
|
|
49
|
+
- **Pace ladder**: normal cards last one bar; related sub-items become half-length rapid-fire runs. A second tempo comes from dividing the beat, never from changing tempo.
|
|
50
|
+
- Easing: exponential ease-out for entrances, exponential in-out for whips and wipes; a back ease once at most.
|
|
51
|
+
- **Type enters by mask slide-up**: title first, second line ~0.08 s later, tag after; meta lines type on without a caret. Short cards compress all timings.
|
|
52
|
+
- **Figure assembly**: the figure arrives as horizontal bands sliding into register from alternating sides.
|
|
53
|
+
- **Backgrounds breathe**: rows drift in alternating directions; on chapter cards they jump a quarter-cell on beats.
|
|
54
|
+
- **Transitions** snap to the grid: sliding rows, dropping columns, a push, quarter-discs from cell corners, an iris from the last figure, a tile flip. Rotate them; each lasts a few frames around the cut.
|
|
55
|
+
- **Motion blur only where things move**: sub-frame averaging inside transition and whip windows; static frames render once.
|
|
56
|
+
|
|
57
|
+
## 6. Camera grammar
|
|
58
|
+
|
|
59
|
+
Mostly a locked flat frame; energy comes from row shifts, transitions and figure actions. When the camera moves, it moves along the grid. Opening and ending come from the topic.
|
|
60
|
+
|
|
61
|
+
| Move | What it expresses | Can serve |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| Locked flat frame | clarity, the card as a poster | any item; a spec that must be read |
|
|
64
|
+
| Lateral track with a one-screen whip per beat | one continuous family, momentum | a line of stations; a production line; a route |
|
|
65
|
+
| Slow drift along a row | calm, browsing | a gallery; a menu; a slower chapter |
|
|
66
|
+
| Vertical scroll by grid rows | ranking, depth, descent | a top-ten; floors of a building; ocean depths |
|
|
67
|
+
| Push into one motif cell until it becomes the next frame | zooming into a part | an ingredient inside a dish; a city inside a map |
|
|
68
|
+
| Pull back to a tiled wall of items | the whole set at once | a summary; "all of them"; a comparison |
|
|
69
|
+
| Tiles collapsing to one point | many become one | a merger; a shared goal; a count reaching zero |
|
|
70
|
+
| Split screen along a grid line | two items side by side | versus; before/after; two versions |
|
|
71
|
+
|
|
72
|
+
Framing: text and figure never overlap (one text column, one stage); horizontal poses move the stage outward. The HUD stays in the corners. Allowed transitions are the grid ones in §5; never dissolves, 3D camera moves, handheld shake or depth of field.
|
|
73
|
+
|
|
74
|
+
## 7. Sound palette
|
|
75
|
+
|
|
76
|
+
- **Type and music can carry the film alone**; a voice is optional, calm, one line per chapter at most.
|
|
77
|
+
- **Percussion is the spine**: choose a drum family that suits the topic (frame drums, taiko, marching snares, steel pans, body percussion, an electronic kit) plus rim clicks, claps, shakers and crashes.
|
|
78
|
+
- Colour instruments on top: Karplus-Strong plucks (any lute, koto or harp-like voice, with pitch bends), mallets (marimba, glockenspiel), detuned-saw chord stabs, a synth bass, pads, risers and a drone.
|
|
79
|
+
- **Per-family accents**: every shot onset gets a hit chosen by chapter (a splash, a pok, a clank, a crack, a whoosh, a sizzle): foley reads the chapter's matter.
|
|
80
|
+
- **Picture-locked by data**: the score reads the edit list's shot times and places accents there; check every onset to ±15 ms.
|
|
81
|
+
- **Silence as a tool**: half a beat of drums-and-bass-muted before a big hit, or one whole bar stripped to a single ticking sound under a count.
|
|
82
|
+
- Mix: glue compressor and limiter, −14 LUFS, ≤ −1 dBTP.
|
|
83
|
+
|
|
84
|
+
## 8. Native moves
|
|
85
|
+
|
|
86
|
+
A menu: use the ones your film needs.
|
|
87
|
+
|
|
88
|
+
- **One card = one item.** The count is the hook ("ALL N"). *Fits content like:* every tool in a workshop; every station of a subway line; every dish of a regional cuisine.
|
|
89
|
+
- **Chapter = colour.** Families become hues so the viewer always knows where they are. *Fits content like:* instrument sections of an orchestra; food groups; departments of a company.
|
|
90
|
+
- **One verb per item.** One body action readable in a bar, or a prop action (a gear turns, a cup pours). *Fits content like:* yoga poses; kitchen techniques; jobs on a construction site.
|
|
91
|
+
- **Pace ladder run.** A sub-family at double speed. *Fits content like:* four knife cuts; the bones of a hand; weekday routines.
|
|
92
|
+
- **Long take down a track.** Stations one screen apart, the camera whipping on each cut. *Fits content like:* the steps of a recipe; checkpoints of a marathon; stages of a rocket launch.
|
|
93
|
+
- **Count-up slam.** A big number rolls to its value on a bar. *Fits content like:* tonnes recycled; members of a club; years of a company.
|
|
94
|
+
- **Icon wall.** All pictograms return as a grid and turn one colour. *Fits content like:* a summary of a year; a periodic table of habits; a team roster.
|
|
95
|
+
|
|
96
|
+
## 9. Pitfalls of the medium
|
|
97
|
+
|
|
98
|
+
- Figure environments spread into the text column → render the figure layer into its own buffer and fade it out with a gradient mask before the text.
|
|
99
|
+
- Cream on light hues fails contrast → dark type and dark figures on light hues; their disc is the lighter tone.
|
|
100
|
+
- The sun disc vanishes on the dark neutral → use a lighter tone for it.
|
|
101
|
+
- Pattern canvases are large and seeded per card → cache with a bounded LRU; an unbounded cache runs out of memory with parallel renderers.
|
|
102
|
+
- Horizontal poses (swimming, lying, crawling) cross the title → move the stage outward and narrow the text column.
|
|
103
|
+
- Imitating a real identity too closely → your own palette, mark and slogan from the grid motifs.
|
|
104
|
+
|
|
105
|
+
## 10. Engine
|
|
106
|
+
|
|
107
|
+
In `demo/`: `engine.js` (`G.pattern`, `G.motif`, `G.joints` / `G.drawFigure`, `G.keyPose`, `G.maskText`, easings), `poses/base.js` (pose contract, props `G.P`), `edl.js` (edit list in beats), `scenes.js` (layouts, transitions, HUD, motion blur), `lab.mjs` (pose sheets), `music/music.py` (picture-locked score with onset report). API table, pose convention and a minimal example: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/pictogram-motion/DEMO.md#engine-reference).
|
|
108
|
+
|
|
109
|
+
## 11. Variation space
|
|
110
|
+
|
|
111
|
+
You decide the items, grouping, verbs, palette, chapter order, any long take, the pace ladder, opening, ending, music and voice. All far from our demo:
|
|
112
|
+
|
|
113
|
+
- Structures: **a countdown** (items ranked from N to 1, the camera scrolling down rows, the pace speeding up as the list shortens); **a day in pictograms** (one figure, one card per hour, the palette moving from dawn to night hues); **an assembly** (each card adds one part to a single growing pictogram machine seen in the corner).
|
|
114
|
+
- Openings: **a single motif cell** (one cell fills the frame and splits into the grid); **mid-action** (the first pictogram is already running when the type slams in); **a blank grid** (hairlines draw the grid on the beat before any colour appears).
|
|
115
|
+
- Endings: **one card held long** (the last item stays while the pattern rows stop, one by one); **the figure walks off** (the last pictogram exits the frame and the HUD ticks out); **reverse assembly** (the grid disassembles into rows that slide off-screen, leaving cream).
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
How our demo was made (story, shots, score, end card, build, engine reference): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/pictogram-motion/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/pixel-rpg), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
|
|
2
|
+
|
|
3
|
+
# 16-bit Pixel RPG — Style Prompt
|
|
4
|
+
|
|
5
|
+
> A short film that looks, sounds and *behaves* like a mid-90s console role-playing game: 320×180 pixels, a limited indexed palette, text boxes that type, menus, save files, chip music with echo.
|
|
6
|
+
> References (grammar only): mid-90s console RPGs as a system of dialog boxes, menus, battles, overworlds and save points; the palette tricks of indexed hardware (palette swaps, fades by steps, cycling); the colour-depth history of consoles (4 shades → 8-bit → 16-bit). Never use existing game names, characters, UI frames, fonts, logos, melodies or sound effects. Learn the grammar, not the assets.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
- **320×180 native pixels**, scaled ×6 nearest-neighbour to 1080p; everything, text included, lives in the framebuffer.
|
|
11
|
+
- **A limited, indexed palette**; gradients are **ordered dither**, never blends.
|
|
12
|
+
- **Sprites** around 20–34 px tall animating in a handful of frames; faces act in **portraits**.
|
|
13
|
+
- **Story told the way a game tells it**: dialog boxes with portraits, menus, status bars, battle messages, save files, item fanfares.
|
|
14
|
+
- It takes the game's systems seriously as a language for feeling.
|
|
15
|
+
|
|
16
|
+
Not HD-2D (no depth of field, bloom or real-time light), not CRT nostalgia (no scanlines, no grain), not a parody.
|
|
17
|
+
|
|
18
|
+
## 2. Materials & rendering
|
|
19
|
+
|
|
20
|
+
- **Indexed framebuffer** (`Uint8Array` of palette indices) presented through a **lookup table** (index → RGB), so a whole palette can change in one frame. Camera moves are **integer pixels**; each parallax layer rounds its own offset.
|
|
21
|
+
- **Master palette** of ~32 colours (a free palette such as ENDESGA-32), plus **protected duplicates** of a few indices that no palette effect touches.
|
|
22
|
+
- **Colour-depth tables** computed from the master palette: identity (16-bit), nearest of ~15 NES-like colours (8-bit; it needs a dark green and a dark brown), 4 fixed luminance thresholds (4-colour, drawn natively at 160×90 and doubled), a faded set (`lum^0.8` → ~7 blue-greys), and intermediate subsets for step-by-step collapse. Map by luminance, never by rank.
|
|
23
|
+
- **Light is index stepping**: `LIGHT[]` / `DARK[]` tables move each index one step along its ramp; glows are Bayer-thresholded rings. Firelight in a low-colour era uses a warm remap (greens → browns → rust), not generic brightening.
|
|
24
|
+
- **Dither**: 4×4 Bayer for gradients and glows; light shafts as a flat 50 % checker with a 25 % edge.
|
|
25
|
+
- **Sprites from a rig**: capsule limbs with 3-tone shading from an upper-left light, a per-part inner line in the material's darkest tone, a global 1-px ink outline, plus hand-placed ASCII heads. One rig gives every pose; lower eras drop the highlight tone. Give the hero a **silhouette mark** (a garment tail, a hat, a hairstyle).
|
|
26
|
+
- **Portraits** 32×32, 3/4 view, base face + eye/brow and mouth overlays; they carry facial acting (the sprite face has one eye pixel).
|
|
27
|
+
- **Props** can be flat-shaded 3D shapes quantised to a few protected indices (e.g. a rotating crystal at 8 frames per 90°).
|
|
28
|
+
|
|
29
|
+
## 3. Colour logic
|
|
30
|
+
|
|
31
|
+
- **Palette = feeling.** Colour depth, fades and swaps are story tools; change the whole palette by table, never by alpha.
|
|
32
|
+
- **Colour depth can stand for time**: older = fewer colours, lower resolution.
|
|
33
|
+
- **Protected indices**: a few colours exempt from every effect become the thread through the film and allow match cuts between eras. Use one or two; more and they stop meaning anything.
|
|
34
|
+
- **Warm hues survive reductions**: keep orange, pink and plum in reduced subsets, or the first step turns a scene solid red.
|
|
35
|
+
- Example uses of protected colours: a red kite across a childhood; a gold coin in a grey economy; the green of one plant in a faded city.
|
|
36
|
+
|
|
37
|
+
## 4. Type & subtitles
|
|
38
|
+
|
|
39
|
+
- **The dialog box is the subtitle**, drawn in the framebuffer at the bottom quarter: a layered rounded border (ink / white / silver), a dithered dark-blue fill, a 32×32 portrait on the left, an **original** variable-width pixel font (cap ~7 px) with a 1-px shadow. It types with the voice (~38–40 chars/s; slower in older eras), ▼ blinks when done.
|
|
40
|
+
- **Skins follow the era** (light box for 4-colour, black box with white frame for 8-bit, blue for 16-bit).
|
|
41
|
+
- Battle and system messages go in a thin top window. Every box stays ≥ max(1.8 s, speech + 0.6 s); the next box cuts the previous one. Export the `.srt` from the same subtitle array.
|
|
42
|
+
- Titles in the pixel font at 2×, 8-neighbour ink outline, row-by-row gradient, Bayer-dissolved in and out.
|
|
43
|
+
|
|
44
|
+
## 5. Motion quality
|
|
45
|
+
|
|
46
|
+
- Output 24 fps. Sprites step at **8 fps** (walk) to **12 fps** (flames, blinks); camera and parallax move on ones at integer pixels.
|
|
47
|
+
- **Game-native acting**: hop forward to act, cast pose, knockback recoil, kneel, KO blink (12 fps on/off) and vanish; breath = shoulders up 1 px.
|
|
48
|
+
- **UI motion**: windows slide in over ~0.3 s (ease-out, integer px); a hand cursor bobs 1 px at 4 fps and **stops when the character hesitates**.
|
|
49
|
+
- **Transitions**: thumbnail expand + mosaic, mosaic cross with a palette switch at the peak, the encounter swirl (polar twist + mosaic + Bayer dissolve to white), screen shake (3–2–1 px over 8 frames), palette step fades (4 levels). Never alpha fades.
|
|
50
|
+
|
|
51
|
+
## 6. Camera grammar
|
|
52
|
+
|
|
53
|
+
A vocabulary, not a route. Game cameras are simple and legible. Opening and ending come from the topic.
|
|
54
|
+
|
|
55
|
+
| Move | What it expresses | Can serve |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| Side-scroll with parallax layers | journey; loneliness; progress | a commute; a quest; a timeline |
|
|
58
|
+
| Locked frame with UI on one third | a choice; a system speaking | a menu decision; a stats reveal |
|
|
59
|
+
| Battle side view (enemy / party / windows) | conflict as a system | an exam; a negotiation; an illness |
|
|
60
|
+
| Top-down overworld pan | the whole world; where things are | a city; a map of a company; a trip |
|
|
61
|
+
| Integer-pixel tilt up something tall | awe; scale | a tower; a door; a mountain |
|
|
62
|
+
| Hold while the palette changes | loss or change without motion | grief; a memory fading; nightfall |
|
|
63
|
+
| Back view at a threshold | resolve; the unknown ahead | a first day; a launch; a departure |
|
|
64
|
+
| Zoom by mosaic into a thumbnail | entering a memory or a file | a flashback; a save slot; a photo |
|
|
65
|
+
|
|
66
|
+
Framing: characters stay above the dialog box (floor line above its top edge); menus leave the action visible.
|
|
67
|
+
|
|
68
|
+
## 7. Sound palette
|
|
69
|
+
|
|
70
|
+
- **Chiptune voices**: pulse waves at 12.5/25/50 % duty, 4-bit triangle bass, LFSR noise drums, wavetable leads, SNES-style echo (a few taps ~180–370 ms, feedback ~0.4, low-pass in the loop). Original melodies only.
|
|
71
|
+
- **Fidelity follows colour depth** (option): 4-colour = mono, 4-bit volume steps, low sample rate; 8-bit = NES-like mono; 16-bit = stereo with echo; a faded present = the same music muffled.
|
|
72
|
+
- **Techniques (options)**: regional variations of one motif; the arrangement losing one layer per palette step; a key change or the full band returning on a colour flood; a phrase left on the dominant and resolved later; an item-get fanfare as a punctuation.
|
|
73
|
+
- **Foley**, synthesised and bit-crushed to the scene's era: cursor and select blips, text blips (pitch per speaker), footsteps with echo, fire crackle, magic shimmer (triangle arpeggio), charge and blast, HP tick-down, KO blink, a bit-drop per palette step, save ticks, door grind, coin and item jingles, menu error buzz.
|
|
74
|
+
- **One organic sound** (a breath, a heartbeat) can make a character human at one moment.
|
|
75
|
+
- **Silence**: true zero including echo tails.
|
|
76
|
+
- **Mix**: music ducks ~7–8 dB under voice (fast attack, slow release); −14 LUFS, grain 0.
|
|
77
|
+
- **Voice** (optional): first person, few short lines; or text blips only, for a character who exists only in text.
|
|
78
|
+
|
|
79
|
+
## 8. Native moves
|
|
80
|
+
|
|
81
|
+
A menu: use the ones your story needs.
|
|
82
|
+
|
|
83
|
+
- **Palette collapse / flood.** Colour depth drops one level per beat, or full colour floods back through a dither wave. *Fits content like:* a city blackout and recovery; a company in crisis; burnout and rest.
|
|
84
|
+
- **Protected colour match cut.** One exempt colour links two eras in the same screen position. *Fits content like:* a family heirloom; a brand colour across decades; a team jersey.
|
|
85
|
+
- **Save files as memory.** A list of files; choosing NEW FILE refuses to overwrite. *Fits content like:* versions of a product; chapters of a career; photo albums.
|
|
86
|
+
- **Game UI as narration.** A greyed-out name, an item description, a stat screen. *Fits content like:* a team member leaving; a skill learned; a budget.
|
|
87
|
+
- **Level up.** Stats rise with a fanfare. *Fits content like:* a student's year; a startup's funding round; learning a language.
|
|
88
|
+
- **Encounter swirl.** A crash into danger. *Fits content like:* a deadline; a diagnosis; a storm.
|
|
89
|
+
- **Era shift.** The same characters redrawn in older hardware. *Fits content like:* a town's history; grandparents' youth; the evolution of a device.
|
|
90
|
+
|
|
91
|
+
## 9. Pitfalls of the medium
|
|
92
|
+
|
|
93
|
+
- Rank-based palette mapping crushes a scene to black → map by luminance with a gamma.
|
|
94
|
+
- Reduced subsets without warm hues turn a sunset solid red → keep warm hues.
|
|
95
|
+
- An 8-bit set without dark green or brown turns night grass blue; generic brightening near fire turns grass neon → warm remap.
|
|
96
|
+
- Post-quantising a full-colour scene to 4 shades is mud → draw low eras natively with known indices at half resolution.
|
|
97
|
+
- Pixel hair as a smooth dome reads as a helmet; single-pixel alternation reads as noise → 2–3 big spikes. Pale clothing reads as skin. Held props cross the face in side view → back hand.
|
|
98
|
+
- A dark plank door reads as a jail → panels, bevels, studs.
|
|
99
|
+
- Negative modulo indexes `undefined` → `((n % m) + m) % m`.
|
|
100
|
+
- The dialog box covers the bottom quarter → keep the floor line above it.
|
|
101
|
+
- Match cuts on protected colours need both screen positions computed.
|
|
102
|
+
|
|
103
|
+
## 10. Engine
|
|
104
|
+
|
|
105
|
+
In `demo/`: `px.js` (indexed framebuffer, palettes and LUTs for every colour depth, Bayer dither, mosaic), `font.js` (variable-width pixel font), `ui.js` (windows, dialog, menus, file list, status bars), `sprites.js` (rig + ASCII heads), `portraits.js` (32×32 portraits + expressions), `props.js`, `scenes.js` (parallax, index lighting, tilt), `main.js` (shots, transitions, palette timing, sound events, subtitles). `?sheet=1` renders a model sheet; `?frame=<scene>&lut=<table>` renders an environment through any colour-depth table. File list and build steps: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/pixel-rpg/DEMO.md) "Build notes".
|
|
106
|
+
|
|
107
|
+
## 11. Variation space
|
|
108
|
+
|
|
109
|
+
You decide which game system the topic hides, the characters, the eras, the palette plan, the opening and the ending. All far from our demo:
|
|
110
|
+
|
|
111
|
+
- Structures: **an overworld tour** (a top-down map; each town a chapter entered by a door transition); **a shop and an inventory** (the story told entirely through items bought, used and sold); **a turn-based duel** (two sides take turns; each move is a scene of the topic).
|
|
112
|
+
- Openings: **PRESS START**, a title screen with an attract-mode demo; **a battle already in progress** with HP low; **a boot screen** that fails to load and must be retried.
|
|
113
|
+
- Endings: **GAME OVER** answered by a choice (retry / give up) left open; **credits scrolling over the overworld** as characters walk home; **the save screen** where the last slot is written and the menu closes.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/pixel-rpg/DEMO.md). Read it after your treatment exists.
|