heygen-com/hyperframes2 files

Cut The Curve

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

Specification
Skill ID
heygen-com/hyperframes/cut-the-curve
Publisher
heygen-com
Repository
hyperframes
Installs
0
Files
2
Synced
Sep 16, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

heygen-com/hyperframes/cut-the-curveInstalls these files
  • SKILL.md
  • examples/gsap-implementation.md

What this skill tells the agent

Cut the Curve — the technique catalog

Five SEAM techniques, one principle: cut at peak velocity, match direction and speed on both sides of the cut — plus the two in-scene techniques (§6 arrivals, §7 slides). The seam LAW — vector law, the current, the ledger, the Seam Gate — lives in motion-doctrine; read it first. This skill is the parameters and mechanics. All GSAP code templates (worker + registry): examples/gsap-implementation.md.

Catalog

#TechniqueScopeAxisUse for
1Zoom-Through (forward)Within-scene text swapZ, toward viewerprogressing deeper into the same thought
2Inverse Zoom-ThroughArrival / payoff beatZ, away from viewersomething bigger lands
3Cut the CurveBetween scenesX / Ythe default boundary, the film's current
4Waterfall CutText-to-text seamX, per-wordword-level handoff between big-text beats
5Rack-Focus Blur-CutSame-surface state swapX / Y / Zthe one cut you want SEEN — a DSLR focus-pull flourish
6Waterfall EntryIn-scene ARRIVAL (no seam)Y, from belowtitle cards, segment openers, list intros
7Nudge CurveIn-scene group slide (no seam)X / Yrepositioning a composed group to make room

Z direction is a sign

"Same axis" is not enough on Z — the sign of d(scale)/dt must match across the cut:

Z vectorExit scaleEntry scaleVariant
Push (forward)growing 1 → 1.2growing 0.75 → 1zoom-through
Pull (back)shrinking 1 → 0.8shrinking 1.25 → 1inverse zoom-through

Banned mirrors: a receding exit answered by a grow-from-small entry (pull flips to push — the common one, since grow-from-small is the default element entrance), and a push exit answered by an oversized retraction. This binds the incoming scene's OWN entrances during the seam window (cut + ~0.5s), not just the wrapper tween: hold the incoming frame composed, or author its entrance to match the sign. Verify per Seam Gate rule 7.

Blur logic (all Z variants)

SubjectPeak blurWhy
Text-scale (headline, word group)10px20px smears letterforms — the cut reads as a glitch, not speed
Full-frame surface (window, card, screenshot)18–20pxlighter blur on a big surface reads as a rendering hiccup

Same peak blur on both sides at the swap frame. Blur the WRAPPER, never children.


1. Zoom-Through (forward)

Z-axis velocity-matched cut; never both texts visible. Everything GROWS: the outgoing text accelerates toward camera, a hard swap hides at peak blur, the incoming text keeps growing into the focal plane. Headlines and short phrases only. Total ≈ 0.4s.

PhaseScaleBlurOpacityEaseDuration
Exit1 → 1.20 → 10px1 → 0.15power3.in (opacity: separate none tween)0.2s
Cut (tl.set)in: 0.7510pxout: 0 / in: 0.15
Entry0.75 → 110 → 0px0.15 → 1expo.out0.5s

Exit opacity MUST be its own linear tween — power3.in holds opacity near 1 too long. On entry all properties share expo.out.

2. Inverse Zoom-Through (backward)

The pull-back mirror: the outgoing element RECEDES; the incoming arrives OVERSIZED (as if just behind camera) and retracts into the focal plane. Everything SHRINKS. Spend on ARRIVAL/payoff beats — a payoff line, a giant reply, a held end-state — never ordinary boundaries. Total ≈ 0.7s (30% exit / 70% entry).

PhaseScaleBlurOpacityEaseDuration
Exit1 → 0.80 → 10px1 → 0.15power3.in (opacity: separate none tween)~0.2s
Cut (tl.set)in: 1.2510pxout: 0 / in: 0.15
Entry1.25 → 110 → 0px0.15 → 1expo.out~0.5s

Blur is 10px text-scale; 18–20px only when both sides are full-bleed surfaces.

Sign discipline: the incoming scene arrives as a composed frame inside the retracting wrapper — no grow-from-small intro in the seam window. Staged entrances happen after the retraction settles, or start ≥1 and retract.

3. Cut the Curve (default scene boundary)

X/Y velocity-matched cut — the default for ALL scene-to-scene boundaries, in the film's current, not an accent. The outgoing hero accelerates in one direction, the cut lands mid-motion, the incoming hero continues the SAME direction and decelerates. Total ≈ 0.6s; directions LEFT / RIGHT / UP / DOWN (default LEFT).

Partial travel: ~12% of frame (≈230px at 1920) — never full off-screen moves.

DirectionExitEntry start → end
Leftwardx: 0 → −230x: +230 → 0
Rightwardx: 0 → +230x: −230 → 0
Upwardy: 0 → −230y: +230 → 0
Downwardy: 0 → +230y: −230 → 0

Mechanics:

  • Mirrored eases: exit power4.in + entry power4.out, same distance and duration — the two halves of one power4.inOut, so velocity matches exactly at the cut.
  • The fade trick: exit opacity completes at ~25–30% of its travel (fade ≈ 0.18–0.3s vs motion 0.3–0.34s); entry ignites at ~0.35 opacity mid-path. Time the last fading element to die right at the cut — a gap where nothing moves reads as dead air.
  • Exit 0.2–0.4s; entry ≥ exit. Optional blur 8–10px.
  • Stage ground: #root must be opaque (background: var(--canvas-deep, var(--canvas, #000))) — the mid-window cut opens a summed-opacity < 1 window that flashes white otherwise (see seam-craft).

push-slide exists but violates partial-travel and mid-motion phase; prefer cut-the-curve.

4. Waterfall Cut (word-by-word cut-the-curve)

Cut-the-curve at WORD granularity — the strongest leftward cut for text-to-text seams. Outgoing words ramp out on their own curves; incoming words cascade in mid-flight — a wave the eye rides across the seam.

Scope: worker-authored inside one multi-beat comp (stacked full-frame .beat layers), NOT a registry/injector type — it tweens word spans, not clip wrappers. The boundary into and out of the text-beat block still gets a normal registry transition. Does not count against the 2–3 transition budget.

ParameterValueWhy
Travel±230px (~12% frame)partial travel + velocity > full-frame push