luckiest-co 1.0.40 → 1.0.42

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.
Files changed (84) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/video-studio/ATTRIBUTION.md +5 -0
  5. package/skills/video-studio/CHANGELOG.md +18 -0
  6. package/skills/video-studio/LICENSE-huashu-art-motion +21 -0
  7. package/skills/video-studio/LICENSE-mg-styles-15 +21 -0
  8. package/skills/video-studio/LICENSE-motionmaxxing +202 -0
  9. package/skills/video-studio/SKILL.md +39 -9
  10. package/skills/video-studio/references/audio.md +15 -0
  11. package/skills/video-studio/references/interview.md +10 -2
  12. package/skills/video-studio/references/step-2-plan.md +14 -6
  13. package/skills/video-studio/references/step-2b-storyboard.md +6 -0
  14. package/skills/video-studio/references/step-3-compose.md +13 -0
  15. package/skills/video-studio/references/step-4-deliver.md +5 -0
  16. package/skills/video-studio/references/storyboard.md +1 -0
  17. package/skills/video-studio/references/styles/3d-render.md +39 -0
  18. package/skills/video-studio/references/styles/anime-light.md +55 -0
  19. package/skills/video-studio/references/styles/aurora-glass.md +40 -0
  20. package/skills/video-studio/references/styles/bauhaus.md +46 -0
  21. package/skills/video-studio/references/styles/cel-boil.md +41 -0
  22. package/skills/video-studio/references/styles/chiaroscuro.md +53 -0
  23. package/skills/video-studio/references/styles/collage.md +46 -0
  24. package/skills/video-studio/references/styles/comic-pop.md +49 -0
  25. package/skills/video-studio/references/styles/constructivist.md +54 -0
  26. package/skills/video-studio/references/styles/cubist.md +49 -0
  27. package/skills/video-studio/references/styles/cut-paper.md +57 -0
  28. package/skills/video-studio/references/styles/era-styles.md +29 -0
  29. package/skills/video-studio/references/styles/finance-chart.md +60 -0
  30. package/skills/video-studio/references/styles/flat-vector.md +41 -0
  31. package/skills/video-studio/references/styles/grain-flat-illustration.md +48 -0
  32. package/skills/video-studio/references/styles/hud.md +41 -0
  33. package/skills/video-studio/references/styles/impressionist.md +48 -0
  34. package/skills/video-studio/references/styles/ink-wash.md +49 -0
  35. package/skills/video-studio/references/styles/isometric.md +40 -0
  36. package/skills/video-studio/references/styles/keynote-ui.md +59 -0
  37. package/skills/video-studio/references/styles/kinetic-type.md +58 -0
  38. package/skills/video-studio/references/styles/line-art.md +41 -0
  39. package/skills/video-studio/references/styles/liquid.md +40 -0
  40. package/skills/video-studio/references/styles/math-explainer.md +58 -0
  41. package/skills/video-studio/references/styles/morph.md +39 -0
  42. package/skills/video-studio/references/styles/mosaic.md +52 -0
  43. package/skills/video-studio/references/styles/newsroom-collage.md +60 -0
  44. package/skills/video-studio/references/styles/pixel.md +46 -0
  45. package/skills/video-studio/references/styles/pointillist.md +49 -0
  46. package/skills/video-studio/references/styles/presenter-explainer.md +57 -0
  47. package/skills/video-studio/references/styles/retro-cgi.md +52 -0
  48. package/skills/video-studio/references/styles/science-explainer.md +59 -0
  49. package/skills/video-studio/references/styles/sticker-explainer.md +40 -0
  50. package/skills/video-studio/references/styles/storytime.md +60 -0
  51. package/skills/video-studio/references/styles/swirl-brushwork.md +53 -0
  52. package/skills/video-studio/references/styles/synthwave.md +47 -0
  53. package/skills/video-studio/references/styles/variety-show.md +40 -0
  54. package/skills/video-studio/references/styles/watercolor-anime.md +50 -0
  55. package/skills/video-studio/references/styles/whiteboard.md +60 -0
  56. package/skills/video-studio/references/styles.md +117 -0
  57. package/skills/video-studio/references/tones.md +5 -5
  58. package/skills/video-studio/scripts/qa.mjs +125 -1
  59. package/skills/video-studio/scripts/qa.test.mjs +59 -1
  60. package/skills/video-studio/scripts/storyboard.schema.json +5 -0
  61. package/skills/video-studio-art-director/ATTRIBUTION.md +3 -0
  62. package/skills/video-studio-art-director/CHANGELOG.md +14 -0
  63. package/skills/video-studio-art-director/LICENSE-motionmaxxing +202 -0
  64. package/skills/video-studio-art-director/SKILL.md +105 -9
  65. package/skills/video-studio-art-director/references/palettes.md +22 -0
  66. package/skills/video-studio-composition/ATTRIBUTION.md +3 -0
  67. package/skills/video-studio-composition/CHANGELOG.md +7 -0
  68. package/skills/video-studio-composition/LICENSE-motionmaxxing +202 -0
  69. package/skills/video-studio-composition/SKILL.md +17 -4
  70. package/skills/video-studio-director/ATTRIBUTION.md +3 -0
  71. package/skills/video-studio-director/CHANGELOG.md +14 -0
  72. package/skills/video-studio-director/LICENSE-motionmaxxing +202 -0
  73. package/skills/video-studio-director/SKILL.md +107 -9
  74. package/skills/video-studio-director/references/jury.md +63 -0
  75. package/skills/video-studio-motion/ATTRIBUTION.md +3 -0
  76. package/skills/video-studio-motion/CHANGELOG.md +12 -0
  77. package/skills/video-studio-motion/LICENSE-motionmaxxing +202 -0
  78. package/skills/video-studio-motion/SKILL.md +128 -6
  79. package/skills/video-studio-motion/references/kinetic-type.md +89 -0
  80. package/skills/video-studio-motion/references/ui-demo.md +59 -0
  81. package/skills/video-studio-script/ATTRIBUTION.md +6 -0
  82. package/skills/video-studio-script/CHANGELOG.md +7 -0
  83. package/skills/video-studio-script/LICENSE-motionmaxxing +202 -0
  84. package/skills/video-studio-script/SKILL.md +28 -6
