Communitygithub.com

z1fex/3D-cartoon-animation

製作垂直 3D 卡通解說短片(30-60 秒,9:16),適用於任何主題。大頭卡通角色演繹故事;畫臉透過眨眼切換;鏡頭從不停歇;每個口述數字化作實體物件;編輯式字幕(粗體無襯線大寫 + 品牌紅斜體襯線字詞,含字型);頂端的主題問題;每個動作皆有設計音效。適用於歷史、科學、科技、「運作原理」及「如果…會怎樣」等解說。

3D-cartoon-animation 是什麼?

這是一套完整、可重複使用的技能包,用於製作一種特定風格的影片:短小、快速、溫暖的 3D 卡通解說短片。它支援任何主題,並將製作流程拆解為 14 個明確的步驟,從主題發想到最終審查。此技能確保影片擁有統一的視覺風格,包含柔和的卡通著色、墨水輪廓、溫暖的實用燈光,以及獨特的「事實即物件」原則,將每個口述的數字都以實體道具呈現。它可於 Claude Code、Cursor 或 Codex 等 AI 代理平台上運作,需要 Node.js、FFmpeg、Python 和支援 WebGL2 的 Chrome 瀏覽器。整個流程的核心是「腳本優先」原則,所有詳細製作都必須在故事板獲得擁有者批准後才能進行,確保影片方向正確。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/z1fex/3D-Cartoon-Style-Animation-Claude-Skill/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

3D 卡通動畫

版本 1.0.1(公開版)· 方法與風格已於第一輪獲得擁有者批准(「重力是如何被發現的」,第三版,2026 年 10 月 26 日)。1.0.1 版使工具可在任何電腦上運行;渲染出的影片與 1.0.0 版相同。

「擁有者」 在本文件中指的是影片的委託人:即要求製作並批准影片的人。

腳本優先(擁有者的規則,2026 年 10 月 27 日)。每部影片,以及每個新版本,都必須從擁有者框架內的腳本開始。在獲得批准前(技能 4),不得進行配音、細節建置或渲染。

本套件是一個完整、可重複使用的方式,用來製作一種特定類型的影片:短小、快速、溫暖的 3D 卡通解說片。它適用於任何主題。範例作品以重力為主題,但方法本身並不依賴於此:這些技能說明了如何找到鉤子、選角、搭建場景、將每個數字轉化為物件、為每個動作配合語音時機、設計音效以及檢查每一幀畫面,無論下一個主題是什麼。

完成的影片是什麼樣子

  • 格式: 1080×1920,30 fps,30–60 秒。一個旁白子句 = 一個鏡頭(大約每 1.1–1.5 秒一個新畫面)。最後一行畫面會迴圈連接到第一幀。
  • 故事: 前 2 秒內提出一個鉤子,引出一個問題;早期給予回報;向「你」陳述利害關係;情節升級;在三分之二處重新鉤住觀眾;用一個具體畫面呈現轉折;結尾形成迴圈。
  • 外觀: 柔和卡通著色、墨水輪廓、溫暖實用燈光、邊緣光、景深、光暈和顆粒感。膚色臉孔;服裝、道具和場景使用品牌色(夜黑紅、珊瑚藍、乾邑色、白沙色、煤灰色)。真實物品看起來是真實的(地球是藍色和綠色的)。
  • 角色: 圓球頭、豆子身體、棍狀四肢、連指手套般的手;畫上去的臉孔,沒有唇形同步;在重音字詞前透過眨眼切換臉孔;停頓時保持完全靜止。
  • 鏡頭: 始終移動,在移動間緩慢爬行,並在每個句子的第一個詞處加速進入 6 幀的溶解過場。
  • 事實即物件: 每個口述數字都會在對應的幀上,以計數器、日曆、捲尺、儀表或發光標誌的形式呈現。
  • 文字: 前 2-3 秒在頂端顯示主題問題(例如:「重力 是如何被發現的?」),以及在 70% 高度處的編輯式字幕組合(EVERYTHING 覆蓋在 you know 上)。
  • 音效: 語音(ElevenLabs)、低於語音 18 LU 的原創背景音樂、每個可見動作對應的輕柔擬聲音效、每個故事節拍的重音效果,最終母帶輸出為 −14 LUFS。

製作流程(每個步驟都是一項技能)

#步驟技能產出
1將主題轉化為電影構想主題到電影切入點、鉤子、角色、場景、數字列表、整體藍圖
2編寫腳本腳本與留存附有來源的 script.md
3錄製語音並安排每個詞的時間配音與時間vo/voice-final.wav、vo/words-final.json
4為每個鏡頭繪製腳本;獲得擁有者批准腳本與鏡頭計畫storyboard.md、腳本靜態圖、擁有者的腳本板(storyboard/<v>/<Title> - storyboard <n>.png 和 .html)
5設定外觀外觀、燈光與品牌燈光預設、調色盤、每個鏡頭的鏡頭設定
6建構角色陣容角色與臉孔骨架、服裝、臉部切換
7演出每個子句動作與表演姿勢關鍵影格、搞笑橋段、物理效果
8移動鏡頭鏡頭與轉場每個鏡頭一個軌道運鏡
9讓數字變得具體事實即物件每個數字一個裝置
10搭建並裝飾場景場景與道具使用套件搭建並裝飾完成的場景
11撰寫螢幕文字字幕與標題鉤字幕組合、標題問題
12設計音效音效設計與混音提示列表、混音、分軌
13渲染並檢查每一幀渲染與品質檢查MP4 檔案、品質保證記錄
14與擁有者一起審查並學習審查與學習回饋、下一版本、套件更新

