Communitygithub.com

3D 動畫師 (3D Animator)

讓 Claude 化身為 3D 動畫師,無需 Blender,僅用程式碼 (Three.js + HyperFrames) 生成每個影格,打造包含攝影機、燈光、材質、動作和聲音的電影級 MP4 影片。涵蓋行走與奔跑的人物、行駛的車輛、具物理的物體、真實比例的材質、濕地反射以及真實錄製的聲音。

3D 動畫師 (3D Animator) 是什麼?

此技能 (metehan2236/3d-animator) 旨在賦予 AI 代理完整的 3D 動畫導演與製作能力。它透過結構化的流程——從劇本規劃、資產管理、音效設計,到程式碼驅動的場景構建與渲染——確保產出具有電影感的影片,而非單純的 3D 展示。其核心是 HyperFrames 框架,嚴格遵循「真實比例」、「動機化光源」、「豐富材質」與「鏡頭語言」等原則。支援 Three.js 渲染器,可輸出 MP4 格式。技能內建豐富的參考文獻(如運動、材質、音效指南)與腳本工具(如音效生成、品質檢測),並提供詳細的錯誤排查與迭代工作流程,幫助使用者從初步構想到最終交付,逐步打造可修改、品質穩固的電影級作品。它特別強調以程式碼而非 GUI 工具驅動所有動畫與視覺元素,確保每項變更皆可追溯與重現。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/metehan2236/3d-animator/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

3D 動畫師

「做一個酷炫的 3D 影片」這個提示,通常只會產出灰暗、平淡光線、攝影機靜止不動的場景,因為模型在未經任何電影決策的情況下,只會使用預設值。此技能強制在編寫程式碼之前做出這些決策,並提供實作的基礎架構。

目標: 首次交付時無技術錯誤,只需幾次修訂即可完成的影片。重點不在於完美無瑕,而在於提供一個穩固、可修改的起點。能達成此目標的關鍵並非基礎架構,而是以下嚴謹的流程順序;絕對不可跳過任何步驟。

專案格式為 HyperFrames。關於構圖規則,請參考 hyperframes-core。

從哪個範例開始

需求起始點閱讀文件
人物、車輛、物體運動、動作、故事assets/example-street-film/references/motion.md
旁白敘述、概念解說、產品介紹assets/example-chip-film/references/film-grammar.md
兩者兼具取街頭電影為基礎,再加入敘述語言兩份文件皆讀

務必閱讀: references/materials.md, references/craft.md, references/sound.md。

保持架構,根據主題重新撰寫內容。 不要將範例中的街道、球體或晶片直接套用到新專案中。若有參考影片,請學習其技術,但切勿複製文字與剪輯。scene.js 的章節依序為:場景、演員、編舞、攝影機、視覺效果。

影片的必要條件

缺少任何一項,成品就會像「3D 展示」而非電影:

  1. 真實比例: 1 單位等於 1 公尺。鏡頭模糊、陰影與紋理才能正確呈現。
  2. 豐富且具深度的場景: 包含前景、中景、背景及更遠處。至少 25 個物件。主角需分件建模。
  3. 自然光: 有動機的主光 + skyDome。沒有陰影的物件會像是漂浮在空中。
  4. 正確的材質: 每個表面都使用 M.* 或同等嚴謹的材質。沒有任何表面是純色。
  5. 一個故事與動機: 每個動作都有其理由。大約每 3 秒發生一個新事件。
  6. 鏡頭語言: 每個鏡頭只有一個任務。鏡頭焦距與運動都是為了服務這個任務。
  7. 聲音: 真實錄音、音樂、旁白。每個聲音都必須與畫面中的事件相關聯。

工作流程

1. 規劃 (shot-plan.md)

在撰寫任何程式碼之前:先定義一句話訊息、主角、場景列表、燈光構想、色板、材質列表以及分鏡表。

時間事件攝影機 (焦距、運動)聲音字幕
9.1–10.2球從孩子手中滑落46mm,低角度,f/3.2短促的吸氣聲沒人在看那顆球。

若未指定格式,預設為 16:9 1920×1080。若為直式 Reels,則設定為 1080×1920 並重新規劃構圖。若使用者已提供主題,無需等待批准,簡短展示規劃後即可繼續。若某項決策會根本性地改變影片(例如格式、語言、要求擬真人物),則需先提問。

2. 設定專案

npx hyperframes init <專案名稱> --resolution landscape --non-interactive

將 assets/rig/ 下的所有檔案,以及所選範例的檔案,複製到專案根目錄。

3. 先聲音,後影像

時間長度由對話決定,攝影機的時機點依賴於此。先設定聲音。

