cut-the-curve

cut-the-curve

热门

技术目录:五种速度匹配的SEAMS(缩放穿越、反向缩放穿越、切曲线、瀑布切、拉焦模糊切)加上两种场景内技术——瀑布入场(用于标题卡/片段开场的交错到达级联)和微推曲线(慢-快-慢三阶段组滑动)。涵盖部分行程(约12%帧)通过镜像power4缓动实现速度匹配、Z轴缩放符号规则、尺寸缩放模糊(10px文字/18-20px全帧)、逐词交错剪切、按元素权重调整级联节奏,以及10/65/25滑动比例。在编写任何过渡、文字节拍交接、动态文字入场或组重新定位之前请先阅读。[深度, 缩放, 反向缩放, 缩放符号, 镜像缩放, 拉焦, 节奏, 速度, 切曲线, 瀑布, 交错, 级联, 动态文字, 标题卡, 片段开场, 微推, 滑动, 缓动, 组运动, Z深度, 动态图形, 电影感, 过渡, 模糊, 方向连续性]

3.6万Star
3412Fork
更新于 2026/7/19
SKILL.md
readonly只读
name
cut-the-curve
description

技术目录:五种速度匹配的SEAMS(缩放穿越、反向缩放穿越、切曲线、瀑布切、拉焦模糊切)加上两种场景内技术——瀑布入场(用于标题卡/片段开场的交错到达级联)和微推曲线(慢-快-慢三阶段组滑动)。涵盖部分行程(约12%帧)通过镜像power4缓动实现速度匹配、Z轴缩放符号规则、尺寸缩放模糊(10px文字/18-20px全帧)、逐词交错剪切、按元素权重调整级联节奏,以及10/65/25滑动比例。在编写任何过渡、文字节拍交接、动态文字入场或组重新定位之前请先阅读。[深度, 缩放, 反向缩放, 缩放符号, 镜像缩放, 拉焦, 节奏, 速度, 切曲线, 瀑布, 交错, 级联, 动态文字, 标题卡, 片段开场, 微推, 滑动, 缓动, 组运动, Z深度, 动态图形, 电影感, 过渡, 模糊, 方向连续性]

切曲线——技术目录

五种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 希望被看到的剪切——单反拉焦效果
6 瀑布入场 场景内到达(无接缝) Y,从下方 标题卡、片段开场、列表介绍
7 微推曲线 场景内组滑动(无接缝) X / Y 重新定位已组合的组以腾出空间

Z方向是符号

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

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

禁止的镜像:后退的退出被从小变大的进入回应(拉翻转为推——常见情况,因为从小变大是默认元素入场),以及推的退出被超大收缩回应。这约束了进入场景在接缝窗口(剪切 + 约0.5秒)内的自身入场,而不仅仅是包装器补间:保持进入帧构图,或编写其入场以匹配符号。根据SEAM门规则7验证。

模糊逻辑(所有Z变体)

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

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


1. 缩放穿越(正向)

Z轴速度匹配剪切;绝不同时显示两个文本。 所有元素增大:退出文字加速朝向相机,硬切换在峰值模糊处隐藏,进入文字继续增大进入焦平面。仅限标题和短句。总时长约0.4秒。