@@ -0,0 +1,39 @@
1
+ # Shape Morph Chain
2
+
3
+ - id: `morph`
4
+ - Source: mg-styles-15 `prompts/08-morph.md` (MIT, Vincentwei1021)
5
+ - Best for: keynote-grade storytelling, icon sequences, feature walkthroughs, brand reveal built from meaningful symbols
6
+ - Not for: character acting, texture-heavy looks, hard-cut montage
7
+ - Triggers: morph, morphing, shape transition, icon morph, shape shifting, one shape becomes another, Apple keynote, visual storytelling, flubber
8
+ - Tone cell: calm-sharp
9
+ - Clock: smooth 30 fps
10
+
11
+ ## Look
12
+ One hero shape, flat clean icons. Background color fields change with each morph via clean color-block wipes. Palette of 4-6 brand colors, one per beat. Invented logo and wordmark at the end (for example "morphe"). Centred, generous negative space.
13
+
14
+ ## Motion
15
+ Chain of 6-8 meaningful icons on the beat, for example cup, circle, sun, sunset over sea, gull, paper plane, location pin, heart, logo. Each A to B goes through a simple intermediate (circle or capsule): A to circle then circle to B, 8-12 frames each. Rotation plus 10-15% squash and stretch through the morph. Sub-parts morph in sync (steam becomes sun rays becomes waves). Ease cubic-bezier(0.7,0,0.3,1), fastest in the middle, 3-frame cushions at start and end.
16
+
17
+ ## Signature features (judged against these)
18
+ - Continuous outline with no jump cut between shapes.
19
+ - Every complex morph bridges through a circle or capsule.
20
+ - No knotting or tangling at any mid-point still.
21
+ - 10-15% squash and stretch plus slight rotation during morphs.
22
+ - Sub-parts morph in sync with the hero.
23
+ - Color-field wipe with each morph.
24
+ - Each morph lands on a beat.
25
+
26
+ ## 10-second beat seed
27
+ - 0-1s: first icon pops in, hold 3 frames, begin morph (hook on frame 0).
28
+ - 1-6s: 5-6 morphs on the beat, each with a color wipe.
29
+ - 6-8s (hero at 60-75%): the most surprising morph (paper plane to pin to heart) with synced sub-parts.
30
+ - 8-10s: shape becomes the brand logo, wordmark fades in, hold with micro-motion.
31
+
32
+ ## Sound
33
+ Rhythmic plucky arpeggio. A pitched whoosh per morph landing on the beat.
34
+
35
+ ## Build it in HyperFrames
36
+ SVG with GSAP MorphSVGPlugin if licensed, otherwise flubber or a custom resampler: resample both paths to the same N points (about 200), rotate the start index to minimise total vertex distance, then lerp with the easing curve. All as a pure function of t. Always render mid-point stills for every morph and inspect for knots.
37
+
38
+ ## Watch out
39
+ Mismatched vertex counts and starting points cause knots. Skipping the intermediate circle on complex pairs. Mechanical look when squash and rotation are missing. Make beat times come from a single cue sheet.
@@ -0,0 +1,52 @@
1
+ # Stone Mosaic
2
+
3
+ - id: `mosaic`
4
+ - Source: huashu-art-motion `04_roman.md` (MIT)
5
+ - Best for: heritage, food, travel, history, floor-tile and craft brands, bold logos and badges (narrow use)
6
+ - Not for: faces in close-up at small tile sizes, fast-motion UI, fine text
7
+ - Triggers: mosaic, roman mosaic, pompeii, tesserae, tile, byzantine, ancient floor, stone tiles
8
+ - Tone cell: calm-sharp
9
+ - Clock: smooth 30/60 fps (stones fixed, color flows through them)
10
+
11
+ ## Look
12
+ Hundreds of small stone tiles placed along outlines, with grout between them.
13
+ - Wall `#e4ddcd`, halo ring `#f5f1e8` (a 44-50 px halo around every figure), outline `#46322a`, red frame `#a8322a` with `#7c221d` line, gold `#d0a23c`, grout rgb(112,103,92) with noise.
14
+ - Tile size by region: wall 12 px, halo 11, figures 10, face 5-6 (small), hair 8, border strip 7.6, text 7, ground 13. Color jitter +/-4 to 8%, 9% warm tiles (+12,+4,-8), 7% cool.
15
+ - Each tile is a rotated square with half-widths `s/2*(1.08-1.28)` each, rotation +/-0.06 rad. Grout appears along the bisector between neighbors (gap 0.75-1.25 px).
16
+ - Edge shading: within 2.2 px of the edge, light direction (-0.6,-0.8) gives +/-16% light or dark; dome term `-5%*D1^2`; 3% pixel grain.
17
+ - Lettering: monospace thick-stroke letters about 2 tiles wide per stroke.
18
+
19
+ ## Motion
20
+ - Layout is computed once. Each frame, colors from a flat drawing flow through the fixed stones.
21
+ - Border band as a conveyor: a pre-baked 2,106 px stone strip (26 repeats of an 81 px pattern) translated by phase `15*lt + 81*easeInOut(...)`, so the stones travel with the pattern.
22
+ - Smoke or small props drift (55 px/s cloud band, 12 ember squares on parabolas); a small tile-sprite (emblema) carries moving objects.
23
+ - Transition family: mosaic tiles flip over and spread outward from a point.
24
+
25
+ ## Signature features (judged against these)
26
+ - Tiles laid along outline contours (distance-field iso-lines), then filled in staggered rows.
27
+ - Visible grout formed by the bisector between irregular stones.
28
+ - Halo of lighter tiles around every figure.
29
+ - Smaller tiles on faces and focal details, larger on background.
30
+ - Color flows across fixed tiles (the tiles never move except in the border conveyor).
31
+ - Props smaller than 3 tiles wide are sprites with their own small tiles.
32
+
33
+ ## 10-second beat seed
34
+ - 0-1.2s: tile border drifts, central picture assembles.
35
+ - 1.2-6s: color moves through the stones, smoke and sparks.
36
+ - 6-7.5s (hero): focal object flips tile by tile into the key message.
37
+ - 8.8-10s: hold, border continues.
38
+
39
+ ## Sound
40
+ Lyre and frame drum, 80-100 BPM, stone click foley per tile flip.
41
+
42
+ ## Build it in HyperFrames
43
+ Canvas 2D with typed arrays; build once at init (about 200 ms).
44
+ - Distance transform (Felzenszwalb-Huttenlocher) on a structure map, then walk iso-contours placing stones spaced at the tile size using a spatial hash with minimum spacing 0.8 x size; fill remaining gaps with staggered rows.
45
+ - Per pixel store tile id and shade; per frame sample the flat drawing at each tile center and write color x shade. Draw to an offscreen canvas then `drawImage` (direct `putImageData` ignores scaling and transitions).
46
+
47
+ ## Watch out
48
+ - Current weak spot: facial detail gets lost at small tile sizes.
49
+ - Hand, cup and face crowd together at 6-8.5 px tiles. Use bigger gestures or sprite inserts.
50
+ - Slow pattern shifts under one tile width get quantized away if only colors change. Move the stones too or move far.
51
+ - Do not use a special small tile size in one region only; it shows as a patch when still.
52
+ - Thin serif letters break into wrong letters at 7-9 px tiles.
@@ -0,0 +1,60 @@
1
+ # Evidence Desk Collage
2
+
3
+ - id: `newsroom-collage`
4
+ - Source: huashu-art-motion `references/动画语法/y2_vox.md` (MIT)
5
+ - Best for: news, history, politics and "how did this happen" explainers built on real material (clippings, screenshots, photos, maps, quotes). Journalist-style argument with evidence. 45-180s.
6
+ - Not for: pure concept or mechanism with nothing real to show (it becomes fake archive), derivations, character-driven comedy.
7
+ - Triggers: vox, johnny harris, explainer journalism, news explainer, documentary collage, paper desk, red string, highlighter, investigation board, map explainer, archive footage collage
8
+ - Tone cell: calm-sharp
9
+ - Clock: on twos (elements step at 12 fps, camera smooth 24-60 fps)
10
+
11
+ ## Look
12
+ - Three-color system: near-black `#171716`, paper white `#E0DCDA` to `#EEEDED`, one red in two steps (bright `#B65255` for lines, dark `#93403C` for fills). Highlighter yellow `#DACF08` for emphasis only. Old map paper `#E4DCCF`, parchment `#CFB195`. No pure white, no pure black.
13
+ - Used in the demo: desk `#e4ddcf`, clue red `#b8433f` (slightly brighter for 1080p legibility), highlighter `rgba(218,207,8,.9)` with multiply blend, a large black card `#1b1b1a` on the desk for one shot.
14
+ - Real material is the main picture: screenshots, original text, photos fill the frame or close to it, then push to the sentence being read. A shot where material is under 60% of the frame width, more than twice in a row, is the "photo frame" layout.
15
+ - Photos are grayscale with a 45 degree halftone, white border, two semi-transparent tape pieces. Clippings have torn, yellowed edges and a serif headline. Labels are black bars with bold white text. Index cards have ruled lines.
16
+ - Paper texture is static. No per-frame grain. Shadows are weak (blur 10, offset (3, 6), alpha 0.28).
17
+ - Intentionally imperfect so it reads as editorial, not advertising.
18
+ - People can appear as cut-out stickers with a white border and shadow.
19
+
20
+ ## Motion
21
+ - Two frame rates. Camera runs smooth. Elements (map color growth, red line tracing, typing, hand-drawn circles, pop-ins) step at 12 fps. Use `step(t - at, 12)` so the first frame is exactly at the cue.
22
+ - Camera easing from 13 measured moves: median 1.29s, range 0.71-1.96s, none linear. Seven are symmetric sine in-out for long hops, six are fast-start long-tail near `cubic-bezier(.33,0,.2,1)` for reveals and tracking.
23
+ - Defaults: push 0.6-1.5s, pull-out about 1s, follow a clue 1.3-1.8s, find next card 0.5-0.9s, fast push 0.28s only for a reveal.
24
+ - Archive photos and clippings appear on the cut, no bounce. Only when following a timeline does the next card slide in from off-screen with a 5-15 degree tilt, flatten, about 0.8s.
25
+ - Pen work: red underline 0.5-1s, red oval about 1s in one stroke (not closed, slightly crossing), highlighter 1.5-3s per line following the spoken words, typing about 13 characters per second.
26
+ - When the camera is parked and a card has internal animation, the camera holds. Static cards use a push to the line being read, not a slow drift.
27
+
28
+ ## Signature features (judged against these)
29
+ - Real material fills the frame and is pushed in to the exact sentence.
30
+ - Black, paper white, one red, plus a muted highlighter, no big yellow fields.
31
+ - Camera glides while elements step at 12 fps.
32
+ - No tear-off paper transition and no per-frame grain.
33
+ - Reveal actions rotate (cut-in, push, glide, highlighter, red line, stamp), never the same sequence more than 3 times.
34
+ - Text to read is on the topmost layer and drawn last.
35
+ - Highlighter timing follows the speaker, not the music.
36
+ - The same event is acted out only once. After a zoom, it is not replayed.
37
+
38
+ ## Beat pattern (30-60s)
39
+ - 0-4s: the source document or photo is on screen, camera framed on the claim.
40
+ - 4-20s: slow tier holds each card 3-7s using internal motion (highlighter, typed label, red circle). Fast tier (1.4-1.8s) is image cuts only.
41
+ - 50-70%: follow a red string from the key line to a second piece of evidence. The camera chases for 1.1-1.8s with short motion blur.
42
+ - Then a push into the photo and a hard cut to the sharper scan of the same image.
43
+ - Last 6-8s: pull out to the whole desk (0.85s long tail), then a closing line typed on black, hold 1s.
44
+
45
+ ## Sound
46
+ Understated documentary bed, minimal pulse, change music about every 20s. Paper slide, marker squeak, soft typewriter ticks. Voice is the lead.
47
+
48
+ ## Build it in HyperFrames
49
+ - Canvas 2D or SVG. Cache each paper, photo and clipping as a sprite. Seeded paper texture tiles seamlessly (sample on a torus) with fibers.
50
+ - Halftone: convert grayscale to a 45 degree dot grid as one path. Torn edges via noise.
51
+ - Hand-drawn lines: resample and add low-frequency noise, reveal by length.
52
+ - Camera framing: compute the rect that contains the target plus margin. Do not hand-type coordinates. Push no further than keeps the red circle in frame.
53
+ - Short motion blur on fast moves by stacking 7 samples along the velocity vector.
54
+
55
+ ## Watch out
56
+ - Everything moving smooth at 60 fps looks like a corporate film. Everything at 12 fps makes the camera dizzy.
57
+ - Template-style tricks (tear-off transitions, every image bouncing in, jittering paper) are not part of this look.
58
+ - Cards stacked so two labels read together as a false sentence ("exceeded" beside "acquired"). Read the visible text in order.
59
+ - A photo, clip or later card covering the text that is being read.
60
+ - The source marks a highlighter that starts outside the visible frame. Move the camera first.
@@ -0,0 +1,46 @@
1
+ # Pixel Art 8-bit
2
+
3
+ - id: `pixel`
4
+ - Source: mg-styles-15 `prompts/20-pixel.md` (MIT, Vincentwei1021)
5
+ - Best for: game trailers and attract screens, 8-bit music videos, nostalgic brand marketing, indie game promos
6
+ - Not for: smooth premium brand films, photoreal, long text
7
+ - Triggers: pixel art, 8-bit, 16-bit, retro game, sprite, chiptune, side scroller, CRT, dithering, PICO-8, Aseprite, Minecraft, Terraria
8
+ - Tone cell: kinetic-sharp
9
+ - Clock: stepped 10-12 fps for sprites (30 fps timeline for scrolling)
10
+
11
+ ## Look
12
+ Internal resolution 320x180 scaled x6 to 1920x1080 with nearest-neighbour. Limited palette (PICO-8-like 16-32 colors), dithered sky gradient. 3-4 parallax layers (sky, far mountains, mid forest or city, near ground tiles). Sprites hand-authored 16x16 to 24x24 as pixel arrays. Chunky pixel logo (for example "PIXEL QUEST"), pixel font dialogue box. Optional CRT pass: scanlines, slight barrel, phosphor glow, without blurring pixels into mush.
13
+
14
+ ## Motion
15
+ Strictly integer pixel positions and stepped timing, no smooth easing on sprites. Run cycle 6-8 frames at about 10-12 fps. Coin sparkle, slime bop, chest opens with a light burst. Parallax layers move by whole pixels at different speeds. Palette shifts day to sunset. Dialogue types out character by character. Logo drops in with a shine sweep.
16
+
17
+ ## Signature features (judged against these)
18
+ - Hard pixel edges via nearest-neighbour, no anti-aliasing.
19
+ - Limited palette (8-32 colors) with dither.
20
+ - Sprite animation at 8-12 fps, steps() timing.
21
+ - Integer-pixel positions only, including parallax.
22
+ - 3-4 parallax layers at different whole-pixel speeds.
23
+ - Typewriter dialogue box in a pixel font.
24
+ - CRT scanlines that keep pixels crisp.
25
+
26
+ ## 10-second beat seed
27
+ - 0-1.2s: sky and hero already running, coin sparkle.
28
+ - 1.2-4s: run, jump, bop a slime, parallax scrolling.
29
+ - 4-7s (hero at 60-75%): palette shifts to sunset, chest opens with a light burst.
30
+ - 7-8.5s: dialogue typed out.
31
+ - 8.5-10s: pixel logo drops in with shine sweep, held with blink.
32
+
33
+ ## Sound
34
+ Chiptune: pulse lead, triangle bass, noise drums, plus jump, coin and chest SFX.
35
+
36
+ ## Build it in HyperFrames
37
+ Canvas 2D at 320x180 with imageSmoothingEnabled = false, then drawImage upscaled x6 (or CSS image-rendering: pixelated). Sprite frame = floor(t*10) mod N. Parallax offset = floor(t * speed). Palette as an array of hex values, palette shift by lerping and re-quantising. Ordered-dither (Bayer 4x4) for gradients. CRT pass applied after upscale.
38
+
39
+ ## Watch out
40
+ Fractional positions cause shimmer. Never use a smooth scale or rotation on sprites. Scanlines that are too heavy hide the art. Pixel CJK fonts must be OFL.
41
+
42
+ ## Art-history variant (huashu-art-motion `14_8bit`)
43
+ - Draw the whole scene on a 240x135 canvas (1 low pixel = 8 screen pixels), scale up once with image smoothing off. Gradients become a 3-tone checkerboard dither band (sky `#0856ef #47c4f8 #aae9fb`).
44
+ - Sprites: rasterize each part on its own layer, drop alpha under 110, quantize to a 14-color palette, give each part its own 1px black outline. Draw small props directly at low resolution, never scaled down from smooth paths.
45
+ - HUD text at full resolution in Press Start 2P (OFL) with an 8px drop shadow; icons as 8x8 bitmaps.
46
+ - Motion stepped: 4-pose loops at 15 fps, integer pixel shakes `[0,1,0,-1]`, coin pop as a half sine of 9px, 1px cloud moves every 2 frames. Transition in: pixel blocks scale up then down.
@@ -0,0 +1,49 @@
1
+ # Pointillist Dots
2
+
3
+ - id: `pointillist`
4
+ - Source: huashu-art-motion `29_seurat.md` (MIT)
5
+ - Best for: calm brand films, art and culture content, premium reveals, color theory explainers
6
+ - Not for: fast action, small text, flat vector UI
7
+ - Triggers: pointillism, seurat, signac, dots, optical color mixing, stipple painting, divisionism
8
+ - Tone cell: calm-soft
9
+ - Clock: on twos (dot recolor at 6 fps, light shimmer)
10
+
11
+ ## Look
12
+ The picture is built from equal-size dots placed on a hex grid (pitch 10, row spacing 8.66, radius 4.5, +/-1.2 px static jitter, about 24,000 dots). Only 21 pure palette colors exist; mixed tones come from placing two neighbors side by side in proportion.
13
+ - 14 saturated: `#1a2058 #2a3a9a #3f6fd0 #6aaee6 #1f6a52 #2f9a5a #a8c83a #f2cf3a #f08a2a #e0432a #c0306a #7a4aa8 #f8f4e8 #e8b48a`
14
+ - 7 pale (mixed with white): `#f6e49a #f6c48a #cfe08a #b0cff0 #f2b8c8 #c99a4a #9a7ac8`
15
+ A blurred, slightly desaturated copy of the flat painting sits under the dots as ground color. A dark blue 28 px border, also dotted, frames the picture. Compose for the subject; leave open flat areas so the dots read.
16
+
17
+ ## Motion
18
+ - Water or sky dots re-roll their hash at 6 fps to make light shimmer.
19
+ - 7% of dots swap to their pair color at 6 fps (4 fps and 3% read as frozen).
20
+ - One small element drifts (a boat 40 px/s, a butterfly on `sin(2.6t)*120` with wing beat `|sin(20t)|`).
21
+ - Transition family: the old image crystallizes into dots (grid pitch 14, radius grows to 6.4), dots recolor top-left first with a 1.35x pop, then the new image develops underneath.
22
+
23
+ ## Signature features (judged against these)
24
+ - Uniform dots, no strokes, no outlines.
25
+ - 21-color palette, tones created by optical mixing.
26
+ - About 8% complementary-color dots (blue/orange, green/red-violet, yellow/violet).
27
+ - Light bleed: where brightness differs by more than 45 across 14 px, add white on the bright side and deep blue on the dark side.
28
+ - Visible deep-blue dotted border.
29
+ - Gentle motion, adjacent-frame difference around 0.45 mean.
30
+
31
+ ## 10-second beat seed
32
+ - 0-1.2s: dots crystallize from empty paper into the scene.
33
+ - 1.2-6s: slow shimmer, one drifting element.
34
+ - 6-7s (hero): dots pop to the new palette pair, title resolves.
35
+ - 8.8-10s: hold, shimmer continues.
36
+
37
+ ## Sound
38
+ Soft marimba or vibraphone ticks, 90-100 BPM. One tick per dot-pop wave.
39
+
40
+ ## Build it in HyperFrames
41
+ Canvas 2D or WebGL. Draw a flat painting, sample color at each grid dot, pick a pair from the palette.
42
+ - Project the target color onto the line between two palette colors to get a ratio, clamp to 0.2-0.8, add a penalty `0.004*|Pi-Pj|^2` against distant pairs, and decide per dot with `hash(i,j) < w`.
43
+ - Add +/-20 hash jitter to the target before picking, otherwise the pair boundary forms vertical bands.
44
+ - Batch dots into one Path2D per color, fill once per color; cache pair choices by 15-bit quantized color.
45
+
46
+ ## Watch out
47
+ - Current weak spot: reads static, and the grid can look too regular. Add the shimmer and a moving element.
48
+ - A single preferred pure color without a penalty slices gradients into stripes.
49
+ - Without pale colors in the palette, bright walls break into white, skin and blue snow noise.
@@ -0,0 +1,57 @@
1
+ # Cartoon Presenter Explainer
2
+
3
+ - id: `presenter-explainer`
4
+ - Source: huashu-art-motion `references/动画语法/y6_presenter_explainer.md` (MIT)
5
+ - Best for: business history, product mechanics and finance or tech knowledge pieces where a cartoon host walks between paper, charts and keywords and reacts emotionally. 60-180s.
6
+ - Not for: anything without character art you can generate or supply. The source ships no character sprites and no ready-made parameterized clip, so it is a grammar and a reference approach only, not a turnkey template.
7
+ - Triggers: presenter explainer, cartoon host, character explainer, business history video, finance explainer with mascot, spacex explainer, character walks across the chart, talking head cartoon, narrated cartoon guide
8
+ - Tone cell: kinetic-soft
9
+ - Clock: on twos (character frames swap, scene camera smooth)
10
+
11
+ ## Look
12
+ - A cartoon presenter built from AI-generated frames stands in a scene made of paper, charts and keywords. Code controls foot anchor, position, scale and frame swaps.
13
+ - The source gives no palette or fonts. Suggested defaults, adjust to brief: warm paper base `#F4EFE6`, ink `#1B1B1F`, one brand accent, one chart color used for the hero data. Keep chart and keyword layers quieter than the presenter.
14
+ - Generate at least two framing sets: full body and bust. Sitting and leaning poses need their own real frames. Do not enlarge a full-body frame for a reaction close-up.
15
+ - Layout is assigned in the storyboard, not fixed. Rotate between: presenter at the side explaining, full-screen number, left-right compare, presenter stepping into the chart, reaction close-up. Do not fix "person left, chart right" for the whole film.
16
+ - A top bar with the year or section, the subtitles and the segment title all read from the same clock.
17
+
18
+ ## Motion
19
+ - Pose changes are hard cuts with a slight pop-in, so different silhouettes never cross-dissolve into a ghost double.
20
+ - Mouth frames switch with the voice and stop in pauses. Walking uses full gait frames, not a slide.
21
+ - Normalize pose heights to the median height. The first cast keyframe of each segment states `x` and `s` explicitly so nothing inherits from the previous segment.
22
+ - Numbers settle on the spoken moment. While counting, do not show assertions like "over" or "+" early. The emphasis circle appears after the number settles.
23
+ - Nested transparency uses multiply (`*=`) so an outer fade survives.
24
+ - Transition between pages flips only the page. Presenter and top bar continue across pages.
25
+ - Camera: use a scene camera for pushes. Whole-frame bitmap zoom crops the character and was a known problem in the reference code.
26
+
27
+ ## Signature features (judged against these)
28
+ - Presenter moves between paper, chart and keyword layers instead of sitting in a corner.
29
+ - At least four different layouts in the film, no fixed left-right composition.
30
+ - Full-body and bust frames used for the right shot sizes.
31
+ - Pose swaps are hard cuts with a small pop, no dissolves between poses.
32
+ - Mouth movement tied to the voice and silent during pauses.
33
+ - Feet stay on a fixed anchor across frame swaps.
34
+ - Number lands on the spoken digit, circle added afterward.
35
+ - Year bar, subtitles and segment title share one time source.
36
+
37
+ ## Beat pattern (30-60s)
38
+ - 0-5s: presenter enters at the side with a hook line, full-body frame.
39
+ - 5-25s: alternate presenter-explaining and full-screen paper or chart beats. Keywords appear as the voice says them.
40
+ - 60-75%: the key figure fills the screen, then the presenter steps in or reacts on a bust close-up. Leave a pause for the beat, written into the script and the voiceover.
41
+ - Last 5-8s: presenter returns to the side with the takeaway, hold 1s with a small idle.
42
+ - Aim for a layout change every 5-8s.
43
+
44
+ ## Sound
45
+ Light upbeat bed, 90-110 BPM, ducked under the voice. Soft pops on keyword entrances, page-turn sound on page flips, a short stinger on the reaction shot.
46
+
47
+ ## Build it in HyperFrames
48
+ - Canvas 2D or HTML layers. Write a `presenterFrame(pose, t)` function that picks a frame from an image set and a `drawFigure` that places it by foot anchor.
49
+ - Cut frames from a sheet with a script that computes the foot anchor per frame.
50
+ - Page flip is the only transition. The HUD and presenter layers draw above it from the global clock.
51
+ - Run the project's text-in-frame QA from the first draft. For light backgrounds without subtitles, also run a subtitle-zone check.
52
+
53
+ ## Watch out
54
+ - Presenter covering text, or being cropped by a push-in. Check by eye.
55
+ - Reusing the same left-person right-chart composition across the film.
56
+ - Pose frames that do not match (sitting needs real sitting art).
57
+ - Using this card as a full template. Art and voice must be supplied and the source says so.
@@ -0,0 +1,52 @@
1
+ # Retro CGI Render
2
+
3
+ - id: `retro-cgi`
4
+ - Source: huashu-art-motion `15_raytrace.md` (MIT)
5
+ - Best for: nostalgia tech, intros for software, games, 3D-logo reveals, retro brand throwbacks (narrow use)
6
+ - Not for: modern minimal UI, organic subjects, handmade looks
7
+ - Triggers: 90s cgi, early ray tracing, chrome sphere, checkerboard floor, plastic render, wireframe, pov-ray, silicon graphics
8
+ - Tone cell: kinetic-sharp
9
+ - Clock: smooth 30/60 fps
10
+
11
+ ## Look
12
+ Every object looks like glossy plastic from a 1993 render.
13
+ - Walls teal `#7dbcb9 -> #64a6a6 -> #3f8285` with a radial light at the window; sky `#a24cc4 -> #df62ae -> #f5a08a -> #f8c070`; pink wireframe grid mountains (28 x 26 cells) with sawtooth snow caps.
14
+ - Ground is a perspective checkerboard computed per pixel (vanishing point (960,480), `X=(x-960)/dy`, `Z=1/dy`, tile 0.27 x 0.00029, 2x2 supersampling, fog over the nearest 140 px by 35%).
15
+ - Plastic shading helper `plastic(path, base, hx, hy, R)`: base fill, radial gradient from the highlight (white 0.55 -> 0.06 at 0.28 -> clear at 0.62 -> deep purple `rgba(10,0,30,0.42)` at the edge), `lighter` ambient bounce in the wall color, then a small hard-edged white ellipse specular (0.16R x 0.09R, alpha 0.85).
16
+ - Limbs are cylinders: gradient across the normal (dark 0.25, bright 0.5 band at 22%, dark 0.45) plus a thin white highlight line. Joints are visible balls (toy-figure feel).
17
+ - Floor reflections: mirror the object layer, alpha 0.34, drawn each object on its own layer first so many small pieces do not stack to opaque.
18
+
19
+ ## Motion
20
+ - Ring of 140 spheres spinning about a vertical axis at 7 rad/s, tilted 0.35, depth-sorted (a dark base layer first so spheres merge into a tube).
21
+ - Chrome ball: per-pixel environment map (down: checkerboard, up: pink-purple sky plus a window strip); the checker u coordinate shifts `t*4.5`; Fresnel rim brightens; diameter 104 px, under 2 ms.
22
+ - Lens flare (`lighter`): core 170 px pulsing +/-8% at 23 rad/s, 12 spikes at 1.6 rad/s, 960 px horizontal bar, five circle and hexagon ghosts along the sun-to-center line sliding `sin(5t)*0.03`.
23
+ - Glowing eyes or lights pulse +/-25% at 18 rad/s; a diagonal glass reflection slides 260 px/s.
24
+ - Transition family: green wireframe of the new image (edges cached on first frame) then scanline-fills into the rendered picture.
25
+
26
+ ## Signature features (judged against these)
27
+ - Uniform plastic shading with the same highlight logic on every object.
28
+ - Perspective checker floor with fog and mirrored reflections.
29
+ - Spinning ring/ball with visible per-sphere highlights.
30
+ - Pink wireframe terrain and a gradient sunset sky.
31
+ - Chrome sphere reflecting the scene.
32
+ - Lens flare with ghosts, rotating spikes.
33
+ - Wireframe to render transition.
34
+
35
+ ## 10-second beat seed
36
+ - 0-1.2s: wireframe resolves to rendered scene.
37
+ - 1.2-6s: ring spins, chrome ball rolls, flare glints.
38
+ - 6-7.5s (hero): camera-fixed flare sweep and title in chrome.
39
+ - 8.8-10s: hold, ring continues to spin.
40
+
41
+ ## Sound
42
+ FM synth pads and a gated snare, 100-115 BPM. Whoosh on flare, "bling" on specular glints.
43
+
44
+ ## Build it in HyperFrames
45
+ Fake it in Canvas 2D or really render in Three.js with MeshPhong materials and a 4x4 checker texture.
46
+ - The checkerboard and fog are cached (cold start about 53 ms); hot frame about 23 ms.
47
+ - Snapshot the wireframe from the first frame of the incoming scene, so that frame must be complete (no blank first frame).
48
+ - Smooth any polyline silhouettes before applying plastic shading or corners show.
49
+
50
+ ## Watch out
51
+ - Current weak spot: legs look like straight columns and the face reads like a mask. Give organic parts rounded profiles and expression.
52
+ - Narrow use: only works when the retro 3D joke is the point.
@@ -0,0 +1,59 @@
1
+ # Glowing Flat Science Explainer
2
+
3
+ - id: `science-explainer`
4
+ - Source: huashu-art-motion `references/动画语法/y1_kurzgesagt.md` (MIT)
5
+ - Best for: scale and "what is inside" topics (cell to galaxy, pixel to model), systems and mechanisms drawn as glowing particles and lines, calm popular-science narration. 45-120s.
6
+ - Not for: real people, real events, archive evidence (use a collage style). Step-by-step reasoning (use a whiteboard style). Very small budgets, because the look depends on something always alive in the frame.
7
+ - Triggers: kurzgesagt, in a nutshell, flat science animation, scale zoom, immune system explainer, cell zoom, popular science, glowing vector, optimistic nihilism, zoom into
8
+ - Tone cell: calm-soft
9
+ - Clock: smooth 30/60 fps
10
+
11
+ ## Look
12
+ - Dark era: deep base, 2-3 saturated accents, strong radial glow. Do not copy a purple-blue starfield gradient, it reads as generic AI. Use a flat deep ink or navy base and keep the rule: one dark base plus 2-3 high-saturation accents that contrast (orange against indigo, cyan against magenta).
13
+ - Reference accents from the source: cyan `#32BAEE`, orange `#F48301`, yellow `#FACC12`, glow core `#F9EF93`, magenta `#BE3A95`, highlight white `#F9FCFB`.
14
+ - Never mix eras in one scene. A bright light-grey low-saturation era is also valid for a "daytime" section. Changing sections can change the whole color temperature.
15
+ - Draw the concept as a concrete object (cell, gear, pipe, city, drop of water). A glowing ball with a few label capsules is not enough.
16
+ - No outlines. Shadow is a block of the same hue one step darker, highlight is a white ellipse or an arc. Two-tone facets: shadow band at about (10, 12)px bottom right, thin highlight edge (4, 5)px top left.
17
+ - Rounded everything. Glowing objects always carry a radial glow.
18
+ - Composition: main subject on the lower third line, sky above for stars and labels. Parallax layers: stars 0.05, far 0.12-0.3, near 0.65, subject 1.0, foreground blur 1.5 (7px blur, dark).
19
+ - Label capsules: large radius, saturated fill, bold sans.
20
+
21
+ ## Motion
22
+ - Core easings: `cubic-bezier(.75,0,.25,1)` for most moves (soft start, fast middle, soft end), and `cubic-bezier(.333,0,.667,1)` for loops. Normal action 50 frames at 60fps (0.83s), snappy 10-30 frames, pop-ins 5-10 frames.
23
+ - Pop: card reaches 90% in 0.25s, overshoots to 108% at frame 20, settles about 0.5s. Label uses back-out with overshoot 1.1 over 0.5s.
24
+ - Stagger: similar items 10-20 frames, limbs 3-4 frames, a pause of 20 frames between actions. Title letters 45ms apart.
25
+ - Blink: closed 5 frames, open 10, irregular gaps, eyes never shrink to zero.
26
+ - Ambient layer (stars, particles, glow) can keep moving. Subject and labels hold still once settled. Cut or change state at least once per narration sentence.
27
+ - Camera: zoom is the main verb. Use log interpolation so every frame scales by the same factor. Hold 0.3s and light up the thing you will enter, then push. Pull back out for reveals.
28
+
29
+ ## Signature features (judged against these)
30
+ - A concrete visual metaphor object, not a generic orb.
31
+ - Dark flat base with 2-3 glowing accents, no outlines.
32
+ - Two-tone facets on every shape, same-hue darker shadows.
33
+ - Parallax layers with depth blur in the foreground.
34
+ - Scale transitions use log zoom and redraw vectors at each scale.
35
+ - Subject is still after landing while the background stays alive.
36
+ - One state change per narration sentence.
37
+ - Labels: thin white leader line, then text typed in, about 40 characters per second, then erased after about 3s.
38
+
39
+ ## Beat pattern (30-60s)
40
+ - 0-5s: world establishes with ambient motion, title letters rise.
41
+ - Every 5-7s: a new visual unit (pop a label, morph, transition). Hard cuts land 0-0.2s before a sentence starts.
42
+ - 60-75%: scale transition. Light the target for 0.3s, push in 0.45-1.4s until its color fills the screen, resolve into the new world.
43
+ - Optional gag: a mascot appears for one joke beat.
44
+ - Last 6-8s: pull back (1.45s, ease in out) to a calm wide frame, ambient motion only, hold 1s.
45
+
46
+ ## Sound
47
+ Warm ambient orchestral or soft synth pad, 60-90 BPM, composed after the picture. Gentle chime on pops, deep swell on scale transitions, soft whoosh on pull-backs. Voice is calm, about 168 words per minute.
48
+
49
+ ## Build it in HyperFrames
50
+ - Canvas 2D or SVG layers, each with a depth value. Position scales linearly by depth, zoom by z^depth.
51
+ - The camera is a function of time only. During a transition window the previous scene keeps drawing with its own zoom, so vectors are redrawn and never blown up as a bitmap.
52
+ - Glow is a radial gradient, not a filter. Stars use per-star phase with seeded random.
53
+ - Avoid expo-out for the scale transition because the first frame jumps most of the scale.
54
+
55
+ ## Watch out
56
+ - Everything breathing and drifting at once, with a constant slow push to fill time.
57
+ - Linear zoom, or scaling a screenshot 20x.
58
+ - Bright mixed colors, black outlines, or mid-tone backgrounds drift into children's picture book style.
59
+ - The source built this over very long production times. A cheap version looks like a slide deck.
@@ -0,0 +1,40 @@
1
+ # Sticker Knowledge Explainer
2
+
3
+ - id: `sticker-explainer`
4
+ - Source: mg-styles-15 `prompts/19-paperclip.md` (MIT, Vincentwei1021). Note: this is a bold-outline sticker-photo explainer on a huge camera-moved canvas, not paper cutout or stop motion.
5
+ - Best for: hard-core science explainers, finance and knowledge channels, corporate documentary explainers, data-rich narration videos
6
+ - Not for: emotional or abstract pieces, playful cartoons, fast hype edits
7
+ - Triggers: sticker, knowledge video, science explainer, infographic video, big canvas, camera pan and zoom, photo cutouts with white outline, periodic table, PaperClip, Lin Chao, explainer channel
8
+ - Tone cell: calm-sharp
9
+ - Clock: smooth 30 fps
10
+
11
+ ## Look
12
+ Calm blue-grey and off-white canvas: #E9EEF2 with slate, 2-3 colors plus one accent such as #FF5A36. Photos cut out and given an 8-12px (10px) white outline with a soft shadow, so differing sources look unified. Flat icons and exact charts. Equal-weight sans typography, strict alignment, leader-line labels. Huge canvas (for example 6000x3000) viewed through a camera.
13
+
14
+ ## Motion
15
+ One continuous camera path of long ease curves, pan and zoom, linking information points. Every sentence introduces a new visual element. Chart motion: bars grow to scale, numbers count up with a ticking sound, map routes draw on with stroke growth. Exploded-parts stickers with leader lines. Periodic-table tiles light up in sequence. Pull out to a bold typographic title card (heavy sans, huge number, small caption).
16
+
17
+ ## Signature features (judged against these)
18
+ - Photo stickers with 8-12px white outline and soft shadow.
19
+ - Cool, restrained palette: 2-3 colors plus one accent.
20
+ - One continuous camera move across a big canvas with long eases.
21
+ - Charts exact: bars to scale, numbers consistent with the copy.
22
+ - Count-up numbers and path draw-on.
23
+ - A new visual element for every narrated beat.
24
+ - Title card with huge number in heavy sans.
25
+
26
+ ## 10-second beat seed
27
+ - 0-1.5s: phone sticker lands, camera already moving.
28
+ - 1.5-4s: exploded parts with leader-line labels.
29
+ - 4-6.5s: periodic-table tiles light up.
30
+ - 6.5-8s (hero at 60-75%): bar chart grows, count-up to "70+", map routes draw.
31
+ - 8-10s: pull out to the typographic title card, hold.
32
+
33
+ ## Sound
34
+ Clean tech-explainer bed, UI clicks, ticking during count-up, soft whoosh on camera moves.
35
+
36
+ ## Build it in HyperFrames
37
+ One wide stage div with a camera transform (translate and scale) animated by GSAP long eases, computed from a keyframed path. Stickers via CC0 or public-domain PNGs with the outline made by an SVG filter (feMorphology dilate plus flood white) and drop shadow. Charts and map routes in SVG with dashoffset. Count-up from a pure function of t.
38
+
39
+ ## Watch out
40
+ Charts that do not match the narration kill credibility. Source licences: record them. Too many colors loses the serious feel. Keep camera moves long and smooth, not jumpy.
@@ -0,0 +1,60 @@
1
+ # Storytime Character Cuts
2
+
3
+ - id: `storytime`
4
+ - Source: huashu-art-motion `references/动画语法/y4_storytime.md` (MIT)
5
+ - Best for: first-person stories, fails, "the first time I..." anecdotes with a setup, a pause and a punchline. A recurring cartoon avatar carries the voiceover. 60-600s, weekly cadence.
6
+ - Not for: dense tutorials or data (viewers watch the character and forget numbers), content with no "I" and no stance, voiceover that is not funny or has no pauses.
7
+ - Triggers: theodd1sout, jaiden animations, domics, storytime animation, story time, youtube storytime, cartoon avatar, stick figure story, reaction face, smash cut joke, animated anecdote
8
+ - Tone cell: kinetic-soft
9
+ - Clock: on twos (character at 24 fps stepping, 12 mouth changes per second, camera smooth)
10
+
11
+ ## Look
12
+ - Medium shot (waist up, head 25-35% of frame height), character centered or to one side, the other side holds the thing being talked about (computer, person, object).
13
+ - Background says only where: 3-5 big flat shapes, or plain white or color. It is always lighter, less saturated, with thinner lines than the character.
14
+ - Reaction shot: remove the room, face fills the frame (head radius about one third of frame height), solid cool void with vignette.
15
+ - Gag shot often flips to a very wide shot where the character is tiny.
16
+ - Palette (demo): skin `#FFE2CC`, white hat and shirt `#FFFFFF` with band `#E4E4E8`, shorts `#CDBB97`, character line `#1B1B1F`, wall `#DCE9EC`, table `#E2C29B`, floor `#E8DCC8`, background line `#5B6470` at 3px, void `#3D405B`, mouth `#6E2430`, tongue `#F07B7B`, blush `rgba(255,140,120,.35)`.
17
+ - Character line = head radius x 0.05 (min 4px), so 8px at medium, 12px at close, 6px wide. Character line is at least 2x background line.
18
+ - Shapes: all round and blunt. Head slightly flat circle, bean body, head about 58% of height, tube arms with no elbows or fingers, circle hands. Eyes are dots inside glasses, expression comes mostly from eyebrows. Mouth set: smile, flat, wave, half, full.
19
+ - The source says code-drawn characters read as AI. Use your own character frame library (generated frames per pose) when the final matters.
20
+
21
+ ## Motion
22
+ - Pose-to-pose. Switch pose in 0.1s (expo-out, 2-3 frames at 24 fps), then hold. Body squashes 7% on the switch with a spring settle (about 0.35s).
23
+ - Seventy percent of frames in a real example are exactly still. Hold lengths median 0.40s, moves median 100ms. A second reference runs on twos continuously at 12 drawings per second with longer shots (average 5.7s versus 2.4s). Pick one rhythm.
24
+ - Mouth follows the voice envelope, changed at most every 1/12 s into 3 shapes (closed under 0.06, half under 0.22, open above).
25
+ - Small life: breathing +-1.2% on a 1.6s cycle, blink every 2.4-3.6s (closed 2 frames), eyes shift 0.09R toward what is mentioned, head dips 0.015R per mouth step.
26
+ - Props and symbols are the things that pop: back-out with 15-30% overshoot. The question mark pops in 0.26s at 30% overshoot. A big number slams with 23% overshoot.
27
+ - Transitions: hard cut (default), smash cut to reaction (starts at 1.22x, springs to 1, 55% white flash for 2 frames, low thump), whip pan toward what he looks at (0.26s expo in-out with 16-sample blur), jump-in to about 2x on the same set, over-the-shoulder shot with a foreground head and a cool rim light on the screen side.
28
+
29
+ ## Signature features (judged against these)
30
+ - One sentence is about one shot, cut on the breath between sentences.
31
+ - Pose switch about 0.1s then a real hold. No constant floating.
32
+ - Reaction shot sits in a silence of 0.8-1.5s after the outrageous line.
33
+ - Background is calmer than the character (lighter, thinner line).
34
+ - Character line is thicker than background line by 2x or more.
35
+ - Mouth changes at most 12 times per second.
36
+ - After the punchline the picture holds at least 0.9s, with the sound tail finishing.
37
+ - Only on-screen text and key numbers are shown, usually no burned subtitles for the native platform.
38
+
39
+ ## Beat pattern (30-60s)
40
+ - 0-2s: character is already in place and talking from the first frame, medium shot.
41
+ - 2-4.5s: whip pan or cut to the thing he sees, number slams in on the spoken syllable with a thump and 9 Hz shake for 0.3s.
42
+ - Next: smash cut to the reaction close-up, 1.3s silence with one tiny detail (sweat bead, slow blink, eyebrow drop).
43
+ - 60-75%: hard cut to a wide shot for the contrast gag, then jump-in to 1.9x on the punchline.
44
+ - Last 1.5s: shrug or question mark pops, then hold at least 0.9s.
45
+ - A 60s piece repeats this 3-5 times. Average shot in the demo was 1.75s.
46
+
47
+ ## Sound
48
+ Voiceover first, music sparse or none. Effect set: whoosh on pans, keyboard clicks, low "dun" on smash cut, thump on numbers, crickets in the silence, small pip and boing on symbols.
49
+
50
+ ## Build it in HyperFrames
51
+ - Draw the room once as a large world canvas (static parts cached) and change only the camera between wide, medium and close shots, so cuts match. World must be larger than the farthest camera move or black edges appear.
52
+ - Quantize character animation with `step(t, 24)`, mouth with `step(t, 12)`. Camera stays at full frame rate.
53
+ - Export the voice RMS envelope as a 60 fps array and read it in the render, so changing the voice track updates the mouth.
54
+ - Smash zoom must clamp at 1 or above to avoid exposing the edge.
55
+
56
+ ## Watch out
57
+ - Animating everything. The style lives in cut and hold.
58
+ - Detailed backgrounds that pull the eye off the face.
59
+ - Moving on to the next sentence immediately after the joke.
60
+ - A whip pan that cuts mid-sentence. Cut and subtitle change happen on the same frame in the gap.
@@ -0,0 +1,53 @@
1
+ # Swirl Brushwork (post-impressionist)
2
+
3
+ - id: `swirl-brushwork`
4
+ - Source: huashu-art-motion `09_postimp.md` (MIT)
5
+ - Best for: emotional launch films, night scenes, brand stories that want a hand-painted, vibrating look
6
+ - Not for: dense data screens, small UI text, anything needing crisp edges
7
+ - Triggers: van gogh, starry night, swirl, post-impressionist, thick paint, impasto, painterly night sky, oil painting video
8
+ - Tone cell: kinetic-soft
9
+ - Clock: on twos (brush seeds change at 8 fps, shapes stay fixed)
10
+
11
+ ## Look
12
+ Palette by region, 6-8 mixed hues each, never one flat blue.
13
+ - Wall/background blues: `#7f9be6 #5f7fd8 #a7bbf2 #6c6fd2 #8ad0e6 #c3cbf6 #4f6cc8 #9a8fe0`
14
+ - Sky: `#22339a #2f4fb8 #5c86dc #8fb6ee #1b2a78 #3c6bd0`
15
+ - Ground (warm contrast): `#c0573c #a8453a #d7774a #8e3b30 #5f8f6a #c96a52 #e08a5c`
16
+ - Outline: deep blue, 4.5px, mixed 40-45% into the stroke color.
17
+ Brushwork is directional: strokes follow a flow field, so every region has its own grain. Compose for the subject, not a fixed room; keep the sky or background as the swirl carrier.
18
+
19
+ ## Motion
20
+ - Strokes re-seed at 8 fps for a living surface, but stroke positions stay anchored (see Watch out).
21
+ - Swirl field rotates slowly (about 0.3 rad/s) around 2-3 vortex centers.
22
+ - Light halos expand as dashed rings; flame-like shapes sway along the direction field.
23
+ - Transition family ("how you enter it"): the old frame is pulled into the swirl, new image resolves out of spiral strokes.
24
+
25
+ ## Signature features (judged against these)
26
+ - Three separate stroke passes: vertical long strokes for walls (cell 14, len 64, w 8), perspective-aligned strokes for floors (cell 12, len 46, w 8), short strokes for everything else (cell 10, len 22, w 6.5).
27
+ - Per-region palettes of 6-8 hues, mixed 30-45% with the base color.
28
+ - Outline pass at 0.8-0.9 opacity in dark blue.
29
+ - Small props rendered in their own small-stroke layer, not the big-brush pass.
30
+ - Visible spiral strokes in the sky that rotate.
31
+ - Subjects get a fine-stroke pass inside their silhouette, then missing outline lines are patched back in.
32
+ - Glows read as concentric rings, not soft gradients.
33
+
34
+ ## 10-second beat seed
35
+ - 0-1.2s: dark swirling sky fills frame, one bright focal glow.
36
+ - 1.2-6s: subject and props paint in; halos pulse outward.
37
+ - 6-7.5s (hero): vortex tightens around the focal point, text lands on a calm patch.
38
+ - 8.8-10s: hold the end frame, rings keep expanding slowly.
39
+
40
+ ## Sound
41
+ Sparse piano or strings, 70-85 BPM, minor-to-major lift. Soft swell on the vortex tighten, a single chime on the halo ring.
42
+
43
+ ## Build it in HyperFrames
44
+ Canvas 2D flow-field strokes, one `strokes(region, params)` function per pass.
45
+ - Flow field angle from seeded noise plus region rules (wall vertical, floor toward a vanishing point, sky along nearest vortex tangent).
46
+ - Draw a flat base layer first, then strokes over it with region masks; small props get their own layer composited with source-atop.
47
+ - Seed strokes by cell index, not by a running random stream, so changing colors never reshuffles later strokes.
48
+
49
+ ## Watch out
50
+ - The heaviest style in the set (about 110 ms per frame in the source). Cache static regions, budget for it.
51
+ - Running one parameter set over the whole image turns into carpet. Always split into three passes.
52
+ - Small objects get shredded by big strokes. Isolate them in a prop layer.
53
+ - Color jitter alone gives "one blue with noise". The look comes from a dozen hues per region.