AI 工具 12 min read

Claude 做 3D 動畫:PDF 分鏡寫成 Blender 腳本,72 秒渲染出 8 秒影片

Threads 上「一份 PDF 丟進 Claude Opus 5.5 就出動畫」的橘色方塊影片,抽格看是 Blender 3D 渲染:PDF 是分鏡規格,Claude 寫的是 Blender Python 腳本。我照做一次,1 頁分鏡加 275 行腳本,RTX 4070 渲染 72 秒出 8 秒 720p MP4——不用會 Blender 介面,但一定要裝 Blender。

Claude 做 3D 動畫:PDF 分鏡寫成 Blender 腳本,72 秒渲染出 8 秒影片
本文目錄 · 6
懶人包
  • Threads 上「一份 PDF 丟進 Claude Opus 5.5,出來一段橘色吐司機在時間軸上跳的影片」,抽格看是 Blender 3D 渲染:景深、動態模糊、斜放的 After Effects 介面平板,不是網頁動畫錄下來的。
  • 轉貼的 aistart_up 在留言補充,原作者也說要另外裝 Blender 和現成程式庫,不是丟一份文件就結束。PDF 是分鏡規格,Claude 寫的是 Blender Python 腳本。
  • 我照這個思路重做一次:分鏡 PDF 1 頁、Blender 腳本 275 行,Blender 4.5.15 在 RTX 4070 上渲染 192 格花 72 秒,輸出 8 秒 1280×720 的 MP4。
  • 關鍵寫法是「每一格的位置 = 函式(f)」,逐格打 keyframe。改一個參數重跑就是新版本,可以進 git。
  • 第一輪預覽抓到兩個問題:角色被 AgX 色彩洗成粉色、追拍鏡頭沒跟到跳躍高度。先渲 8 張半解析度預覽再全片渲染,能省掉重渲的時間。

Threads 帳號 aistart_up 轉了一支影片:一份 PDF 丟進 Claude Opus 5.5,出來一個橘色方塊角色在 After Effects 時間軸上跳來跳去,最後跳進合成視窗,亮起「MADE WITH CLAUDE」。貼文寫「不會動畫軟體也想做產品小動畫的,可以看這個」。

我把原片抽格看過,再自己從頭做一次。結論先講:這支影片是 Blender 渲染的,Claude 做的事是把分鏡翻譯成 Blender 腳本。 會不會動畫軟體不重要,但電腦上要有 Blender。

這是我做出來的成品,8 秒 720p,可以在 展示頁 直接播放:

Blender 渲染的 8 秒動畫每秒抽一格:俯瞰 After Effects 介面、橘色方塊角色在彩色圖層條之間跳、藍色 playhead 跟著走,最後跳進合成視窗亮起 MADE WITH CLAUDE 霓虹字

影片版(YouTube Shorts)

〈丟 PDF 給 Claude 就做出 3D 動畫?其實是它寫了 Blender 程式〉

〈這隻麻糬的 3D 動畫,是 Claude 寫 372 行程式算出來的〉

這支「PDF 生影片」是怎麼做的?

先看原片的線索。Threads 貼文的影片轉自 X 帳號 @0xwhrrari,原串樓下附了 PDF 的雲端連結。我抽格後看到這些特徵:

原片畫面代表什麼
AE 介面是一塊斜放的平板,鏡頭從上方俯衝到低角度有 3D 場景和攝影機,不是 2D 畫面平移
前景清楚、背景糊,糊的程度隨鏡頭改變攝影機景深,f 值有打關鍵影格
角色跳躍時有拖影渲染器的動態模糊
playhead 和霓虹字會在周圍打出光暈後製 bloom(發光)
這四項在網頁動畫裡都能假裝,但同時出現又這麼自然,最省事的解釋是 3D 渲染器。轉貼的 aistart_up 在自己的留言補了一句,原作者回覆別人時講明要另外裝 Blender 和一些現成的程式庫。這跟畫面判斷一致。

所以這條路的分工是:

分鏡 PDF
場景、角色、鏡頭表

Claude
寫 Blender Python 腳本

Blender 背景模式
逐格渲染 PNG

ffmpeg
合成 MP4

PDF 不是魔法咒語。它的價值是把「我要什麼畫面」寫成可以逐條對照的規格,模型照表施工、人照表驗收。原作者的 PDF 我沒有拿到,下面用的是我自己寫的版本。

