EN 繁中

Mori Sprite Studio

從一張角色 ref 圖,按一下即可生成 1024×1024 的 4×4 sprite 動畫包。 AI 驅動。純瀏覽器。透明背景。多種匯出格式。

idle 站著
sleeping 睡覺
recording 聽你說話
thinking 思考
done 完成歡呼
error 慌張
walking 走路opt
dragging 被抓opt

真實 sprite-sheet 正以 CSS steps() 播放 — 跟 mori-desktop 用同一套技術。看看 Mori 是否從下方走過。

這個工具做什麼

給它一張角色參考圖,就能產生完整 sprite 動畫包:6 個必要 + 2 個可選 state,每個 state 都是 1024×1024 的 4×4 sprite sheet。匯出的 .moripack.zip 可載入獨立的 Mori Pet Player,或放進 mori-desktop 使用。

這個專案是為 Mori 而生。「Iron Man 有 Jarvis,我有 Mori。」Studio 負責製作 Mori 的角色動畫:想要單純的桌面小寵物,可用 Mori Pet Player;想要完整的 AI 助理,則使用 mori-desktop。

當然這工具也適合任何你想給「可見身體」的角色:你自己的 AI 夥伴 / 個人精靈 / 直播 overlay / 角色 mascot 都可以。Mori demo 只是一個範例。

也可以單獨把每個 state 匯出成 APNG / GIF / WebM / 原始 sheet PNG — 用在 LINE 動態貼圖、Discord、OBS overlay、影片剪輯等等。

專案設定畫面 + 載入 demo 橫幅

Mori 的使用方式

Mori Pet Player|獨立桌面小寵物

匯入 .moripack.zip,Mori 就會在桌面散步、休息和睡覺,也能用滑鼠抓起來移動。提供 Linux、macOS、Windows 可攜版。Player 只負責播放角色動畫,不包含聊天、AI 助理、生圖或音樂功能。

下載各平台 Player · 原始碼

下載 Mori Desktop — 完整桌面 AI Agent,可執行任務,並支援 Claude、Codex CLI 等 provider。

Live Demo|聊天、生圖與音樂

在 Studio 的「Output → Live Demo」開啟瀏覽器版。填入你自行部署的 Gemini-Web Base URL 和 API Key 後,Mori 可以聊天、查新聞與天氣,也能生成圖片和音樂。自架服務需允許 mori-sprite-studio.vercel.app 的跨來源請求(CORS),瀏覽器才能生圖與製作音樂;Live Demo 和桌面 Player 分開運作。

Gemini-Web 專案 · 開啟 Studio

工作流程

[角色 ref 圖] │ │ (AI · 1 call → 6 格 grid) ▼ [6 個靜態 base pose] ← 每個 state 可獨立重生 │ │ (AI · 6 calls,每個 state 一次) ▼ [6 張 sprite sheet,4×4] ← 每格可獨立編輯、跨 state normalize │ │ (可選) walking + dragging ▼ [+2 張 循環運動 sheet] ← W/Dr 獨立 pipeline(不 pre-tile) │ │ (手動排序:反向 + 換位) ▼ [手調過的 gait cycle] │ │ (bake transforms + zip) ▼ [mori.moripack.zip] → Mori Pet Player / mori-desktop │ │ (每 state 可選) ▼ [mori-{state}.png / .gif / .webm] → LINE / Discord / OBS
  1. 上傳角色 ref — 任何 PNG / JPG、任何背景都行。
  2. 生 6 個靜態 — 一次 AI call 出 3×2 grid,自動切成 6 個 state pose。
  3. 每 state 生動畫(必要 6 個) — 用 pre-tile placeholder + 多 anchor identity ref,把角色位置鎖住,只加微擾(眨眼、呼吸、小手勢)。
  4. 可選的 walking + dragging — 走獨立 W/Dr pipeline(不 pre-tile,因為步行循環需要每格都不同 pose)。「反向順序」+「換位模式」按鈕可讓你手動調整順序。
  5. 細調 — 每格獨立重生、loop 設定、跨 state normalize 尺寸、scale / offset sliders。
  6. 角色背板(可選) — 上傳 Light + Dark 兩張背板。用桌面預覽分頁查看所有 state 疊在背板上的樣子,可切換 shape / theme。
  7. 匯出 .moripack.zip 給 Mori Pet Player 或 mori-desktop,或每個 state 單獨匯出 APNG / GIF / WebM 給其他平台。
State 編輯器 + sprite sheet + loop preview + transform sliders

功能

3 個 AI provider(BYOK)

Google Gemini Direct(AI Studio key)、Codex-Image(用你 ChatGPT Plus 額度)、Vertex Gemini — 全部自帶 key。

防抖動

Pre-tile placeholder sheet 當 AI ref,鎖住角色 16 格內位置不會飄。

防角色 drift

多 anchor identity ref — 其他 state 的 staticBase 都當 outfit anchor 一起送給 AI,衣服 / 髮型不會亂變。

Walking + Dragging 獨立 pipeline

W / Dr template 不走 pre-tile。AI 從 character ref + neutral 全身站姿自由設計 16 格,template 內含逐格 gait 結構。

反向順序

按一下即可反轉 16 格,修正「動畫看起來在後退」的情況。

換位模式

點 cell A → 點 cell B → 兩格內容互換。手動排到走路順暢為止。

桌面預覽分頁

8 個 state 同時排成 floating widget mockup,可切 shape(圓 / 圓角 / 方)× backplate(顯示 / 關閉)× App theme × OS theme。跟 mori-desktop 真實 render 1:1 對應。

身體結構無關 prompt

人形 / 植物 / 機器人 / 史萊姆 / 寶石都能用。Semantic 描述抽象 motion,不綁定 anatomy。