阶段 缩放 模糊 不透明度 缓动 时长
退出 1 → 1.2 0 → 10px 1 → 0.15 power3.in(不透明度:单独none补间) 0.2s
剪切(tl.set 进入: 0.75 10px 退出: 0 / 进入: 0.15
进入 0.75 → 1 10 → 0px 0.15 → 1 expo.out 0.5s

退出不透明度必须是独立的线性补间——power3.in使不透明度在接近1处停留过久。进入时所有属性共享expo.out

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

拉回镜像:退出元素后退;进入元素以超大尺寸到达(仿佛刚在相机后方)并收缩进入焦平面。所有元素缩小。用于到达/高潮节拍——高潮台词、巨大回应、最终状态——而非普通边界。总时长约0.7秒(30%退出 / 70%进入)。

阶段 缩放 模糊 不透明度 缓动 时长
退出 1 → 0.8 0 → 10px 1 → 0.15 power3.in(不透明度:单独none补间) ~0.2s
剪切(tl.set 进入: 1.25 10px 退出: 0 / 进入: 0.15
进入 1.25 → 1 10 → 0px 0.15 → 1 expo.out ~0.5s

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

符号纪律: 进入场景以构图帧形式出现在收缩包装器内——接缝窗口内无从小变大的介绍。阶段性入场在收缩稳定后开始,或从≥1开始并收缩。

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

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

部分行程: 约12%帧(1920下约230px)——绝不全屏移出。

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

机制:

  • 镜像缓动: 退出power4.in + 进入power4.out,相同距离和时长——即一个power4.inOut的两半,因此速度在剪切处精确匹配。
  • 淡出技巧: 退出不透明度在其行程约25–30%处完成(淡出约0.18–0.3秒 vs 运动0.3–0.34秒);进入在路径中途约0.35不透明度处点燃。计时最后一个淡出元素恰好在剪切处消失——无任何移动的间隙读作死寂。
  • 退出0.2–0.4秒;进入≥退出。可选模糊8–10px。
  • 舞台背景: #root必须不透明(background: var(--canvas-deep, var(--canvas, #000)))——中间窗口剪切会打开一个总和透明度<1的窗口,否则会闪烁白色(参见seam-craft)。

push-slide存在但违反部分行程和运动中途阶段;优先使用切曲线。

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

在单词粒度上应用切曲线——文字到文字接缝中最强的向左剪切。退出单词沿各自曲线加速退出;进入单词在半空中级联进入——眼睛跨越接缝的波浪。

范围: 在worker编写的多节拍合成(堆叠的全帧.beat层)内,而非注册/注入类型——它补间单词跨度,而非剪辑包装器。进出文字节拍块的边界仍使用正常注册过渡。不计入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衰减 加速级联,最终构图

规则:

  • 每个链一个方向,遵循流向。反向缩放仅作为链的到达节拍。
  • 在构建时将所有单词预设为x: +230, opacity: 0——仅immediateRender: false会使未启动的单词在静止时可见。
  • 短的第一节拍可以整行退出:其淡出在剪切前约0.02秒结束,以便在下一个单词点燃时仍在运动——无死寂间隙。
  • 仅变换/不透明度(安全);不透明舞台背景适用。

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

唯一一种剪切被看到的变体:散焦模糊尖峰隐藏单帧硬切换——手持单反拉焦效果。偶尔用于同一视觉主题内同一表面的状态交换;绝非默认边界。

与其他变体的区别:退出保持完全不透明直到剪切(模糊隐藏切换——无提前淡出);缓动power2.in / power2.out(柔和光学,而非动量)。

规则:

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

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

交错到达级联:单词/元素从下方快速进入(一个一致方向),每个在前一个稳定之前开始——一个加速波,最终形成构图布局。标题卡、片段开场、列表/功能介绍。接缝兄弟是§4;不要混合它们的规则:

§6 入场(到达) §4 瀑布切(接缝)
不透明度 通过tl.set在入场时二进制0→1——绝不淡出 在中途0.35处点燃——淡出本身就是速度技巧
默认轴 Y,从下方 X,遵循流向
退出侧 单词在镜像power4.in上加速退出

编排:

  • 重叠,而非排队——下一个元素在前一个稳定后±2帧内开始;间隙在级联中缩小;最后一个元素快速到位。
  • 速度因权重而异——重/锚元素移动更远更久;轻单词/标点快速到位:
参数 锚/重 普通单词 轻/标点
Y偏移 60–80px 40–50px 30–48px
时长 0.16–0.20s 0.13–0.16s 0.10–0.13s
重叠 0–2帧间隙 1帧重叠 1–2帧重叠
  • 缓动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 / Y X,逐词
行程/缩放 1→1.2,然后0.75→1 1→0.8,然后1.25→1 ±230px ±230px
峰值模糊 10px文字/18–20全帧 10px文字/18–20全帧 8–10px可选
缓动 power3.in / expo.out power3.in / expo.out power4.in / power4.out power4.in / power4.out
感觉 穿越深入 到达 被侧向携带 跨越接缝的波浪

反模式

不要这样做 改为这样做
缩放穿越期间两个文本可见 在模糊峰值处硬切,一次一个文本
文字缩放主体上使用20px模糊 文字10px;仅全帧使用18–20px
反向缩放退出 → 从小变大进入(或推 → 超大收缩) 匹配缩放速度符号;在剪切±0.1秒处验证
进入合成在Z接缝包装器补间下自身的放大入场 以构图状态到达;在接缝稳定后安排入场或匹配符号
交换处模糊/不透明度不匹配 在剪切帧处使用相同值
温和进入缓动(power2.out 镜像退出:power4.out / expo.out
全屏退出/进入 部分行程(约12%)+ 提前淡出
剪切任一侧使用.inOut缓动 镜像power4.in / power4.out
单个元素在其剪切前长时间淡出 淡出在剪切前约0.02秒结束,或使用单词级联
瀑布级联中相等间隔 每个单词间隔缩小×0.84
正文文本使用缩放穿越 仅限标题和短句
场景剪切不使用切曲线 它是默认边界
连续边界方向相反 单一流向;保留向量用于意义表达
中间窗口剪切后未上色的#root 不透明舞台背景
排队入场(每个等待前一个稳定) 重叠±1–2帧——级联是波浪,而非队列
每个级联元素使用相同偏移/时长 按权重变化:锚移动更远,标点快速到位
§6入场中使用渐变不透明度淡出 通过tl.set二进制0→1——淡出会破坏快速感(接缝剪切淡出;入场不淡出)
组滑动使用单一缓动(power4.inOutslow() 使用§7三阶段链
微推尾部短于加速进入的3倍 延长尾部时间,而非距离

代码

所有GSAP模板——worker编写版本、注册gsap_template、组合切曲线+缩放、瀑布DOM/CSS/JS、拉焦——位于examples/gsap-implementation.md