MiniMax H3 Sprite Atlas 最容易踩的坑,是把「看起來會動的影片」誤當成「可直接放進遊戲的動畫」。影片可以接受角色每幀微微變形、鏡頭緩慢位移;遊戲資產卻要求每格尺寸一致、腳底留在同一個世界座標,最後一幀還要能自然接回第一幀。
這篇不重複 H3 的安裝與下載。若你還沒有第一支影片,先完成 MiniMax H3 ComfyUI 本機生成教學;這裡從已輸出的 MP4 開始,依序處理抽幀、去背、腳底錨點、等格 Sprite Sheet,以及 Godot 匯入與循環驗收。
讀完後,你會得到一條可以重跑的後製管線,也會知道哪些步驟能自動化、哪些一定要靠眼睛判斷。本文的錨點公式只有一句:可用 Sprite Atlas = 一致座標 × 可驗證循環。
先說結論:五站都通過,影片才算遊戲資產
- 生成:固定鏡頭、單一動作、可比較的首尾姿勢。
- 抽幀:依時間重採樣,不把來源幀號誤當固定時間。
- 去背:輸出真的含 alpha 的 PNG,並在亮底與暗底播放檢查。
- 統一座標:每格使用同一畫布、同一比例、同一腳底基線。
- 引擎驗收:用目標 FPS、目標縮放連播,檢查接縫、漂移與碰撞區。

這也解釋了為什麼「抽 12 張圖,再拼在一起」常常失敗。Sprite Atlas(更廣義可視為 Texture Atlas)只是容器;真正決定動畫能不能用的,是容器裡每格是否共享同一套座標與時間規則。
MiniMax H3 Sprite Atlas 第 0 步:把生成目標改成「可切的動作」
截至 2026 年 8 月 19 日,MiniMax 在 H3 官方規格公布的輸出是 4~15 秒、24 FPS,H3-Base 預設短邊 768 像素,另有 2K 再生成流程;這些是模型輸出規格,不是 Sprite Atlas 的保證。官方的 H3 prompt 指南支援 2D-animated、Static Shot 與單一連續鏡頭的描述,第一/最後一幀模式也偏好用一個鏡頭描述兩個端點之間的動作路徑。
換句話說,提示詞不要先追求「電影感」,而要先縮小自由度。以下是一個可直接改寫的素材型提示詞:
2D-animated game character, full body, centered.
One continuous walk cycle in place.
Static Shot, fixed framing, fixed lighting.
The feet return to the opening stance at the end.
Simple flat background, no cuts, no camera movement.
如果工作介面允許第一幀與最後一幀,兩張圖應使用相同畫布、角色比例與腳底位置,再描述中間如何走完一個循環。它能替模型畫出端點,但不代表中間幀會自動保持骨架一致,也不保證最後一幀接回第一幀沒有跳動。生成時先做短、單一、容易判斷的 idle 或 walk;攻擊、翻滾、披風與粒子效果留到基本管線穩定後再做。
第 1 步:先用 ffprobe 看時間,再用 FFmpeg 等時抽幀
H3 公布 24 FPS,不代表你應該盲目保留每一幀。先用 ffprobe 讀實際交付檔的編碼、尺寸、平均幀率與幀數;若影片經過平台轉碼,應以檔案本身為準。
ffprobe -v error -select_streams v:0 \
-show_entries stream=codec_name,width,height,r_frame_rate,avg_frame_rate,nb_frames,duration \
-of json input.mp4
接著建立資料夾,先用 12 FPS 做一版候選序列。這不是通用最佳值,而是讓你先看清主要姿勢、減少人工清理量的起點;快速動作可以提高,慢速 idle 可以降低,再以實際播放判斷。
mkdir -p frames
ffmpeg -i input.mp4 \
-vf "fps=12:start_time=0:round=near" \
-start_number 0 frames/frame_%04d.png
FFmpeg 的 fps filter 會為了達到固定輸出節奏而丟幀或補幀,所以它不是「挑出所有獨一無二的原始畫面」。若你要的是「至少相隔 0.25 秒後的下一個現有影格」,那是 select 的語意,不是等距重採樣;兩種方法不要混稱。
第 2 步:去背不是轉成 PNG,而是建立穩定 alpha
截至本文檢查日,MiniMax H3 的 V2 建立文件與查詢文件列出 MP4 結果、解析度、時間與參考素材等欄位,未把 alpha 影片或 Sprite Atlas 列為文件化輸出控制。因此這條管線不預設生成檔已經透明,而是在抽幀後驗證每張 PNG 的 alpha。
若素材用乾淨綠幕,可以先用 FFmpeg 色鍵。下面的 0.10 與 0.08 只是起始測試值,不是萬用答案;相似顏色的服裝可能一起被吃掉,壓縮過的背景也容易留下綠邊。
mkdir -p frames_rgba
ffmpeg -i input.mp4 \
-vf "colorkey=0x00FF00:0.10:0.08,format=rgba,fps=12" \
-pix_fmt rgba -start_number 0 frames_rgba/frame_%04d.png
任意背景可改用 rembg 的資料夾模式:rembg p -dc frames frames_rgba。但這類工具逐張分割,文章能驗證的是「每張有遮罩」,不是「整段遮罩必然不閃」;務必把完整循環放在黑、白兩種背景播放。若用於商業專案,也要把 rembg 程式碼授權與所選模型權重授權分開查。
第 3 步:固定畫布、比例與腳底錨點
這是整條流程最重要、也最難全自動化的一站。對每張圖單獨 -trim 後置中,看似乾淨,實際上會讓角色依每幀透明邊界重新定位:手抬高,中心就往下;武器伸長,身體就往另一側跳。更麻煩的是,透明邊界最低點可能是影子、尾巴或粒子,不一定是腳底。

