Communitygithub.com

Cut the Curve — 技术目录

五种速度匹配的SEAM转场技术(缩放穿越、反向缩放穿越、切曲线、瀑布剪切、拉焦模糊剪切)加上两种场景内技术——瀑布入场(用于标题卡/片段开场白的交错到达级联)和微调曲线(慢-快-慢三阶段组滑动)。覆盖约12%帧的局部运动速度匹配、Z轴符号规则、尺寸缩放模糊、逐词交错剪切、按元素权重的级联节奏和10/65/25滑动比例。在编写任何转场、文字节拍交接、动态文字入场或组重新定位之前,请先阅读本文。

Cut the Curve — 技术目录 是什么?

Cut the Curve 是一个面向AI代理(如Claude Code、Cursor、Codex)的专业转场技术目录,为动态图形和电影级动画提供精确的速度匹配SEAM规则。它涵盖了七种核心技术:五种SEAM转场——缩放穿越、反向缩放穿越、切曲线、瀑布剪切和拉焦模糊剪切——以及两种场景内技术——瀑布入场和微调曲线。该技能详细规定了速度匹配的参数和机制,包括Z轴缩放符号规则、局部运动(约12%帧)、镜像缓动函数、尺寸缩放模糊(文本10px,全帧18-20px)、逐词交错剪切、按元素权重的级联节奏以及10/65/25的滑动比例。它通过严格的速度匹配(如power4.in/out缓动)确保无缝且电影般的转场效果,特别强调方向连续性(向量法则)和场景内动画节奏。技能中还包括了每种技术的GSAP代码模板和反模式参考,以指导用户避免常见的动画错误。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/heygen-com/hyperframes/tree/HEAD/.agents/skills/cut-the-curve

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Cut the Curve — 技术目录 是做什么的?

五项 SEAM 技术,遵循一个原则:在峰值速度处剪切,匹配剪切两侧的方向和速度——加上两项场景内技术(§6 入场,§7 滑动)。SEAM 法则(向量法则、电流、账本、SEAM 门)位于 motion-doctrine 中;请先阅读它。本技能提供参数和机制。 所有 GSAP 代码模板(worker + registry):examples/gsap-implementation.md。

目录

#技术范围轴用途
1缩放穿越(正向)场景内文字交换Z,朝向观众深入到同一思想的更深处
2反向缩放穿越入场 / 收尾节拍Z,远离观众更大事物的降临
3切曲线场景之间X / Y默认边界,影片的“电流”
4瀑布剪切文字到文字接缝X,逐词大字幕节拍之间的逐词交接
5拉焦模糊剪切同一表面状态交换X / Y / Z你希望被看到的唯一剪切——DSLR 拉焦风格的华彩效果
6瀑布入场场景内 ARRIVAL(无接缝)Y,从下方标题卡、片段开场白、列表介绍
7微调曲线场景内组滑动(无接缝)X / Y重新定位已编排的组以腾出空间

Z 方向即符号

在 Z 轴上,仅“同一轴”是不够的——d(scale)/dt 的符号必须在剪切两侧匹配:

Z 向量退出缩放进入缩放变体
推(正向)增大 1 → 1.2增大 0.75 → 1缩放穿越
拉(反向)缩小 1 → 0.8缩小 1.25 → 1反向缩放穿越

禁止的镜像:退出时缩小,进入时从小到大放大(拉动变为推动——这是常见的,因为从小到大是默认的元素入场方式),以及退出时推动,进入时超大尺寸收缩。这会约束进入场景在 SEAM 窗口期间(剪切 + 约0.5秒)自身的入场方式,而不仅仅是包装器补间:保持进入帧已编排好,或编写其入场以匹配符号。请根据 SEAM 门规则 7 进行验证。

模糊逻辑(所有 Z 变体)

主体峰值模糊原因
文本缩放(标题、词组)10px20px 会使字母形状模糊——剪切被视为故障,而非速度
全帧表面(窗口、卡片、截图)18–20px大表面上较轻的模糊会被视为渲染故障

在交换帧处,两侧使用相同的峰值模糊。模糊应用于包装器,绝不应用于子元素。


1. 缩放穿越(正向)

Z 轴速度匹配剪切;两个文本永远不会同时可见。 所有元素都在增大:退出的文本加速朝向摄像机,在峰值模糊处进行硬交换,进入的文本持续增长进入焦平面。仅适用于标题和短句。总时长约 0.4s。

阶段缩放模糊不透明度缓动函数持续时间
退出1 → 1.20 → 10px1 → 0.15power3.in(不透明度:单独的 none 补间)0.2s
剪切 (tl.set)进入: 0.7510px退出: 0 / 进入: 0.15——
进入0.75 → 110 → 0px0.15 → 1expo.out0.5s