node <技能資料夾>/scripts/make-sfx.mjs assets/sfx <時長-秒>
node <技能資料夾>/scripts/build-audio.mjs .

腳本會輸出 voiceToMusicDb、overrun、voiceClash、overlap 以及混音電平。若以錯誤碼結束,請修正時間。關於來源查找、授權與混音,請參考 references/sound.md。若找不到合適音樂或授權不符,可使用 scripts/make-music.mjs 從程式碼生成基本的背景音樂。街頭電影的錄音檔案不包含在技能中,列表請見 assets/example-street-film/SOURCES.md。首次安裝時:

py -3.12 -m venv "%USERPROFILE%\.cache\3d-animator-venv"
"%USERPROFILE%\.cache\3d-animator-venv\Scripts\python" -m pip install kokoro-onnx soundfile faster-whisper "av<16"

將 HYPERFRAMES_PYTHON 環境變數指向此 python 執行檔。Kokoro 不支援土耳其語:若需土耳其語,需在使用者允許下從其他供應商生成語音,並放置為 voice/NN.wav 及相同文字的 voice/NN.txt。腳本不會重新生成這組檔案。

4. 場景

工具功能
createFilm({canvas, width, height, fps, samples, bloom, environment, background})渲染管線
film.setShots([...])鏡頭列表;每個 at 代表一個剪接。track: (t) => ({pos, look, lens, fstop, focus, roll}) 用於跟蹤移動主體
film.setKeys([...])無剪接的單一攝影機
film.onUpdate(t => ...)物件與角色運動。每個子影格呼叫一次
film.onFrame(T => ...)燈光、look、模式切換。每個影格呼叫一次
film.lookexposure、saturation、contrast、blackPoint、lift、shadowTint、midTint、highlightTint、flash、grain、vignette、aberration、fade、invert、bloom、stylize
film.skyDome、film.softLight、film.skyBackdrop、film.bakeEnvironment自然光與反射
film.mirrorFloor(mesh)用於濕地面與水面的真實反射
film.sunThroughBlinds、film.shaft、film.dust、film.burst、film.sparks、film.screen、film.wire特效與細節
M.*、skinned、boxUV材質 (references/materials.md)
createCharacter、walker、createCar、driver、createBicycle、rider、loadRigged演員 (references/motion.md)
speedProfile、groundPath、bounces、springTrack、track、noise1、rng、EASE運動輔助工具
addCaptions(tl, el, LINES)逐字字幕

不變的法則: 所有可見的事物都必須是時間的純函數。不要寫 rotation.y += 0.01,要寫 rotation.y = t * 0.6。影格可能會以隨機順序被請求多次。禁止使用 Date.now()、performance.now()、requestAnimationFrame 以及無種子的 Math.random。

5. 視覺檢查

將 SAMPLES 設為 4,並擷取影片中每一「拍」的影格。至少擷取 15 個影格。使用 setTextureScale(SAMPLES < 16 ? 0.5 : 1) 可以大幅縮短測試時間,因為每個渲染執行緒都會從頭生成所有紋理:

npx hyperframes check
npx hyperframes snapshot --at <t1>,<t2>,... --timeout 240000

若發生衝突,使用 --angle top。SAMPLES 在 1–4 時,天空光與對焦會不準確:陰影會過硬,對焦會呈點狀。請在 16 取樣時下材質與燈光的最終決定。

打開影格仔細檢查。材質: 凹凸貼圖是否過度?是否有拉伸?每個表面都有紋理嗎?構圖: 主體或頭部被裁切了嗎?每個鏡頭的任務是否清晰可讀?燈光: 方向、接觸陰影、眩光。運動: 腳部滑動、互相穿模、物體懸空。文字: 字幕在淺色背景上是否清晰可見?

若有參考影片,將相同時間點的影格並排比較 (scripts/look-stats.mjs 可提供數值色調比較)。參考影片的分析方法請見 references/film-grammar.md。

6. 草稿、掃描、修正

npx hyperframes render --quality draft --output draft.mp4
node <技能資料夾>/scripts/qa-film.mjs draft.mp4 --script script.json --whisper <python> --earshot <python>

掃描器會將影格輸出為 qa/sheet-*.jpg (每秒 4 個影格),並回報黑畫面、凍結、單影格閃爍、音量、無法聽清的字詞以及 earshot 報告。請逐一檢查所有頁面。 即使機器報告無異常,錯誤通常仍會在那裡顯現。然後,將每個特寫鏡頭以全尺寸開啟 (references/materials.md,逐影格檢查):在小縮圖上看起來乾淨的影格,放大後通常不然。此類影片中的大多數錯誤,只有這樣才能被發現。