機械式的第一輪可以用 ImageMagick 去除外圍透明區,再放進固定畫布。以下 512×512 只是示範;實際尺寸應由整組序列的最大內容邊界加安全留白決定,小於內容的 -extent 會直接裁掉像素。
magick input.png \
-trim +repage \
-background none \
-gravity south \
-extent 512x512 \
output.png
然後進 Aseprite 開啟第一張連號 PNG,載入整組動畫,用 onion skin 疊看前後幀。選一個明確根點,例如站立腳底中央,讓每幀都落在同一條 baseline;跳躍幀則保留離地高度,不要硬把腳拉回地面。角色比例改變、手腳長度跳動與透明邊閃爍,都要在這裡刪幀、重畫或回頭重生。
第 4 步:先做等格 Sprite Sheet,再考慮密集打包
對第一次做 MiniMax H3 Sprite Atlas 的讀者,最穩的交付不是 trimmed packed atlas,而是每格同尺寸、由左到右排列的固定表格。原因很實際:Godot 內建 SpriteFrames 只需要知道橫向與直向有幾格,不必另外解析 offset、pivot 或 JSON。
Aseprite GUI 可直接使用 File → Export Sprite Sheet。若你的版本支援官方列出的 Aseprite CLI,也可以輸出 rows 與 JSON;以下保留 2 像素 shape padding,並以 --extrude 複製一圈邊緣像素,降低相鄰格取樣滲色:
aseprite -b \
--sheet-type rows \
--list-tags --list-slices \
--shape-padding 2 --extrude \
hero.aseprite \
--sheet hero.png \
--data hero.json \
--format json-array
這裡不要預設開啟 --trim、--merge-duplicates 或 --ignore-empty:它們可能改變 offset、索引或空幀對應。只有消費端已經證明會讀取 source size、offset 與 pivot,才把固定格改成 packed atlas。Aseprite JSON 也不是 Godot 內建會自動消費的通用格式。
TexturePacker 是大量資產的選配,不是必要步驟。TexturePacker 8.2.0 release notes顯示 exporter 名稱已改為 godot-spritesheet;其 importer 走外部/社群整合,現在的說明是產生給 AnimationPlayer + Sprite2D 使用的 AnimationLibrary。要採用它,就把 TexturePacker、importer 與 Godot 三個版本鎖在專案裡,先用最小動畫做 round-trip,再開 trim、rotation 或 multipack。
第 5 步:匯入 Godot 4.7.2,先用 AnimatedSprite2D
截至 2026 年 8 月 19 日,Godot 官方 archive 顯示目前 stable 是 2026 年 8 月 18 日發布的 Godot 4.7.2。把 hero.png 放進專案後,最短路徑是:
- 建立
AnimatedSprite2D。 - 在
Sprite Frames建立New SpriteFrames。 - 開啟下方 SpriteFrames 面板,選擇
Add frames from a Sprite Sheet。 - 填入橫向/直向格數,選取要加入的影格。
- 命名動畫,設定 FPS 與 Loop Mode,再播放檢查。
Godot 4.7 的官方 2D sprite 教學同時支援個別圖片與 Sprite Sheet。若你的作品刻意做像素風,把 CanvasItem.texture_filter 或專案預設設為 Nearest;一般由影片後製而來的平滑插畫,通常先保留 Linear,再看邊緣是否出現 bleed。