退出不透明度必须是其自身的线性补间——power3.in 会使不透明度在接近1处保持太久。进入时所有属性共享 expo.out。

2. 反向缩放穿越(反向)

拉回镜像:退出的元素后退;进入的元素以超大尺寸出现(仿佛就在摄像机后方)并收缩进入焦平面。所有元素都在缩小。用于 ARRIVAL/收尾节拍——收尾台词、巨大的回应、最终的静止状态——而非普通边界。总时长约 0.7s(30% 退出 / 70% 进入)。

阶段缩放模糊不透明度缓动函数持续时间
退出1 → 0.80 → 10px1 → 0.15power3.in(不透明度:单独的 none 补间)~0.2s
剪切 (tl.set)进入: 1.2510px退出: 0 / 进入: 0.15——
进入1.25 → 110 → 0px0.15 → 1expo.out~0.5s

模糊为 10px 文本缩放;仅当两侧均为全出血表面时使用 18–20px。

符号纪律: 进入场景以编排好的帧形式出现在收缩的包装器内——在 SEAM 窗口内不得有从小到大放大的入场。分阶段入场应在收缩稳定后发生,或者从 ≥1 开始并收缩。

3. 切曲线(默认场景边界)

X/Y 速度匹配剪切——所有场景到场景边界的默认方式,遵循影片的“电流”,而非强调。退出的主角在一个方向上加速,剪切发生在运动中途,进入的主角继续同一方向并减速。总时长约 0.6s;方向:左/右/上/下(默认左侧)。

局部运动: 帧的约12%(1920 分辨率下约 230px)——绝不做全屏移出。

方向退出进入起始 → 结束
向左x: 0 → −230x: +230 → 0
向右x: 0 → +230x: −230 → 0
向上y: 0 → −230y: +230 → 0
向下y: 0 → +230y: −230 → 0

机制:

  • 镜像缓动: 退出使用 power4.in + 进入使用 power4.out,距离和持续时间相同——构成一个 power4.inOut 的两个部分,因此速度在剪切处精确匹配。
  • 淡出技巧: 退出不透明度在其行程的约 25–30% 处完成(淡出约 0.18–0.3s 对比运动 0.3–0.34s);进入在行程中途以约 0.35 的不透明度开始。将最后一个淡出元素的消失时间正好安排在剪切点——如果没有任何元素运动,就会产生死寂感。
  • 退出 0.2–0.4s;进入时间 ≥ 退出时间。可选的模糊 8–10px。
  • 舞台背景: #root 必须是不透明的 (background: var(--canvas-deep, var(--canvas, #000))) —— 中途剪切会打开一个总和透明度 < 1 的窗口,否则会闪现白色(参见 seam-craft)。

push-slide 存在但违反了局部运动和运动中途相位;优先使用切曲线。

4. 瀑布剪切(逐词切曲线)

在单词粒度上实现切曲线——用于文字到文字接缝的最强向左剪切。退出词语在自己的曲线上渐出;进入词语在飞行中级联入场——这是眼睛跨过接缝时跟随的波浪。

范围: 由 worker 在一个多节拍组件(堆叠的全帧 .beat 层)内部编排,而非 registry/injector 类型——它补间的是单词 spans,而非剪辑包装器。进出文本节拍块的边界仍使用正常的 registry 转场。不占用 2–3 个转场预算。

参数值原因
行程±230px (~12% 帧)局部运动 + 速度 > 全帧推动
退出0.34s power4.in加速本身就是剪切
退出淡出0.18s, 与 x 同时开始单词在行程约 25–30% 时消失——无拖影
退出交错+0.022s 按阅读顺序行被剥离,而非整块滑动
进入0.3s power4.out组合的后半部分——速度匹配
进入起始不透明度0.35中途点火;二进制 0→1 会显得突兀
进入间隔0.05s × 0.84 衰减加速级联,解析为编排好的状态

规则:

  • 每个链一个方向,跟随电流。反向缩放只能是该链的 ARRIVAL 节拍。
  • 在构建时将所有单词预设为 x: +230, opacity: 0——仅使用 immediateRender: false 会使未开始的单词在静止时可见。
  • 较短的第一个节拍可以整行退出:其淡出在剪切前约 0.02s 结束,这样当后续单词点火时它仍在运动——无死寂间隙。
  • 仅使用变换/不透明度(查找安全);不透明舞台背景适用。

5. 拉焦模糊剪切(可见剪切)

唯一一种剪切可见的变体:散焦模糊的尖峰隐藏了单帧硬交换——类似手持 DSLR 的拉焦效果。用作同一视觉主题内相同表面的状态交换的偶尔华彩;不能作为默认边界。

与其他变体的区别:退出元素在剪切前保持完全不透明(模糊隐藏了交换——没有早期淡出);缓动函数为 power2.in / power2.out(柔和光学效果,而非动量)。

