Communitygithub.com

AE GSAP 動畫轉譯

將 GreenSock/GSAP 動畫思維轉換為 Adobe After Effects 關鍵影格、控制器 Null、文字動畫器、表達式及 ExtendScript 腳本。當使用者要求類似 GSAP 的專業動畫、GreenSock 風格序列、時間軸/交錯/淡入淡出/跟隨/Flip/SplitText 模式,或要求將 GSAP 動畫思路轉換為 AE 實現時使用。

AE GSAP 動畫轉譯 是什麼?

此技能旨在將 web 開發熟知的 GSAP (GreenSock Animation Platform) 動畫語法與思維模式,精準轉譯為 Adobe After Effects 中的原生實現。它並非在 AE 中運行 GSAP,而是提供一套完整的對應規則與工作流程,幫助動畫師與開發者將 GSAP 的理念(如 `gsap.to`、`gsap.fromTo`、`stagger`、`ease`、`ScrollTrigger` 等)轉換為 AE 的關鍵影格、表達式、控制器 Null、文字動畫器與 ExtendScript 腳本。 此技能支援多種平台,主要針對 Adobe After Effects,並與 AEMotion 技能協作,確保腳本生成符合 AE 的 ES3 安全規範。它詳細說明了 GSAP 核心概念、時間軸語法、淡入淡出映射、ScrollTrigger 模式、插件等效功能(如 Flip、SplitText、DrawSVG)以及實用函數的 AE 對應方案。透過使用此技能,使用者可以維護 GSAP 風格的邏輯,同時產生穩定、高效能的 AE 動畫,避免直接複製瀏覽器程式碼或使用不相容的 JavaScript 語法。此技能還強調了效能優化規則、建構工作流程與常見陷阱,確保最終輸出的 AE 動畫既專業又可靠。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/itswenxin/motion-agent/tree/HEAD/agent-skills/ae-gsap-motion

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

AE GSAP 動畫轉譯 是做什麼的?

在進行需要 GreenSock/GSAP 動畫語法的 After Effects 工作時,請在 skills/AEMotion/SKILL.md 之後使用此技能。GSAP 本身無法在 AE 中執行。請將其概念轉換為 AE 原生的關鍵影格、表達式、控制器 Null、文字動畫器、時間重新對映、遮罩、攝影機和腳本。

本地安裝的官方來源技能(如果您的 Codex 技能位於其他位置,請調整根目錄):

  • $CODEX_HOME/skills/gsap-core/SKILL.md
  • $CODEX_HOME/skills/gsap-timeline/SKILL.md
  • $CODEX_HOME/skills/gsap-scrolltrigger/SKILL.md
  • $CODEX_HOME/skills/gsap-plugins/SKILL.md
  • $CODEX_HOME/skills/gsap-utils/SKILL.md
  • $CODEX_HOME/skills/gsap-performance/SKILL.md

僅在需要精確語義時,才閱讀相關的官方 GSAP 技能。依照 AEMotion 的要求,確保 AE 腳本符合 ES3 安全規範。

核心轉譯

GSAP 概念AE 轉譯
gsap.to(target, vars)將當前值保留為起始值;在 start + duration 處設定結束關鍵影格。
gsap.from(target, vars)從 vars 設定明確的起始關鍵影格;動畫過渡到當前/最終的設計值。避免後續穩定狀態被覆寫而產生非預期的 "immediateRender"。
gsap.fromTo(target, from, to)明確設定起始和結束關鍵影格。最適合可靠的腳本化 AE 建構。
gsap.set(target, vars)在當前時間設定數值,或建立一個保持關鍵影格(hold keyframe),以備後續動畫依賴於此。
duration、delay將秒數轉換為合成時間;對於 30fps,1 個影格 = 1/30。
ease在關鍵影格上套用時間曲線(Temporal ease),或使用表達式曲線。匹配感覺,而非精確的瀏覽器數學計算。
stagger按影格偏移圖層/關鍵影格的起始時間;對於文字,偏好使用文字動畫器選擇器(Text Animator Selectors)或分解文字圖層(Decompose Text layers)。
repeat / yoyo使用循環表達式、時間重新對映或重複的關鍵影格循環。如果表達式變得脆弱,則將其烘焙(Bake)。
autoAlpha不透明度關鍵影格;對於可視範圍外的硬切,可選擇性地停用/啟用圖層。
相對數值 +=、-=在寫入新關鍵影格之前,讀取當前 AE 屬性並加上增量。
基於函數的數值在 JSX 或表達式選擇器中使用基於索引的計算。
gsap.defaults()JSX 中的共享配置物件,或使用帶有持續時間/淡入淡出/擴散的控制項滑桿的控制器 Null。
matchMedia() / 減少動畫(reduced motion)建立替代的縮放/滑桿預設,例如「動畫量」(Motion Amount);對於減少動畫,使用較短的距離、較低的旋轉度或僅使用不透明度。

