Awesome Motion Graphics
一個從多個來源收集而來的特效配方函式庫。effects/ 中的每個配方都是一份規格:說明它的外觀、需要的素材、使用者需填入的內容,以及精確的版面與時間軸。
工作流程
- 沒有指定名稱? 列出
effects/中所有檔案,並附上其 frontmatter 中的一行summary,按tags分組。然後停止。 - 在專案中首次執行? 先執行
setup/house-style.md,如果效果的needs包含mask或head-track,則再執行setup/mask-and-head-track.md。跳過已存在的項目(HOUSE_STYLE.md、public/mask/、public/head-track.json)。 - 讀取對應的
effects/<名稱>.md。將使用者的話語填入每一個[INPUT]。詢問任何仍然缺失的資訊,尤其是真實的數字。絕不虛構統計資料、觀看次數或標誌。時間標記為「在 X 這個詞上」:轉錄影片片段並取得詞的時間戳記,然後使用這些時間戳記。 - 以效果的名稱建立一個獨立的合成影像,遵循 HOUSE_STYLE.md。
- 渲染至
out/<名稱>.mp4,回報路徑,並顯示 4 張靜態截圖(開始、中間兩張、結尾)。
extras/ 包含非效果配方:一個聊天風格的開頭/結尾(chat-render.md)以及將多個編輯片段組合成一個完整短片(full-reel.md)。
每個配方的預設值
- 1080×1920,30 fps,來源影片位於
public/talking.mp4(複製,絕不編輯原始檔案)。 - 任何可讀內容的安全區域:x 120–960,y 260–1700。絕不遮蓋臉部。
- 「線性光」表示:轉換為線性色彩空間,進行模糊/色調/光線處理,再轉換回 sRGB。
- 「最後一幀仍在移動」表示鏡頭推進從未完全停止。
當看起來不對勁時
| 症狀 | 修正方法 |
|---|---|
| 裁切邊緣閃爍 / 頭髮光暈 | 隨時間更平滑地處理遮罩;在羽化前先縮減 1 像素 |
| 太快了 | 將時間延長至 4 秒,並等比調整所有移動 |
| 文字在手機上難以閱讀 | 所有文字放大 20%,並以手機尺寸檢查 |
| 圖形碰到臉部 | 將其下移,離開臉部區域 |
| 動作感覺很機械 | 從 HOUSE_STYLE.md 重新套用緩動和動態模糊 |
| 機器效能慢 | 先以一半尺寸預覽渲染,待核准後再進行全品質渲染 |
新增一個配方
在 effects/ 中建立新檔案,包含以下 frontmatter,並以與其他配方相同的形式撰寫內文(Inputs、Build、Timing):
name: kebab-name
summary: 一行說明觀眾會看到什麼
source: README 中的 source-id
needs: [mask, head-track, behind-me, reels, music] # 任意子集
duration: 3s
tags: [3d, glass, text, camera, data, layout]