在切換到最高品質之前,必須修正所有發現的問題。僅重新渲染有問題的片段:

npx hyperframes render --quality draft --start 18 --end 21 --output 片段.mp4

7. 最終輸出

將 SAMPLES 設為 24–32。以街頭電影範例的規模為基準,單一場景在 RTX 4060 上約需數分鐘;若摘要行中顯示 software gpu,則耗時會大幅增加,需事先告知使用者。

npx hyperframes render --quality delivery --output final.mp4

在最終影片上重複掃描程序,因為低 SAMPLES 可能會隱藏對焦錯誤。若無 earshot,需請求使用者允許安裝 (約需 1–3 GB)。請注意,PyPI 上的 earshot 是另一個不同的套件;正確的來源是 github.com/Leonxlnx/earshot。在 Windows 上,請將虛擬環境安裝在路徑較短的地方,因為 torch 在長路徑下會出現問題。

交付

告知使用者:你做了什麼、你檢查了什麼、你無法檢查什麼,以及還有哪些遺漏。列出所有使用的聲音與音樂來源及其授權。即使報告分數很高,也不代表 launch-grade 影片就是好看的。品味與旁白的自然度仍屬於使用者。

修訂

當使用者要求修訂時:

  1. 將意見轉化為計畫: 在哪個鏡頭?什麼問題?應該如何呈現?若不明確,則做出最可能的解釋並告知使用者,不要對每個意見都提問。
  2. 修改正確的地方: 材質在 M.*,攝影機在 setShots,時間由單一常數控制 (如 BRAKE_T),色調在 film.look,聲音在 script.json。所有依賴於同一個常數的元素會一起變動。
  3. 僅渲染修改的部分: 使用 --start 與 --end 參數。如果只修改聲音,無需重新渲染畫面 (references/sound.md)。
  4. 將修改後的片段與修改前的版本並排顯示, 獲得使用者確認後再進行完整渲染。
  5. 將學到的教訓寫入技能中: 若某種錯誤類型再次發生,請將其記錄到此文件或相關的參考文件中。

擬真人物:參考 + AI 影片

此類影片將作為 AI 影片生成工具的參考,最終畫面由該工具生成。此流程尚未經過端到端的完整測試;首次使用時,請先用單一鏡頭測試並向使用者展示結果。

  1. 僅建立 Blocking (基本佈局) : 構圖、攝影機運動、誰在哪裡、何時出現。無需在角色細節和精細材質上花費時間。
  2. 每個鏡頭獨立輸出: AI 工具在處理短片段時表現得更穩定。使用 --start 與 --end 逐個鏡頭渲染。關閉字幕;將 grain、aberration 和 vignette 設為零。這些工具可能會將文字與特效誤認為是真實畫面。
  3. 鎖定外觀: 首先將每個鏡頭的第一個影格轉換為擬真圖像。在所有鏡頭中,保持角色與場景參考的一致性,獲得使用者確認後再進行影片生成。
  4. 預先告知成本: 說明你將使用哪個工具、用於多少個鏡頭,以及預估的信用點數花費,並獲得使用者同意。請即時查詢所使用工具的當前定價,不要預設已知。
  5. 檢查: 檢查全尺寸的影格與剪接點:臉部、手部、招牌與標誌上的文字、鏡頭間的服裝變化。若動作偏離了原始編舞,請降低轉換強度。
  6. 在此完成音訊: 聲音與字幕仍透過 script.json 在此管道中處理。檢查生成片段的實際長度,若長度有變,則調整聲音的時間點。

限制條件

必須在一開始就告知使用者,而非最後:

  • 人物為風格化呈現: 品質約為動畫電影水準。不包含照片擬真度、臉部表演或口型同步。特寫鏡頭會顯得突兀。若需要擬真人物,請使用上述的參考流程;若為無人物影片,可將主角設定為物體或車輛,並讓人物保持遠景。
  • 物理是藝術指導的: 物理效果是根據故事需求編寫的,並非真實模擬。不包含布料、毛髮或流體模擬;水面效果使用粒子系統模擬。
  • 程式生成的合成語音聽起來就是合成語音。 真實錄音需要取得授權。
  • 土耳其語旁白 需要外部提供聲音來源。

交付

告知使用者:你做了什麼、你檢查了什麼、你無法檢查什麼,以及還有哪些遺漏。列出所有使用的聲音與音樂來源及其授權。

修訂

(內容與上述相同,此處省略以避免重複)

擬真人物:參考 + AI 影片

(內容與上述相同,此處省略以避免重複)

限制條件

(內容與上述相同,此處省略以避免重複)

相關技能