時間軸語法

在建立 AE 關鍵影格之前,先撰寫一份精簡的時間軸規格:

label intro @ 0.00
S06_Card_Demo.fromTo position [x0,y0,z0] -> [x1,y1,z1] dur .55 ease power3.out @ intro
S06_Card02.to scale 70 -> 100 dur .35 ease back.out @ <+.08
cards.stagger orientation += [0,18,-8] dur .6 ease power2.inOut each .04 from center

然後將其轉換為 AE 表格:

欄位說明
layer精確的 AE 圖層名稱或模式。
propertyAE 屬性路徑:位置 (Position)、縮放 (Scale)、方向 (Orientation)、不透明度 (Opacity)、遮罩路徑 (Mask Path)、時間重新對映 (Time Remap) 等。
from/to以 AE 單位表示的明確數值。
start/duration秒數或影格數。
ease映射到 AE 時間曲線的 GSAP 風格淡入淡出名稱。
offset絕對時間、標籤、上一個起始 <、上一個結束 > 或交錯偏移。
controller應該驅動數值的可選 Null 圖層/滑桿。

偏好使用時間軸標籤勝過分散的 delay 數學運算。對於複雜區段,為每個序列建立一個控制器 Null,例如 CTRL_S06_CARDS,並附帶如「動畫量」(Motion Amount)、「交錯影格」(Stagger Frames)、「深度擴散」(Depth Spread) 和「進度」(Progress) 等滑桿。

淡入淡出映射

使用以下內容作為起點,並透過捕捉畫面進行視覺調整:

GSAP 淡入淡出AE 感覺
none線性插值。用於跟隨/進度驅動的動畫。
power1.out溫和的淡出;影響力低。
power2.out標準的 UI 淡出。
power3.out快速開始,強力穩定;適合卡片和標題。
power3.inOut對稱平滑移動;適合攝影機或群組移動。
expo.out非常快的到達,然後緩慢穩定;謹慎使用。
back.out(1.7)在結束點之外添加一個過衝關鍵影格,然後穩定。
elastic.out()使用表達式彈簧或 3-5 個衰減的過衝關鍵影格。
bounce.out使用階梯狀撞擊關鍵影格;不要只用一個 Easy Ease 來偽造。

當需要精確時機時,在峰值速度和著陸點周圍取樣影格。AE 的關鍵影格插值在數值上不會與 GSAP 完全相同;最終成果是匹配的運動感知。

AE 中的 ScrollTrigger 概念

AE 沒有 DOM 滾動。將 ScrollTrigger 轉譯為進度驅動器:

ScrollTrigger 概念AE 模式
trigger/start/end時間軸標籤範圍或工作區範圍。
scrub: true滑桿/Null 圖層的「進度 0..100」(Progress 0..100)、時間重新對映,或將時間映射到進度的表達式。使用線性淡入淡出。
數值 scrub 延遲進度值上的低通/彈簧表達式,或延遲的重複關鍵影格。
pin在動畫子圖層時保持攝影機或父級 Null 圖層靜止。如果子圖層需要獨立運動,不要動畫已固定的父級。
snap保持/捕捉關鍵影格,或 Math.round(progress / step) * step 表達式。
markers臨時引導圖層、標籤或文字疊加層;在最終交付前移除。
containerAnimation由一個主 Null 圖層或攝影機路徑控制的水平/3D 旋轉木馬;嵌套元素參考相同的進度。

對於 AE 的「類滾動」短片,使用 CTRL_PROGRESS 驅動主時間軸,並將進度映射到卡片、攝影機 Z 軸、不透明度和模糊。保持驅動進度的運動為線性;僅在能改善外觀時,才將淡入淡出效果應用於嵌套的視覺回應。