规则:

  • 仅在叙事节拍处触发,每约 8 秒最多一次;绝不在字幕中间或保持期间触发。
  • 在峰值模糊处剪切(≥6px;峰值为 8–12px,最大 ≤16–18px)——在上升过程中交换会暴露剪切。
  • 微妙的缩放(约 1.06 镜头呼吸)使其看起来像光学效果。
  • 两侧方向相同——向量法则仍然成立。进入时长 ≥ 退出时长。
  • 模糊应用于包装器;绝不在一个元素的一次补间中使用模糊 + 不透明度(无头合成错误);绝不直接模糊 <video>(用包装器包裹它)。

6. 瀑布入场(场景内入场——非接缝)

交错 ARRIVAL 级联:词语/元素从下方(一致方向)快速进入,每个元素在前一个元素稳定前开始——加速的波形最终解析为编排好的布局。适用于标题卡、片段开场白、列表/功能简介。其接缝兄弟是 §4;不要混淆它们的规则:

§6 入场(到达)§4 瀑布剪切(接缝)
不透明度通过 tl.set 在入场时二进制 0→1——永不淡入在行程中途以 0.35 点火——淡出本身就是速度技巧
默认轴Y,从下方X,跟随电流
退出侧无词语通过镜像的 power4.in 渐出

编排:

  • 重叠而非排队——下一个元素在前一个元素稳定后 ±2 帧内开始;级联中的间隔缩小;最后一个元素迅速到位。
  • 速度因权重而异——重/锚定元素移动更远更久;轻词语/标点快速到位:
参数锚定/重正常词语轻/标点
Y 偏移60–80px40–50px30–48px
持续时间0.16–0.20s0.13–0.16s0.10–0.13s
重叠0–2f 间隙1f 重叠1–2f 重叠
  • 缓动函数 power4.out(使用 expo.out 以获得额外的快速感);入场从不使用 .inOut。
  • 每个级联一个方向。
  • 将最后一个词语拆分为片段以延长高潮;片段移动更远。
  • 稳定后,该组通常会滑动以为下一个节拍腾出空间——那是 §7 的内容。

7. 微调曲线(场景内组滑动——非接缝)

慢-快-慢地重新定位已编排的组(词语行、卡片堆叠、列表)以揭示内容或腾出空间。没有内置的缓动函数能产生这种效果——power4.inOut 会生硬地停止。对一个属性链式使用三个补间:

阶段缓动函数距离时间感受
1 斜坡输入power3.in~10%~20%几乎不动——运动被感知,无突兀感
2 爆发none(线性)~65%~18%约 2× 平均像素/帧——有目的性
3 尾段power4.out~25%~62%衰减蠕行至静止——消除停顿感

规则:

  • 尾段时间至少是斜坡输入时间的 3 倍。如果仍有停顿感:延长尾段时间(非距离)或使用 power5.out。
  • 阶段 2 保持线性——缓动它会失去爆发对比。
  • 在阶段 2 期间揭示新内容——爆发掩盖了其出现。
  • 垂直方向保持相同比例;按比例调整距离,保持时间比例。

选择变体

缩放穿越反向缩放穿越切曲线瀑布剪切
范围场景内文字交换入场/收尾节拍场景之间文字到文字接缝
Z 符号/轴增大(推动)缩小(拉动)X / YX,逐词
行程/缩放1→1.2, 然后 0.75→11→0.8, 然后 1.25→1±230px±230px
峰值模糊10px 文本 / 18–20 全帧10px 文本 / 18–20 全帧8–10px 可选无
缓动函数power3.in / expo.outpower3.in / expo.outpower4.in / power4.outpower4.in / power4.out
感受深入到达被侧向携带跨过接缝的波浪

反模式

不要做改为这样做原因
在场景边界使用缩放穿越或反向缩放穿越(状态定价规则)使用切曲线作为默认边界;只在同一场景内文字交换或 beat 收尾时使用缩放变体变体突破场景的上下文;观众感受到连接中断
为缩放穿越使用 20px 文本模糊10px 峰值模糊;仅在两边都是全出血表面时使用 18–20px20px 会使字母形状模糊——剪切被视为故障,而非速度
退出使用 power3.in 同时不透明度也使用 power3.in(缩放穿越)不透明度使用单独的 linear 补间,持续至结束power3.in 保持不透明度接近1太久;在模糊峰值处仍有可见残留
舞蹈效果:所有词语相同重叠/间隔按权重变化:重/锚定词语定期开始;轻词语快速到位;最后的词语拆分片段统一的节奏读起来像 UI 故障
使用 slide-and-fade 注册转场而非切曲线使用切曲线并遵循局部运动 + 相位窗口规则slide-and-fade 在帧中产生死寂间隙;违反局部运动和速度匹配
在任何变体中使用 power4.inOut 作为入口入口使用 power4.out 或 expo.outinOut 在入口端加速,在中间撞击结束;破坏了速度匹配契约
在场景边界的切曲线中途引入临时摄影机视角或“电影边框”在剪切前后保持干净、坚硬的矩形帧边框创造了空虚的视觉子空间;中间剪切在容器边界上显示出空隙
在 SEAM 窗口 (< 0.5s 进入后) 内为进入场景元素使用从小到大放大入场让进入场景以 ≥1 的缩放到达,或在 SEAM 窗口关闭后使用分阶段入场从小到大的入场与反向缩放穿越的收缩符号冲突,破坏了方向契约