基本 idle/walk 不需要 AnimationPlayer。只有當同一條時間軸還要同步音效、特效或攻擊窗,才用 Sprite2D + AnimationPlayer,並把 Frame 軌設成離散插值。身體碰撞區通常保持穩定;攻擊判定另用 Area2D + CollisionShape2D。若要切換 CollisionShape2D.disabled,用 method track 呼叫腳本,再由腳本 set_deferred(),不要把可見輪廓當成會自動生成的 hitbox。
MiniMax H3 Sprite Atlas 的循環驗收清單
Loop Mode 只負責重新播放,修不了素材本身的接縫。把動畫放進實際場景,以目標尺寸、目標 FPS 連播至少 10 圈,再逐項檢查:
- 最後 → 第一幀:腳底、軀幹方向與重心是否突然跳動。
- 世界座標:角色是否慢慢往左右或上下漂。
- 輪廓:手腳長度、衣服、武器是否在某幀突變。
- 光線:曝光、陰影與色溫是否每幀閃爍。
- 透明邊:黑底、白底是否出現綠邊、白邊或破洞。
- Atlas bleed:縮小、移動與旋轉時是否取樣到隔壁影格。
- 碰撞區:開啟
Debug → Visible Collision Shapes,確認判定不跟著美術抖動。
不要習慣性把第一幀再複製到序列末尾。Godot 線性循環本來就會從末幀跳回首幀,多放一張相同首幀,常見結果是接縫處停兩拍。若走路循環仍有頓點,先比較末幀與首幀的姿勢差,再決定刪幀、調速或回 Aseprite 補中間姿勢。
這條流程真正花時間的地方
生成按鈕通常不是成本中心,人工清理才是。角色有多少細小配件、背景邊緣多複雜、動作是否離地,以及你容許多少風格漂移,都會改變工時;沒有一個可信的固定「每個動作幾分鐘」答案。最省時間的順序,是先做一個 idle,把去背、錨點與 Godot 驗收跑通,再批量生成 walk、run、attack。
如果你想把抽幀、命名、分鏡或影片組裝再自動化,可以延伸看 OpenMontage 開源影片工作流、Claude Code AI Video Studio 與 開源 AI 影片剪輯工具比較。這些工具能降低重複操作,但腳底是否真的穩、循環是否看得順,仍然要在最終引擎裡驗收。
FAQ:影片轉 Sprite Atlas 最常見的 8 個問題
1. MiniMax H3 會直接輸出 Sprite Atlas 嗎?
目前不要把它當成文件化交付。截至 2026 年 8 月 19 日,H3 V2 文件描述的是影片生成任務與 MP4 結果,沒有列出 Sprite Atlas 控制;本文因此把 atlas 視為獨立後製產物。
2. H3 影片會自帶透明背景嗎?
不要預設有。先用 ffprobe 與實際影格確認輸出,再用色鍵或語意去背建立 alpha。副檔名是 PNG 也不等於遮罩正確,仍要在亮底與暗底播放。
3. H3 是 24 FPS,抽每兩幀就等於 12 FPS 嗎?
不一定。只有來源確實是固定 24 FPS、時間戳正常時才接近這個直覺。用 fps=12 依時間重採樣,比用 framestep=2 更能清楚表達你要的輸出節奏。
4. 一定要買 Aseprite 或 TexturePacker 嗎?
不一定。Godot 可直接讀個別影格或等格 Sprite Sheet。Aseprite 適合逐幀清理與 onion skin;TexturePacker 適合資產很多、需要 trim 或 multipack 的團隊,但會增加 importer 與版本管理。
5. 為什麼新手不該一開始就 trim 每格?
因為透明邊界會變,角色座標也會跟著變。除非 importer 明確讀取並還原 source size 與 offset,否則固定畫布更容易保住腳底錨點,也更容易在 Godot 除錯。
6. Godot 動畫一定要用 AnimationPlayer 嗎?
基本循環不用。AnimatedSprite2D + SpriteFrames 就能處理 idle、walk、run。要把影格與音效、特效、攻擊窗放進同一條時間軸時,再加 AnimationPlayer。
7. 開啟 Loop 就能修好首尾接縫嗎?
不能。Loop 只決定播完後如何繼續,沒有改寫角色姿勢、鏡頭或光線。接縫要靠首尾疊圖、實際播放與人工補幀處理。
8. 怎樣才算真的完成?
不是 atlas 匯出成功,而是實際場景連播成功。用遊戲中的尺寸、濾鏡、背景與碰撞區跑 10 圈;沒有可見漂移、閃邊、停拍與判定亂跳,才算達到可用門檻。
給新手的 5 個重點
- 先生成固定鏡頭、單一循環,不要一開始挑最複雜的招式。
- 先查實際影片時間,再用 FFmpeg 依時間抽幀。
- 把去背、固定畫布與腳底錨點視為三件事。
- 新手先交付等格 Sprite Sheet,packed atlas 留給真的需要 metadata 的流程。
- 最後在 Godot 實際場景連播;公式仍是一致座標 × 可驗證循環。
想把這條管線擴成完整 AI 創作流程,可從 AlphaLab AI 專區繼續探索;若你希望有人帶著建立可重複的 AI 工作流,也可以查看 AlphaLab 課程。
接著閱讀
左右滑動查看更多推薦
下一步:先做一個 1 秒 idle
不要先做八個動作。挑一段最簡單的 idle,建立 input.mp4 → frames → frames_rgba → normalized → hero.png → Godot 六個資料夾或檔案節點,完整跑完一次,再把每個閘門的驗收結果記下來。當同一套座標與循環檢查能重跑,MiniMax H3 才不只是影片生成器,而是遊戲美術管線的一個可靠素材入口。




