剪斷曲線 — 技術目錄 是做什麼的?
五種無縫技術,一個原則:在速度峰值處剪輯,確保剪輯兩側的方向和速度一致 — 加上兩種場景內技術(§6 進場,§7 滑動)。
無縫法則 — 向量法則、電流、總帳、無縫閘門 — 位於 motion-doctrine 中;請先閱讀該文檔。本技能涵蓋參數和機制。
所有 GSAP 程式碼模板(工作器 + 註冊表):examples/gsap-implementation.md。
目錄
| # | 技術 | 範圍 | 軸向 | 用途 |
|---|---|---|---|---|
| 1 | 推近穿越(正向) | 場景內文字交換 | Z,朝向觀看者 | 深入同一思想的進階 |
| 2 | 反向推近穿越 | 到來 / 回報節拍 | Z,遠離觀看者 | 更大事物的降臨 |
| 3 | 剪斷曲線 | 場景之間 | X / Y | 預設邊界,影片的「電流」 |
| 4 | 瀑布剪輯 | 文字到文字的無縫 | X,每個字 | 大字節拍之間的字級交接 |
| 5 | 對焦模糊剪輯 | 同一表面的狀態交換 | X / Y / Z | 你希望被「看見」的剪輯 — DSLR 對焦旋轉的華麗效果 |
| 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 秒)進入場景的自身進入方式,而不僅僅是包裝補間:保持進入幀的構成,或編寫其進入方式以匹配符號。請根據無縫閘門規則 7 進行驗證。
模糊邏輯(所有 Z 變體)
| 主體 | 峰值模糊 | 原因 |
|---|---|---|
| 文字比例(標題、詞組) | 10px | 20px 會塗污字母形態 — 剪輯看起來像故障,而非速度 |
| 全幀表面(視窗、卡片、螢幕截圖) | 18–20px | 在較大表面上的較輕模糊看起來像渲染問題 |
交換幀處兩側的峰值模糊相同。模糊包裝層(WRAPPER),絕不模糊子元素。
1. 推近穿越(正向)
Z 軸速度匹配剪輯;絕不讓兩段文字同時可見。 一切都在放大:退出的文字加速朝向相機,在峰值模糊處進行硬交換,進入的文字繼續放大進入焦平面。僅適用於標題和短語。總計約 0.4 秒。
| 階段 | 比例 | 模糊 | 不透明度 | 緩動函數 | 持續時間 |
|---|---|---|---|---|---|
| 退出 | 1 → 1.2 | 0 → 10px | 1 → 0.15 | power3.in(不透明度:獨立的 none 補間) | 0.2 秒 |
剪輯 (tl.set) | 進入: 0.75 | 10px | 退出: 0 / 進入: 0.15 | — | — |
| 進入 | 0.75 → 1 | 10 → 0px | 0.15 → 1 | expo.out | 0.5 秒 |
退出不透明度必須是其自身的線性補間 — power3.in 過久地保持不透明度接近 1。
進入時所有屬性共享 expo.out。
2. 反向推近穿越(反向)
拉回鏡像:退出元素後退;進入元素以過大比例到達(彷彿就在相機後方)並縮回至焦平面。一切都在縮小。用於到來 / 回報節拍 — 一句回報台詞、一個巨大的回應、一個持久的結束狀態 — 絕不用於普通邊界。總計約 0.7 秒(30% 退出 / 70% 進入)。
| 階段 | 比例 | 模糊 | 不透明度 | 緩動函數 | 持續時間 |
|---|---|---|---|---|---|
| 退出 | 1 → 0.8 | 0 → 10px | 1 → 0.15 | power3.in(不透明度:獨立的 none 補間) | 約 0.2 秒 |
剪輯 (tl.set) | 進入: 1.25 | 10px | 退出: 0 / 進入: 0.15 | — | — |
| 進入 | 1.25 → 1 | 10 → 0px | 0.15 → 1 | expo.out | 約 0.5 秒 |
模糊為 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. 瀑布剪輯(逐字剪斷曲線)
在「字」粒度上的剪斷曲線 — 用於文字到文字無縫的最強向左剪輯。退出的字詞沿各自曲線加速淡出;進入的字詞在中途級聯進入 — 一種讓視線穿過無縫的波浪。
範圍: 由工作器在一個多節拍合成(堆疊的全幅 .beat 圖層)內編寫,不是註冊表/注入器類型 — 它補間的是文字跨度,而非剪輯包裝層。進入和離開文字節拍區塊的邊界仍會獲得正常的註冊表轉場。不計入 2–3 個轉場預算。
| 參數 | 值 | 原因 |
|---|---|---|
| 移動距離 | ±230px(約 12% 畫面) | 局部移動 + 速度 > 全幅推 |
| 退出 | 0.34 秒 power4.in | 加速本身就是剪輯 |
| 退出淡出 | 0.18 秒,與 x 同時開始 | 字詞在約 25–30% 移動後消失 — 無殘影 |
| 退出交錯 | 依照閱讀順序 +0.022 秒 | 行被剝離,而非整個區塊滑動 |
| 進入 | 0.3 秒 power4.out | 複合體的後半段 — 速度匹配 |
| 進入起點不透明度 | 0.35 | 中途點亮;二進制 0→1 會顯得突兀 |
| 進入間隔 | 0.05 秒 × 0.84 衰減 | 加速級聯,穩定後構成 |
規則:
- 每個鏈條只有一個方向,乘著電流前進。反向推近僅作為鏈條的到來節拍。
- 在構建時預先將所有字詞設定為
x: +230, opacity: 0— 僅設定immediateRender: false會使未開始的字詞在靜止時可見。 - 一個簡短的第一節拍可以整行退出:其淡出在剪輯前約 0.02 秒結束,這樣當下一個字詞點亮時它仍在划過 — 無死區間隙。
- 僅使用變換/不透明度(查找安全);適用於不透明舞台背景。
5. 對焦模糊剪輯(可視剪輯)
唯一一種剪輯是「可見」的變體:一個失焦的模糊尖峰隱藏了單幀的硬交換 — 類似手持 DSLR 的對焦旋轉。用於同一視覺主題內同一表面的狀態交換的偶爾華麗效果;絕非預設邊界。
與其他變體的不同之處:退出保持完全不透明直到剪輯(模糊隱藏了交換 — 沒有提前淡出);緩動函數 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.20 秒 | 0.13–0.16 秒 | 0.10–0.13 秒 |
| 重疊 | 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–20px | 文字 10px / 全幀 18–20px | 可選 8–10px | 無 |
| 緩動函數 | power3.in / expo.out | power3.in / expo.out | power4.in / power4.out | power4.in / power4.out |
| 感覺 | 深入推進 | 抵達 | 被側向攜帶 | 跨越無縫的波浪 |
反模式
| 不要這樣做 |
|---|
| 在 Z 軸剪輯上混合符號 — 推接拉的鏡像違反了向量法則 |
| 在瀑布剪輯的入口使用二進制不透明度 0→1 — 它需要 0.35 的中途點亮 |
| 對「剪斷曲線」使用全屏移動 — 永遠不要超過約 12% 的畫面 |
| 在「微推曲線」的外推半段上使用緩動 — 保持第 2 階段線性 |
| 將對焦模糊剪輯用作預設場景邊界 — 保留給偶爾的華麗效果 |
| 在單個元素上同時補間模糊和不透明度 |
| 在無縫窗口內(剪輯前後約 0.5 秒)向進入場景添加從小變大的介紹 |
參考:motion-doctrine(無縫法則 — 向量、電流、閘門);examples/gsap-implementation.md(工作器 + 註冊模板)。