速度匹配的数学表达

切曲线 + 瀑布剪切使用镜像的 power4 缓动函数,在剪切点处达到精确的速度匹配:

  • 退出:power4.in,从 0 加速(t=0 时 v=0)到峰值(t=1 时 v 最大)
  • 进入:power4.out,从峰值速度减速(t=0 时 v 最大)到 0(t=1 时 v=0)

结果:剪切点(t_exit=1, t_entry=0)处的瞬时速度相同。

缩放穿越 + 反向缩放穿越在 Z 轴上使用类似原则:

  • 退出:power3.in 加速朝向摄像机(推动)或远离摄像机(拉动)
  • 进入:expo.out 从最大速度减速进入焦平面

在交换帧处,两个补间的瞬时缩放速度匹配,创建一个连续的缩放动作,看似无修剪。

请参阅 examples/gsap-implementation.md 以获取所有七种技术的完整 GSAP 代码模板。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

general-video

>

heygen-com/animejs

Anime.js adapter patterns for HyperFrames. Use when writing Anime.js animations or timelines inside HyperFrames compositions, registering animations on window.__hfAnime, making Anime.js seek-driven and deterministic, or translating Anime.js examples into render-safe HyperFrames HTML.

heygen-com/claude-design-hyperframes

Use when running inside Claude Design specifically. Produces a valid, brand-accurate HyperFrames video draft using pre-valid skeletons. For Claude Code / Cursor / Codex, use the `hyperframes` skill instead.

heygen-com/contribute-catalog

Author a new HyperFrames registry block (caption style, VFX block, transition, lower third) or component (text effect, overlay, snippet) and ship it as an upstream PR to the hyperframes repo. Use ONLY when the user wants to CONTRIBUTE to the public catalog — for in-project caption/transition authoring use the `hyperframes` skill, for installing existing registry items use the `hyperframes-registry` skill.

heygen-com/css-animations

CSS animation adapter patterns for HyperFrames. Use when authoring CSS keyframes, animation-delay based timing, animation-fill-mode, animation-play-state, or CSS-only motion that HyperFrames must seek deterministically during preview and rendering.

heygen-com/gsap

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

heygen-com/hyperframes

A tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline. HyperFrames block, 1920×1080, 8s, 18 variables.

heygen-com/hyperframes

Leaves sweep through the frame and part to reveal the headline. HyperFrames block, 1920×1080, 12s, 11 variables.

heygen-com/hyperframes

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

heygen-com/hyperframes

A single feature card orbits a dot sphere on approved Blender camera motion. HyperFrames block, 1920×1080, 10s, 4 variables.

heygen-com/hyperframes

A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase. HyperFrames block, 1920×1080, 8s, 9 variables.

heygen-com/hyperframes

Glass shards fly in through fog and tile themselves into the headline. HyperFrames block, 1920×1080, 12.16s, 19 variables.

heygen-com/hyperframes

Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.

heygen-com/hyperframes

An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades. HyperFrames block, 1920×1080, 22.5s, 216 variables.

heygen-com/hyperframes

name: embedded-captions

heygen-com/hyperframes

A chain of bevelled cuboids rides a travelling wave as a content carousel. HyperFrames block, 1920×1080, 6.666666666666667s, 40 variables.

heygen-com/hyperframes

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

heygen-com/hyperframes

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

heygen-com/hyperframes

House-style oversized macOS cursor technique for HyperFrames launch videos. Load whenever a scene involves cursors or a pointer-led action, when kicking off a UI scene, when igniting a morph/transition/typing run with a click, or when a scene reads as static, dead, or stale and needs a cheap high-yield source of motion to carry the viewer's eye and segment them out of the stale state. Covers cursor size/look (incl. brand-motif cursors), the off-screen entry law, tip-targeting and the click tap, click-ignites-the-next-beat, and exit / cross-scene handoff.

heygen-com/hyperframes

Turn a weekly changelog .md into a finished branded changelog video (square 1080, ~45-60s, Annie VO, animated brand background, mock-UI visualizations, lowkey captions). Use when the user provides a changelog/digest markdown and wants the weekly video, or says "changelog video". Self-contained — fonts, background, lexicon, and scripts ship in this skill.

相关技能