分鏡 PDF 要寫什麼?

我寫的分鏡只有 1 頁,分四段:場景、角色、鏡頭表、渲染設定。

一頁分鏡規格書:場景是平放的 After Effects 介面,角色是橘色方塊 Clawd,鏡頭表分五段時間,渲染用 Blender EEVEE 加動態模糊

寫的時候有三件事最影響結果:

  • 時間寫成秒數區間。 「0–1.1 秒俯瞰、1.1–4.7 秒追拍」可以直接換算成第幾格,模型不用猜節奏。
  • 動作寫物理描述,不寫形容詞。 「起跳前蓄力壓扁、空中拉長、落地欠阻尼彈簧回彈(ζ≈0.35)」比「跳得很可愛」好實作,也好驗收。
  • 渲染設定寫死。 引擎、色彩管理、動態模糊、bloom 都列出來,模型就不會自己挑一個看起來平的預設值。
鏡頭表裡每一行只放一件事。一行同時寫「角色大跳+鏡頭拉遠+標題亮起」時,三件事的時間點很容易互相打架,拆成相鄰兩行就清楚了。

Blender 腳本怎麼寫?

腳本是 Claude Code(Opus 5.5)照分鏡寫的,275 行 Python,只用 Blender 內建的 bpy,沒有裝外掛。結構照分鏡順序排:

區段做的事
場景16 公尺寬的 UI 平板,貼上用 Playwright 截好的假 AE 介面;深咖啡色桌面
角色用圓角方塊組出身體、眼睛、手、四隻腳,掛在同一個空物件底下
playhead一根發光的細長方塊,X 座標每格跟角色同步
動作每一格算出角色位置、轉向、縮放,打 keyframe
攝影機三拍:廣角俯衝、低角度追拍、拉到合成視窗的 hero 角度;焦距和 f 值一起打 keyframe
渲染EEVEE、動態模糊、AgX Punchy 色彩、compositor 的 Fog Glow
最重要的設計是所有動作都是格數 f 的函式。落地回彈用一條欠阻尼彈簧:
def spring(u, zeta=0.35, w=18):
    """Under-damped settle 1 -> 0 used for landing squash."""
    return math.exp(-zeta * w * u) * math.cos(w * math.sqrt(1 - zeta ** 2) * u)

主迴圈逐格把角色、playhead、攝影機算出來再打 keyframe:

for f in range(1, N + 1):
    loc, rz, sc = clawd_at(f)
    rig.location, rig.rotation_euler, rig.scale = loc, (0, 0, rz), sc
    for prop in ("location", "rotation_euler", "scale"):
        rig.keyframe_insert(prop, frame=f)
    ph.location.x = knob.location.x = loc.x
    ph.keyframe_insert("location", frame=f)

這樣寫的好處是可以重現。想讓角色跳高一點,改 HOP_H 陣列一個數字重跑;想換節奏,改落地格數 land。不用打開 Blender 介面拖曲線,整支動畫就是一個 Python 檔,可以 diff、可以進版本控制。

怎麼跑起來?

我用的是 Blender 4.5.15 LTS 的 portable 版(Windows zip 解壓即用,不用安裝),加上 Python 的 Playwright 和 ffmpeg。

# 1. 把假 AE 介面和標題卡截成貼圖,順便記下合成視窗座標到 layout.json
python src/make_textures.py tex

# 2. Blender 背景模式執行腳本,-- 後面的參數會原樣傳給 Python 的 sys.argv
blender.exe -b --factory-startup -P src/scene.py -- C:/abs/path/tex C:/abs/path/frames

# 3. 192 張 PNG 合成 MP4
ffmpeg -framerate 24 -i frames/f_%04d.png -c:v libx264 -crf 28 -pix_fmt yuv420p out/clawd-timeline.mp4

參數意思我用 blender --help 對過:-b 是不開介面的背景模式,-P 執行指定的 Python 檔,--factory-startup 不讀使用者自己的 startup.blend,-- 之後的參數 Blender 不處理、直接交給 sys.argv。腳本裡用 sys.argv[sys.argv.index("--") + 1:] 拿到貼圖和輸出資料夾。

腳本還有一個 --preview 參數,只渲染 8 張半解析度的關鍵格。實際數字:

項目結果
全片渲染192 格,01:09:32 到 01:10:44,共 72 秒(RTX 4070)
輸出1280×720、24fps、8.000 秒,703 KB
ffprobewidth=1280 height=720 nb_frames=192 duration=8.000000
動畫最後一格:After Effects 合成視窗裡亮著橘色霓虹字 MADE WITH CLAUDE OPUS 5.5,橘色方塊角色坐在右下角,下方是時間軸和發光的 playhead

預覽抓到哪些問題?

第一輪預覽抓到兩個問題,都是看圖才發現的,腳本本身沒有報錯:

  • 角色變成粉色。 分鏡寫的是 Claude 橘,但材質顏色加上自發光,經過 AgX 色彩管理之後畫面偏粉。改法是重調材質顏色和自發光強度,看預覽圖確認落回橘色。
  • 追拍時角色跑到畫面頂端。 攝影機原本瞄準地面上的角色位置,角色一跳就出框。改成瞄準角色 70% 的跳躍高度,鏡頭會微微跟上去,又不會晃得太厲害。
第二輪預覽確認兩個都修好,才跑完整渲染。8 張半解析度預覽的成本遠低於整片 192 格全解析度,這個順序值得照抄:先渲關鍵格自己看,再全片渲染。

這個做法適合誰?

適合:

  • 想做產品或品牌的短動畫,畫面需要景深、光影這類 3D 質感。
  • 能接受在電腦上裝 Blender、跑指令。不用會操作 Blender 介面,但要看得懂預覽圖哪裡不對,並把問題講清楚。
  • 想把動畫放進版本控制,之後換文案、換顏色重渲。
不適合:
  • 想完全不裝軟體、一句話拿影片。這條路一定要有 Blender 和本機算力,我這次 72 秒是在 RTX 4070 上跑的,沒有獨立顯示卡會慢很多(我沒有實測 CPU 渲染的時間)。
  • 需要角色骨架動畫、布料、毛髮這種複雜效果。這次的角色是方塊拼成的,動作靠縮放和位移就夠;有手有腳的角色要做骨架綁定,腳本會複雜很多。
還有一點:畫面裡的橘色方塊是 Anthropic 的吉祥物 Clawd。拿來練習沒問題,要公開商用的作品建議換成自己的角色。

如果你想先試門檻更低的 2D 版本,Claude 寫 p5.js 做動畫 那篇只需要 Node.js、Chrome 和 ffmpeg;要做文字與數據型的動態片頭,可以看 Mosaic Motion 實測。

author
陳
陳彥彤

AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

support

覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

related

相關文章

[AI 工具] · 11min
AI 手繪動畫怎麼做?拆解 3,583 萬觀看《Englishman in New York》:同一個主角、同一把傘、13 鏡
antrofrog_ 在 2026-10-30 發到 X 的 47 秒 AI 手繪動畫《Englishman in New York》,不到四天累積 3,583 萬觀看,全片就是同一個黑衣主角用一把傘做 13 件小善舉。我用 ffmpeg 拆片,13 鏡裡有 7 鏡約 4 秒、切點不對齊音樂——剪輯跟著生成長度走,固定造型只換場景是它穩住角色的方法,我也把這套結構做成免費的分鏡規劃器。
[AI 工具] · 15min
Claude 寫 p5.js 做動畫:ClaudeAnimationBase 模板實測,9 秒原創短片怎麼做出來
ClaudeAnimationBase 是 JohnHeibel 在 2026 年 9 月開源的 MIT 模板,讓 Claude 寫 p5.js 程式逐格畫出手繪水彩風動畫,再輸出 MP4。我照它 461 行的指南做了 9 秒原創短片〈楓葉帽子〉——先分鏡、看縮圖自審兩輪,RTX 4070 渲染 327 秒,沒有獨顯會慢 12 倍。
[AI 教學] · 12min
個人知識庫怎麼建、怎麼用?CODE 四步、PARA 與卡片盒,加上 196 筆 LINE 交辦整理成 7 類的實測
個人知識庫是寫給未來自己的筆記系統,照 Tiago Forte 的 CODE 四步建,整理時用 PARA 按行動性分四格,或用卡片盒一張卡一個想法。我把 2026-10-22 到 11-08 的 196 筆 LINE 交辦串成 92 條任務鏈、分成固定 7 類,關鍵字規則跑完仍有 25 條鏈要人工改判——規則適合當第一輪,不能直接當結果。