Communitygithub.com

hanamorix/image-to-animated-pixel-art

將圖片或插圖轉換為 Aseprite 中的精細像素藝術,並製作待機循環、呼吸、眨眼、頭髮或布料搖擺、軟體抖動、手部或四肢移動、閃光、水波等動畫效果。需搭配 Aseprite MCP。

image-to-animated-pixel-art 是什麼?

此技能可將一般圖片或插圖轉換為 Aseprite 格式的高品質像素藝術,並為其添加專業的動畫效果,例如待機循環、呼吸、眨眼、頭髮或布料飄動、軟體抖動、肢體動作、閃光及水波。其獨特之處在於嚴格遵循原始來源,修復像素縮小造成的損壞,但絕不臆測細節;並透過一系列自動化檢查(如零偏移渲染、跳幀偵測、熱力圖等)來確保動畫流暢無破圖。此技能需搭配 Aseprite MCP 使用,並提供多個 Lua 腳本(如靜態圖轉換、區域重渲染、輪廓修補、動畫幀生成、去閃爍與效果添加)來逐步完成從規劃、靜態圖到完整動畫的工作流程。支援 Aseprite 平台,適合需要為角色、物件或場景製作精確像素動畫的開發者與像素藝術家。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hanamorix/hana-pixel/tree/HEAD/skills/image-to-animated-pixel-art

在你喜歡的 AI 中提問

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

說明文件

圖片轉像素動畫

結果必須忠於原始來源:修復因縮小至像素尺寸所造成的損壞,切勿憑空增添細節。在動畫中,最大的敵人是破圖:任何跳動、撕裂、突然出現或閃爍的像素。Claude 無法觀看 GIF,因此每次展示前都必須經過量化的檢查,絕不能僅憑「靜態看來沒問題」。

如果使用者在 CLAUDE.md 或其指向的檔案中保留了像素藝術偏好設定,請先讀取這些設定;它們會覆蓋此處的預設值。需要 Aseprite MCP:references/aseprite-mcp.md。在進入相關階段時請閱讀:references/still-recipe.md、references/motion-and-breaks.md。

工作流程

每一次提交檢查都是一則訊息:一張並排顯示的圖片(來源 | 修改前 | 修改後,或是一張 GIF 加上裁切過的翻頁書),並附帶一個問題。在每次修改前,將當前檔案複製為 _vN,以便在該輪被拒絕時可以從該還原點恢復。每一輪只做要求的那項修改,不做其他任何事。

  1. 簡報。 在規劃前詢問需求:哪些部分會移動、移動幅度與速度、哪些部分保持靜止、哪些部分需要保護。撰寫一份簡短的規劃檔案(約半頁),並獲得同意。使用者核准計畫後即完成此步驟。
  2. 來源。 裁切或調整原始圖片大小,使其尺寸恰好為目標精靈的 3 倍(約 200-260 像素寬)。腳本均假設為 3 倍。
  3. 靜態圖(1_still.lua,然後使用 2_local_rerender.lua、3_join_outline.lua 進行修正)。根據 still-recipe.md 為此圖片測量參數。按順序提交檢查:手部、臉部與眼睛、輪廓、金屬與背景。當每個部分都獲核准且靜態圖儲存為 *_still_FINAL 時即完成。
  4. 眨眼姿勢(4_blink_poses.lua,在 14 倍縮放下手動描繪眼睛範圍)。在一次提交檢查中並排顯示所有四個姿勢以及一張眨眼 GIF,建置方式請參考 motion-and-breaks.md。核准後即完成。
  5. 動畫(5_animation_frames.lua)。根據靜態圖的測量結果填入其 SETTINGS 區塊,先以 BF_ZERO = true 執行(必須改變 0 像素),然後執行正式執行,接著執行 6_deflicker_metrics.lua。通過以下檢查後,顯示完整 GIF 以及移動部分的裁切翻頁書。
  6. 效果(8_effects.lua,僅限顏色,在去閃爍之後)。檢查後展示。
  7. 附加項目一次處理一個要求(手臂、水等),每個要求都有各自的提交檢查。
  8. 最終完成。 複製到 *_FINAL(.aseprite + 3 倍 GIF),保留先前的最終版本。

每次動畫提交檢查前的檢查項目

檢查項目通過條件位置
零偏移渲染等於姿勢使用 BF_ZERO 時改變 0 像素5
剛體部分(手部)精準每幀的方框,經其整數像素抬升量位移後,等於靜態圖:0 像素自訂 Lua 比較
單幀閃爍(A→B→A)眨眼與效果之外無此現象6 會列印出來
跳動步驟幀列於 BA_STEPS 中排除;其他每幀改變的像素數約 ≤ 2 倍中位數,且任何超過該值的幀都有命名的原因6
熱力圖輪廓、背帶、睫毛、眼睛上無紅色(每循環 ≥ 8 次變化)7_flicker_heatmap.lua
效果每個效果像素至少持續 2 幀;改變的像素數大於 0(弱混合可能跳回相同的調色板顏色)8 會列印計數
閉眼閉眼幀上無虹膜顏色殘留使用 view_sprite 在 12 倍縮放下
翻頁書手部、臉部及每個移動邊緣的 8-16 幀,在 6 倍以上放大時看起來連續view_sprite 區域 + 幀

腳本(scripts/)

每個腳本都需要先設定 PA_DIR(專案資料夾,結尾為路徑分隔符號:Windows 用 \,macOS 用 /)和 PA_SRC(來源圖片檔名),以及其標頭中列出的全域變數。透過 run_lua_script 使用簡短的啟動器來執行它們;<skill> 是此技能的基礎目錄,在技能載入時提供:

PA_DIR, PA_SRC = [[/path/to/project/]], "reference.jpg"
BF_POSES, BF_OUT, BF_PUSH = "blink_poses.aseprite", "frames", true
dofile([[<skill>/scripts/5_animation_frames.lua]])
腳本功能
1_still.lua3x3 保留線條的縮小、k-means 調色板 + 強調色、雀斑處理、孤立點合併
2_local_rerender.lua以不同線條閾值或額外顏色(手部、嘴唇)重新渲染方框
3_join_outline.lua在原始來源有細線處連接虛線輪廓
4_blink_poses.lua睜眼、半閉、接近閉合、閉眼姿勢(檔案中的眼睛範圍因圖片而異)
5_animation_frames.lua所有幀;每個座標都存在於其 SETTINGS 區塊中(包含範例值)
6_deflicker_metrics.lua去閃爍、閃爍偵測、跳動檢查(BA_SKIP 剛體方框,BA_STEPS 步驟幀)
7_flicker_heatmap.lua熱力圖 PNG
8_effects.lua壓縮光線、閃光、海上閃爍、沙地閃光(每個圖像皆有 SETTINGS 區塊)
checkin_sheet.lua來源 / 修改前 / 修改後比對表(針對特定區域)
example_metal_rerender.lua僅供參考範例:使用來自原始來源的陰影層重新渲染金屬

5_animation_frames.lua 存放了目前處理過的動畫類型(呼吸帶、軟體圓頂、搖擺方框、剛體整數像素推擠、肢體分段、海浪)。若遇到具有不同移動部分的新圖片,則需在其中新增一個欄位。

相關技能