Motion Replicate — 從參考連結到可編輯的 AE 重建
請先閱讀 skill/SKILL.md 中的「复刻参考片失败的五个根因」與「复刻参考片:先逐帧量,再动手」章節。
規則:先測量再動手。重建中的每個數字都來自參考素材。
1. 取得參考素材
python3 tools/fetch_reference.py "<連結>" --slug <簡稱>
- Pinterest(pin.it 或 /pin//):透過 Pinterest 公開 widget API 下載該 Pin 的影片,包含 idea/story 類型。如果 Pin 只有圖片,工具會提示並印出外部連結:真正的動畫通常在那裡(例如 Instagram 或 Behance 貼文)。請前往該連結。
- 直接影片 URL(.mp4/.mov/.webm/.gif):直接下載。
- Behance、Vimeo、YouTube、作品集網站:通常會拒絕命令列請求(退出碼 3)或內嵌播放器。此時請觀看而非下載:
- 在瀏覽器中開啟專案頁面,列出所有播放器:
[...document.querySelectorAll('iframe,video')].map(n => n.src || n.currentSrc)。 - 開啟播放器 URL 本身(例如
https://player.vimeo.com/video/<id>),將tools/browser_frame_sampler.js貼到瀏覽器的 JavaScript 工具中,執行await motionAgentSample({ fps: 12 }),然後截圖:你會得到一張帶時間戳的接觸式印樣與每幀動作能量。await motionAgentShowFrame(t)+ 截圖則可獲得一張全解析度幀,用於測量位置。 - 將截圖與回傳的 JSON 儲存到
refs/<簡稱>/中。
- 在瀏覽器中開啟專案頁面,列出所有播放器:
- 切勿繞過登入、付費牆或機器人檢查,也切勿偽造標頭來取得受保護的檔案。如果頁面封鎖你,請使用瀏覽器途徑或請使用者自行下載片段。
refs/ 目錄下的所有內容皆被 git 忽略。參考影片屬於其創作者:切勿提交它們或其幀;請在案例中標明創作者(meta.json)。
2. 測量
python3 tools/analyze_reference.py refs/<簡稱>/reference.mp4 --fps 24
閱讀 refs/<簡稱>/ANALYSIS.md:尺寸、幀率、持續時間、停頓、剪接、最快時刻、是否循環、色板,以及接觸式印樣與動作能量圖。然後從 frames/ 中測量每個移動元素(像素位置、縮放、旋轉在其起點、終點與轉折點;tools/measure.py 可協助),並撰寫簡短規格:元素 → 關鍵(時間,數值) → 速度形狀(緩入/緩出/兩者俱備,過衝)。
在開始重建前,用 3–5 行向使用者說明你測量了什麼以及你將如何重建。
3. 在 After Effects 中重建
- 合成設定為參考素材的尺寸與幀率(若參考素材較小,則放大 2 倍,並加以說明)。
- 在工作時保持合成視窗開啟並移動播放頭,以便使用者觀看。
- 優先使用貝茲曲線關鍵影格(明確的速度/影響力,以重現測量到的速度曲線);僅在關鍵影格無法達成時才使用表達式。
- 每個合成與圖層名稱使用一個簡短單詞。
- 在每次結構變更前儲存備份。
4. 比較與疊代
以與參考幀相同的時間戳記渲染,並將它們並排顯示:
python3 tools/sheet.py "<我們的幀 glob>" refs/<簡稱>/compare.png --pair "refs/<簡稱>/frames/f_*.jpg"
檢查時間(停頓與剪接是否落在同一幀)、位置(在相同縮放比例下相差幾個像素內)、速度形狀與顏色。先修正最大的不匹配處,然後再次比較。每次迭代都附上比較圖。直到使用者滿意為止。
5. 保留所學
當使用者確認渲染結果後,執行 agent-skills/motion-retrospective。該案例會標明原始創作者與來源連結,僅包含我們自己重建的幀,並記錄測量到的數值以及重現它們的關鍵影格。