mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-11 14:50:02 +00:00
feat(skills): c2v mining pass — 7 new blueprints, 10 new rules, compacted recipe corpus (#2680)
* feat(skills): c2v mining pass over animation blueprints and rules Compacts ~45 existing animation rules/blueprints into tighter recipe form (net -3.4k lines) and adds 17 mined from the c2v corpus: - 7 blueprints: agent-progress-theater, camera-journey, fixed-anchor-cycle, panel-edit-live-sync, prompt-type-submit-generate, transcript-scroll-artifact-reveal, zoom-out-workspace-reveal - 10 rules: 3d-camera-flight, anchored-layout-expand, chart-scrub-readout, chromatic-glitch, control-target-sync, cursor-drag, gradient-text-sweep, multi-cursor-choreography, particle-burst, theme-crossfade-morph Both indexes updated. * feat(skills): sync product-launch script bank with mined blueprint roles The role->blueprint script bank in product-launch-video/story-design.md is kept 1:1 with blueprints-index role declarations, which the c2v mining pass expanded. Adds the 25 missing entries (script-shape descriptor + example lines + pattern): 13 for the 7 new blueprints, 12 for role widenings on 7 existing ones (cursor-ui-demo, dataviz-countup, titlecard-reveal, et al.), and states the 1:1 sync contract in the bank's intro. * docs(skills): cover constellation-hub scatter-drift variant in the script bank Review follow-up on #2680: the SOCIAL_PROOF constellation-hub entry patterned only the orbit shape; the c2v pass added a scatter-drift end-card variant with the opposite geometry (no hub, no ring). Adds an example line and extends the pattern so a scatter-drift beat's VO isn't steered toward the orbit shape.
This commit is contained in:
@@ -5,8 +5,13 @@
|
||||
**roles served**
|
||||
|
||||
- Problem (from `problem-mockup-overwhelm`): when the problem beat must first show "too many tools / too much surface area" and then put **the viewer inside it** — a literal swap of subject (product → person) followed by a closing-in that feels invasive. Reach for it when the pain is "you're buried," not "this metric is bad" (that's `dataviz-countup`).
|
||||
- Problem (from `desktop-clutter-accumulation`): when the overwhelm is a **workspace**, not a tool
|
||||
count — live windows, stickies, and alert toasts pile up until the frame is chaotically full, and
|
||||
the beat resolves not by closing in but by shoving the clutter aside and asking the question.
|
||||
Reach for this variant when the pain lands on words ("how can you X… when you spend months on
|
||||
Y?"), not on a surrounded avatar.
|
||||
|
||||
**duration**: 6–9s
|
||||
**duration**: 6–9s (clutter-shove-to-question variant ~10s)
|
||||
|
||||
**shot structure** (a `[bg]` canvas; recognizable surfaces first, the viewer's avatar revealed underneath, then a radial crowd)
|
||||
|
||||
@@ -14,8 +19,20 @@
|
||||
- **Scene 2 (~1.6–3.0s) — density amplifies.** `[platform icons / logos]` scatter in around the mockups (staggered), used purely as **density markers** — "look how much surface area," not animated dials.
|
||||
- **Scene 3 (~3.0–4.6s) — the morph (signature move).** The CENTER mockup MORPHS: its content fades out, the container reshapes, and the viewer's `[avatar]` is revealed **underneath** — a literal swap of subject, product → person.
|
||||
- **Scene 4 (~4.6–end) — close-in.** `[task bubbles / demands]` close in from ALL sides toward the avatar (radial staggered entry). The avatar **stays put** while the bubbles invade — the claustrophobia comes from being surrounded, never from a camera push. Holds on the crowded state.
|
||||
- **Variant — clutter-shove-to-question** (replaces Scenes 3–4 and
|
||||
inverts the camera contract — see modifier): accumulation runs under a **slow steady zoom-out** —
|
||||
`[sticky notes]` bounce in springy, `[dashboard / editor windows]` pop and slide up, a stack of
|
||||
`[alert toasts]` slides in at one edge, inner content keeps typing / log-scrolling as live density,
|
||||
windows overlap until the frame is chaotically full. The camera then REVERSES into a quick
|
||||
push-in that **shoves the clutter to the frame edges**, opening central negative space where a
|
||||
`[two-part serif question]` builds word-by-word (line 1 swaps in place to line 2); a `[cursor]`
|
||||
glides in from off-frame and comes to rest under the text; a very slow forward creep and hold.
|
||||
No morph, no avatar — the question is the payoff.
|
||||
|
||||
**motion vocabulary**: staggered scale-in assembly; resting-scale-preserving low float; density-marker icon scatter; content-fade → container-reshape → reveal-anchor-beneath morph; radial close-in entry from all compass points; held crowded end-state.
|
||||
**motion vocabulary**: staggered scale-in assembly; resting-scale-preserving low float; density-marker icon scatter; content-fade → container-reshape → reveal-anchor-beneath morph; radial close-in entry from all compass points; held crowded end-state. Clutter-shove variant: slow steady zoom-out under accumulation; reverse quick push-in; clutter
|
||||
shoved to frame edges opening center negative space; continuous live typing / log scroll inside
|
||||
windows as ambient density; toast-stack slide-in; word-by-word serif build with in-place line swap;
|
||||
cursor glide-to-rest; very slow forward creep + hold.
|
||||
|
||||
**rule mapping**
|
||||
|
||||
@@ -24,5 +41,18 @@
|
||||
- center mockup → avatar morph (HF forbids `width`/`height` tweens → drive the reshape on `scaleX`/`scaleY`, anchor = the avatar layer rendered beneath) → `card-morph-anchor`
|
||||
- radial bubble close-in (positions baked once via `cos`/`sin`, staggered entry) → `gsap-effects` (radial layout) + `spring-pop-entrance` (per-bubble arrival)
|
||||
- low-amplitude float on background mockups/icons → `sine-wave-loop` (low-amplitude register — subtle jitter that composes onto each element's resting scale, never a `fromTo` yoyo that re-tweens to its start)
|
||||
- (variant) zoom-out under accumulation → quick push-in → slow forward creep → `multi-phase-camera`
|
||||
(pull-back / push / drift as sequential phases on one world wrapper; counter-translate math in
|
||||
`viewport-change`)
|
||||
- (variant) clutter shoved to the edges as the push-in lands → `center-outward-expansion` (outward
|
||||
vectors to edge resting positions), fired at the same timeline position as the camera push so the
|
||||
shove reads as CAUSED by it (`reactive-displacement` register)
|
||||
- (variant) word-by-word serif question build → `gsap-effects` (staggered word reveal); the
|
||||
in-place line-1 → line-2 swap → `discrete-text-sequence`
|
||||
- (variant) live typing inside windows → `gsap-effects` (typewriter); the continuous inner
|
||||
log-scroll — composition: looping content translateY via `gsap-effects` (masked)
|
||||
- (variant) cursor glide-in coming to rest → `cursor-click-ripple` (approach portion only — no click)
|
||||
|
||||
**camera modifier**: camera-static — the close-in must read as the world crowding the subject, so the frame holds; a push-in would convert "surrounded" into "zoomed-into" and kill the claustrophobia.
|
||||
**camera modifier**: camera-static — the close-in must read as the world crowding the subject, so the frame holds; a push-in would convert "surrounded" into "zoomed-into" and kill the claustrophobia. The clutter-shove-to-question variant is the sanctioned exception: there the camera IS the
|
||||
storyteller (zoom-out ↔ push-in via `multi-phase-camera`), and the claustrophobia comes from
|
||||
accumulation, not surround — never mix the two resolutions in one shot.
|
||||
|
||||
Reference in New Issue
Block a user