請按此順序執行步驟。步驟 4 至 11 都發生在每個影片的單一檔案 (film.mjs) 內,因此在實踐中,您需要先規劃腳本,然後逐個鏡頭建置,並在過程中渲染靜態圖。

不可協商的原則

  1. 腳本優先。 在語音被錄製、鏡頭被詳細建置或任何內容被渲染之前,擁有者必須先批准腳本(技能 4)。
  2. 複製技術,而非內容。 每個角色、場景、標誌、笑話和發明的品牌名稱都必須是我們原創的。真實的歷史人物應繪製成我們自己的卡通角色;絕不能繪製受版權保護的角色。
  3. 鉤子優先。 前 2 秒必須提出一個問題;標題問題需點明主題。
  4. 每個數字都須變為一個物件,並在其對應的語詞處出現。絕不能使用純文字疊加。
  5. 手勢在其對應詞發生前 4 幀到位;臉部切換在其前 2 幀,並透過眨眼完成。
  6. 每個可見動作都必須有聲音;沒有動作就沒有聲音。
  7. 每一幀都必須被檢查(自動構圖檢查和跳幀掃描,然後人工檢查)之後才能讓擁有者看到。
  8. 事實必須有來源。 當來源說法不一致時,用平實的語言表述保留。
  9. 擁有者的品牌: 膚色臉孔、五種品牌色加上品牌紅,以及內含的字型:字幕用的 TeX Gyre Heros Bold + Instrument Serif Italic,標籤用的 Titan One(如果擁有者添加了,則使用已授權的 Helvetica Bold + Editorial New Italic;需註明使用了哪一種)。全部在 brand/ 中。

新主題快速入門

  1. 將 templates/new-film/ 複製到 examples/<主題代碼>/。
  2. 填寫 新主題工作表(技能 1)並將腳本(技能 2)寫入 film.mjs 中的 SCRIPT。
  3. 使用草稿時間建置鏡頭並渲染腳本靜態圖: node recipe/tools/render.mjs examples/<代碼>/film.mjs <輸出目錄> --stills shots --qa
  4. 腳本優先。
    • 將 templates/storyboard.json 複製到 examples/<代碼>/storyboard/v1/storyboard-1.json,每個鏡頭一個面板及其靜態圖。
    • 繪製腳本板:node recipe/tools/storyboard-board.mjs examples/<代碼>/storyboard/v1/storyboard-1.json。
    • 將腳本板交給擁有者,並根據反饋進行修改(storyboard-2,…),直到獲得批准。
    • 然後錄製語音: ELEVENLABS_API_KEY=… node recipe/tools/voiceover.mjs examples/<代碼>(在編寫 vo/text.txt 之後)。
  5. 根據實際語詞重新調整時間(自動完成),渲染影片,然後是音效: node recipe/tools/render.mjs examples/<代碼>/film.mjs <輸出> --video --name silent.mp4 python -I recipe/tools/sound.py examples/<代碼> <輸出>/silent.mp4 <輸出>/shots.json "<輸出>/<Title>.mp4"
  6. 檢查:構圖報告、node recipe/tools/jump-scan.mjs <影片> <輸出>/shots.json、python -I recipe/tools/sfx-levels.py <輸出> <輸出>/cue-sheet.txt,然後人工檢查每一幀(技能 13)。

檔案位置

路徑內容
skills/14 個步驟技能
recipe/engine/渲染器:core.mjs(外觀、後製、字幕、合成、檢查)、faces.mjs、character.mjs、props.mjs、props2.mjs、kit.mjs(主題中性的場景和燈光預設)、places.mjs / places2.mjs(範例的裝飾場景)、index.html、vendor/three(three.js r186,MIT 授權)、fonts/
recipe/tools/storyboard-board.mjs(擁有者的腳本板,輸出為 PNG 和可點擊的 HTML 頁面)、render.mjs、voiceover.mjs、sound.py、jump-scan.mjs、sfx-levels.py、paths.mjs(FFmpeg、Chrome 和 Playwright 的路徑設定)
templates/new-film/film.mjs(一個主題中性的起始檔案,可使用草稿時間執行)和工作表
examples/how-gravity-was-found/已批准的影片:原始碼、語音、最終影片、腳本、提示表、分軌、早期版本
references/參考研究、擁有者指示、引擎 API、故障目錄、回饋歷史、引擎筆記
brand/已批准影片的顏色和字型:palette.json、palette.css、style-sheet.png(由 recipe/tools/style-sheet.mjs 繪製)
evaluation/交付檢查清單、驗收標準、已知限制
preview/style-card.json:風格的名稱、外觀和格式的單一卡片,指向範例的海報、影片和腳本

在新機器上設定

所需工具:

  • Node 22+;
  • FFmpeg 6+ 及其 ffprobe,並需在 PATH 環境變數中;
  • Python 3.10+ 及 NumPy;
  • 一張 Chrome 可用於 WebGL2 的顯示卡。

在套件資料夾中,執行 npm install、npx playwright install chromium 和 pip install -r requirements.txt;完整步驟請見 README。如果 FFmpeg 安裝在其他位置,請設定 CARTOON_FFMPEG。若要使用其他 Chrome 版本,請設定 CARTOON_CHROME(詳見 recipe/tools/paths.mjs)。

影片檔案必須放在套件資料夾內(examples/<代碼>/),因為渲染器會將該套件提供給瀏覽器。語音服務需要一個具有文字轉語音權限的 ElevenLabs API 金鑰,透過 ELEVENLABS_API_KEY 環境變數傳遞給該指令,且絕不能寫入任何檔案中。

Individual skills in this repo

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

相關技能