Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证网页软件,用于为 mori-desktop 生成 .moripack.zip 角色包
AI 翻译
Web tool to produce .moripack.zip character packs for mori-desktop
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Web tool to build 1024×1024 4×4 sprite animation packs from a single character reference image.
AI-powered. Browser-only. Transparent backgrounds. Multiple export formats.
▶ Try the live app · Docs / screenshots · Buy me a coffee
You give it one reference image of your character. It produces a complete sprite animation pack for mori-desktop — 6 required + 2 optional animated states, each a 1024×1024 4×4 sprite sheet that the floating window plays back.查看完整 README ↗English · 繁體中文
Web tool to build 1024×1024 4×4 sprite animation packs from a single character reference image.
AI-powered. Browser-only. Transparent backgrounds. Multiple export formats.
▶ Try the live app · Docs / screenshots · Buy me a coffee
You give it one reference image of your character. It produces a complete sprite animation pack for mori-desktop — 6 required + 2 optional animated states, each a 1024×1024 4×4 sprite sheet that the floating window plays back.
| Required (6) | Optional (2) |
|---|---|
| idle / sleeping / recording / thinking / done / error | walking / dragging |
It's built for Mori — yazelin's 森林精靈 (forest spirit) Jarvis-style AI partner who lives on the desktop. "Iron Man 有 Jarvis,我有 Mori。" This studio makes Mori's visible body — her sprite form — that the mori-desktop floating window animates.
The studio also works for any character you want to give a visible form to: your own AI partner / personal spirit / streamer overlay companion / character mascot. The Mori demo is one example of what's possible.
You can also export each state as APNG, GIF, WebM, or just the raw sheet PNG — useful for LINE animated stickers, Discord, OBS overlays, video editing, etc.
[character ref image]
│
│ (AI · 1 call → 6-cell grid)
▼
[6 static base poses] ← editable / re-rollable per state
│
│ (AI · 6 calls, one per state)
▼
[6 sprite sheets, 4×4 each] ← editable per cell, normalize across states
│
│ (optional) walking + dragging
▼
[+2 cyclic-locomotion sheets] ← W / Dr standalone pipeline (no pre-tile)
│
│ (manual sort: 反向 + 換位)
▼
[hand-tuned gait cycle]
│
│ (bake transforms + zip)
▼
[mori.moripack.zip] → mori-desktop
│
│ (per state, optional)
▼
[mori-{state}.png / .gif / .webm] → LINE / Discord / OBS
生 <state> 動畫 to produce the 4×4 sprite sheet. Uses pre-tiled placeholder + multi-anchor identity reference to keep the character locked in position with subtle motion (blink, breath, gesture)..moripack.zip — drop into mori-desktop's character folder.Generation
Walking + Dragging (optional cyclic-locomotion states)
scaleX(-1) for leftward motionManual cell sorting (post-generation tuning)
桌面預覽 view (desktop simulation)
object-cover cover full window)drop-shadow matches floating.css)Editing
prev frame + next frame + staticBase references for smooth interpolationCleanup
Cross-state alignment
Normalize scans every state's character bbox and computes per-state transform (scale + offset) so the character lands at the same size + center across all 6 statesExport
.moripack.zip — character pack for mori-desktop (manifest + 6 required sheets + 0/1/2 optional walking/dragging + 2 backdrops).moriproject.zip save/load — full author state (sheets + raw + settings) for resuming work or sharingDemo loader
✦ 載入 Mori 預設範本 button on the project page — loads a fully-configured Mori character (27 MB) so you can play around without generating from scratch. Confirmation dialog warns about overwriting current data.Per-character backdrop
.moripack per mori-desktop PR #107 3-tier backplate chain✦ 載入 Mori Demo on the project page (one-click loads a fully-configured Mori character pack — 22 MB)All providers are BYOK (bring your own key) — the free Author Fallback trial channel has been discontinued. Pick a provider in the sidebar's AI Provider section and fill in your own key (Google Gemini Direct only needs a free 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
Deploy to Vercel:
vercel --prod
Set the same env vars in Vercel Dashboard → Settings → Environment Variables for production.
| Layer | Tech |
|---|---|
| UI | Vite + React 19 + TypeScript + Tailwind CSS + shadcn/ui |
| State | Zustand + IndexedDB (idb-keyval) for Blob-native persistence |
| AI providers | abstract ImageProvider interface, 3 BYOK impls (Google Gemini / Codex-Image / Vertex Gemini) |
| Chroma key | Coverage-based alpha matte + enclosed-detail recovery + edge-only despill + optional erosion |
| Sprite-sheet anim preview | Canvas + requestAnimationFrame (16-frame row-major) |
| Export encoders | upng-js (APNG), gifenc (GIF), MediaRecorder + VP9 (WebM), JSZip (.moripack / .moriproject) |
| Server-side | none — pure static frontend, all AI calls go browser → your provider (BYOK) |
Output spec: 1024×1024 PNG-32, 4×4 grid, 256×256 per cell, row-major frame order, transparent background. Conforms to mori-desktop's character-pack.md v1.0.
| Format | What it's for | Contents |
|---|---|---|
.moripack.zip | Consumer format — drop into mori-desktop's character folder | manifest.json + sprites/{6 states}.png + backdrop-{light,dark}.png |
.moriproject.zip | Author format — resume editing later / share configured starting point | project.json + character-ref.png + sprites/{state}/{sheet,raw-sheet,static-base,raw-static-base}.png + backdrops |
| APNG (.png) | Transparent + looping. LINE animated stickers / Discord / Slack / Twitter inline | Standard APNG with acTL/fcTL chunks |
| GIF (.gif) | Universal compatibility (Mac Preview, Windows Photos animate it natively). 1-bit alpha so edges are slightly crusty | Standard GIF89a |
| WebM (.webm) | VP9 + alpha channel. OBS streaming overlays, QuickTime, browsers. Records 3 loops | VP9 codec via MediaRecorder |
| Raw sheet (.png) | The 1024×1024 4×4 sheet itself. For external editing / inspection | PNG-32 RGBA |
| State | Required | Loop mode | Duration | Pose hint |
|---|---|---|---|---|
| idle | yes | loop | 3000 ms | Standing front-facing, gentle smile, calm welcoming |
| sleeping | yes | loop | 5000 ms | Cross-legged, eyes closed, hands in lap, floating Z |
| recording | yes | loop | 1500 ms | Hand cupped to ear (LISTENING to user, not holding a mic), wide alert eyes |
| thinking | yes | loop | 2000 ms | Finger to temple, eyes glancing up, thought sparkles |
| done | yes | one-shot (sub-pattern A burst-and-settle) | 1800 ms | Both hands raised in victory cheer, joyful ^v^ smile |
| error | yes | one-shot (sub-pattern B sustained-energy) | 2000 ms | Hands to head in cute distressed "oh no!" pose, tear-drop / tension lines |
| walking | opt | loop | 2500 ms | Neutral full-body standing reference (facing right). Actual gait cycle rendered in 16 frames via W template. |
| dragging | opt | loop | 1600 ms | Neutral full-body reference (feet planted in static, suspended swing in 16-frame animation via Dr template). |
Required = mori-desktop expects these 6. Optional = if missing, mori-desktop falls back to idle.png + CSS transforms.
State semantics are editable per project — see src/defaults/semantics.ts for defaults.
The studio code: MIT.
The generated character pack (sprites you make): your work, your choice of license. The Mori reference character bundled as demo is CC-BY-NC-SA-4.0 (attribute, non-commercial, share-alike).
Building this is running on love + caffeine. If you find it useful:
This is self-funded out of pocket. Coffee = direct support for:
You can also ⭐ this repo + share with anyone building their own AI companion / desktop spirit.
If you have a ChatGPT Plus / Pro subscription, you can pair this studio with codex-image-service — a FastAPI wrapper that exposes Codex CLI's $imagegen as an HTTP endpoint, so your subscription's image-gen quota powers studio's generations.
Three ways to combine them:
| Setup | What you need | When it makes sense |
|---|---|---|
| A. Studio (hosted) + your own Gemini key | A free AI Studio API key | New users, exploring, low-volume |
| B. Studio (hosted) + your own codex-image-service | Run codex-image-service somewhere reachable + issue yourself a Bearer key | You have ChatGPT Plus + want unlimited use |
| C. Both self-hosted | Clone + run both repos locally | Full control, offline, no external dependencies |
cimg_…)https://your-domain.example/codex-image)cimg_… you just issuedauto (default) or low / medium / highIf you self-host both, codex-image-service must allow your studio's origin via CORS. yazelin's deployment already does (Access-Control-Allow-Origin reflects request origin); for new self-hosts, see codex-image-service repo for CORS middleware setup.
Made by yazelin