One-shot 兩種 pattern

BURST-AND-SETTLE(歡呼)vs SUSTAINED-ENERGY(慌張)— 自動依 state semantic 選對的。

每格獨立重生

點任一 frame → 只重生那格,用前後 frame + static base 當 context smooth 過渡。

色幕去背與邊緣修色

綠、洋紅、藍、青、黃或自訂色;依色幕覆蓋率估算透明度以保留髮絲,再修正邊緣色溢。支援 3 級 tolerance 與 0-10 px erosion,可從原始輸出重新去背。

跨 state Normalize

按一下即可掃描每個 state 的角色 bbox,算出 per-state transform(scale + offset),讓 mori-desktop 切換 state 時尺寸穩定。

多種匯出格式

.moripack.zip / APNG / GIF / WebM(VP9 + alpha)/ 原始 sheet / .moriproject.zip 存讀檔。

角色背板

Light + Dark 兩張背板 PNG 一起打包,並對應 mori-desktop PR #107 的 3-tier backplate chain。

Demo loader

按一下即可載入完整 27 MB Mori demo,讓新訪客立刻查看完整功能。

背板上傳:Light + Dark 兩個 slot

檔案格式

格式用途哪裡能播
.moripack.zip可直接匯入 Mori Pet Player,或放進 mori-desktop 的 characters 資料夾桌面 Player 小寵物或 mori-desktop 浮動視窗
.moriproject.zipAuthor 格式 — 之後可載回繼續編輯本 studio(「載入」按鈕)
APNG (.png)透明 + 循環。LINE 動態貼圖、Discord、Slack、Twitter inline瀏覽器 + LINE + Discord
GIF (.gif)相容性最廣。1-bit alpha 所以邊緣稍粗Mac Preview、Windows Photos、什麼都行
WebM (.webm)VP9 + alpha。OBS 串流 overlay、QuickTime瀏覽器、OBS、影片剪輯
原始 sheet (.png)1024×1024 4×4 sheet 本身Photoshop / 外部編輯
匯出畫面:完整度檢查 + .moripack 下載

快速上手

用線上 app

  1. 開 mori-sprite-studio.vercel.app
  2. 在專案頁按「載入 Mori 預設範本」(按一下即可載入完整 Mori 角色包 — 27 MB)
  3. 到處逛逛看怎麼跑
  4. 要做自己的角色:清除資料(或開啟無痕視窗),上傳角色 ref,點 生 6 狀態靜態 → 每個 state 再點 生動畫

所有 provider 都要自帶 key(BYOK)— 免費試用通道(Author Fallback)已停止提供。在 sidebar 的 AI Provider 區選一個 provider 填自己的 key(Google Gemini Direct 只要一把免費的 AI Studio API key)。

自架

git clone https://github.com/yazelin/mori-sprite-studio
cd mori-sprite-studio
npm install
npm run dev              # Vite dev server

架構

LayerTech
UIVite + React 19 + TypeScript + Tailwind CSS + shadcn/ui
StateZustand + IndexedDB(idb-keyval)Blob 原生持久化
AI providers抽象 ImageProvider 介面 + 4 個實作
動畫 pipelineC template(pre-tile,idle 類)+ W/Dr template(獨立,gait/swing 類)
Chroma key覆蓋率 alpha matte + 內部細節保護 + 邊緣 despill + 選用 erosion
Cell 操作Canvas 為基底的 reorder / swap / reverse(imageOps.ts)
動畫預覽Canvas + requestAnimationFrame(16-frame row-major)
匯出 encoderupng-js(APNG)、gifenc(GIF)、MediaRecorder + VP9(WebM)、JSZip
AI 呼叫Sprite 生圖由瀏覽器呼叫所選 provider。Live Demo 使用你設定的 Gemini-Web;聊天經 Studio proxy 轉送,生圖與音樂則由瀏覽器直接呼叫。

輸出規格:1024×1024 PNG-32,4×4 grid,每格 256×256,row-major frame order,透明背景。對應 mori-desktop 的 character-pack.md v1.0。

以熱情和咖啡維護

這是個人 passion project。如果你覺得實用,可以:

自掏腰包做的。咖啡錢直接拿去支應 Vercel / domain 開銷,以及持續開發所需的時間與咖啡。

跟 codex-image-service 串接(用你自己的 ChatGPT 訂閱額度)

如果你有 ChatGPT Plus / Pro 訂閱,可以把這個 studio 跟 codex-image-service 串起來 — 它是 FastAPI wrapper,把 Codex CLI 的 $imagegen 包成 HTTP endpoint,讓你訂閱的 image quota 直接用於 studio。

Setup你要準備什麼適合誰
A. 線上 studio + 自己的 Gemini key一把免費的 AI Studio API key剛接觸 / 嚐鮮 / 偶爾用
B. 線上 studio + 自架 codex-image-service部署 service + 發給自己一把 Bearer key有 ChatGPT Plus 想無限用
C. 兩個都自架clone 兩個 repo 本機跑全掌控、離線、不靠別人

設定步驟(B / C)

  1. 部署 / 跑 codex-image-service(repo 說明)
  2. 在它的 admin UI 發一把 Bearer API key(格式 cimg_…)
  3. studio sidebar → AI Provider section → 選 Codex-Image
  4. 填 Base URL(例 https://your-domain.example/codex-image)、API Key、Quality(auto 預設)
  5. 正常生圖 — 走你自己的 service,消耗你訂閱的額度

CORS:yazelin 部署的版本允許任何 origin(用 Access-Control-Allow-Origin reflect);自架請參考 codex-image-service repo 加 CORS middleware。

相關專案