插件模式等效

GSAP 插件AE 等效
Flip記錄第一個和最後一個圖層的變換;透過反向偏移或父級 Null 圖層進行動畫。用於版面重新排序和卡片交換。
Draggable / ObserverAE 渲染不具互動性;使用控制器滑桿或錄製的關鍵影格來表示手勢。
Inertia使用基於速度的表達式、彈簧表達式或衰減的過衝關鍵影格。
SplitText使用 AE 文字動畫器 (Text Animators)、表達式選擇器 (Expression Selectors),或將文字分解為逐詞/逐字元的圖層。
ScrambleText來源文字 (Source Text) 保持關鍵影格、字元映射表達式,或文字動畫器的不透明度/字元偏移。
DrawSVG形狀圖層的修剪路徑 (Trim Paths)。
MorphSVG遮罩/路徑關鍵影格或形狀路徑插值;確保頂點數/順序匹配。
MotionPathAE 遮罩路徑 + 圖層路徑父子連結,或沿貝茲曲線取樣的位置關鍵影格。
CustomEase / CustomWiggle / CustomBounceAE 圖表編輯器曲線、時間曲線數值或自訂表達式函數。
GSDevTools臨時控制器 Null 圖層、引導圖層、影格捕捉和審計 JSX 報告。

實用函數等效

在 JSX/表達式中使用 GSAP 工具作為數學詞彙:

function clamp(v, lo, hi) { return Math.max(lo, Math.min(hi, v)); }
function mapRange(in0, in1, out0, out1, v) {
  var p = (v - in0) / (in1 - in0);
  return out0 + (out1 - out0) * p;
}
function lerp(a, b, p) { return a + (b - a) * p; }
function snap(step, v) { return Math.round(v / step) * step; }

常見的 AE 用途:

  • normalize/mapRange:將時間、音訊振幅或滑桿進度映射到位置/縮放/不透明度。
  • random:在 JSX 中產生確定性的每層偏移;除非刻意需要抖動,否則避免在表達式中使用非確定性隨機性。
  • snap:階梯式打字機效果、跳幀運動、網格/卡片捕捉。
  • distribute:卡片扇形展開、文字交錯、中心向外揭示。

AE 的效能規則

  • 偏好變換、不透明度、時間重新對映和攝影機/Null 圖層移動,勝過大量的逐幀特效。
  • 避免同時動畫許多帶有昂貴特效的圖層;在外觀確認後進行預合成或烘焙。
  • 使用表達式進行控制和迭代;當表達式變慢或脆弱時,將其烘焙為關鍵影格。
  • 動態模糊能提升感知品質,但可能隱藏版面錯誤;在診斷問題時,應同時在開啟和關閉動態模糊的狀態下進行檢查。
  • 對於重複的卡片,使用父級 Null 圖層和共享控制器,而不是獨立地為每個屬性設定關鍵影格。
  • 保持遮罩和網格變形盡可能簡單以符合視覺需求。在更改遮罩後捕捉確切影格。

AE 建構工作流程

  1. 如果使用者提到了 GSAP 概念,請閱讀 AEMotion 和相關的官方 GSAP 技能。
  2. 在編輯前檢查 AE 合成/圖層。不要推斷圖層名稱。
  3. 起草一份 GSAP 風格的時間軸規格,包含標籤、持續時間、淡入淡出、交錯和目標圖層。
  4. 轉換為 AE 實作表格。
  5. 為關鍵影格/淡入淡出/控制器編寫符合 ES3 安全的 JSX 輔助函數。
  6. 每個腳本應用一個邏輯序列。
  7. 圍繞起始、峰值速度、著陸點和最終停留點捕捉確切影格。
  8. 根據視覺證據調整數值,然後儲存。

禁止事項

  • 不要將 GSAP 瀏覽器程式碼貼到 AE 中。
  • 不要在 ExtendScript 中使用現代 JavaScript 語法。
  • 不要在沒有審查重疊的情況下,在多個不相關的裝備中動畫相同的 AE 屬性。
  • 對於複雜區段,不要依賴 delay 風格的分散時序;請使用標籤/控制器時序。
  • 除非使用者要求,否則不要在最終渲染中保留可見的臨時引導圖層/標記圖層。

Individual skills in this repo

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

相關技能