Anime Cel
Make Japanese TV-anime style videos (MP4) with code — cel-shaded characters with tapered line art, big detailed eyes, hair clumps with a specular b…
By edenfunf/reelmimic, MIT licence. Shared here with credit.
anime-cel
Modern TV-anime look drawn entirely by code: characters with confident tapered line art (heavier on the shadow side),
flat cel colour + one hard-edged shadow tone + a rim highlight, large layered eyes, hair built from pointed locks with
an "angel ring" highlight; line-free painted backgrounds; anime staging effects. Every frame is a pure function of t.
Read GUIDE.md in full before building anything. Model sheets in docs/: faces-hina.jpg,
faces-ren.jpg (19 expressions each), turns.jpg (front → 3/4 → profile), bodies.jpg, motion.jpg (stances, walk, run), hands.jpg, sets.jpg,
fx.jpg, and demo-sheet.jpg (the demo film).
Workflow
- Scaffold
bash .claude/skills/anime-cel/scripts/new_project.sh <project-dir>(--keep-demokeeps the example). It copiestemplate/, unhooks the demo, runsnpm install, checks node/ffmpeg/Chrome. - Storyboard each shot with its reads (what the viewer must understand, in order, with times) and the anime
staging you will use (establishing pan, cut on action, focus-line BG for the emotional beat, impact frame, reaction
close-up…). Set
durationinsrc/config.js. - Build one file per shot in
src/scenes/(IIFE ending inshots([[t0, fn]]), add its<script>tostudio.html). A shot paints the whole frame:setTOD()→SET.<set>(cam, t)(opens the camera) → characters →camEnd()→ screen effects → transition. Captions go inwindow.overlayHookwithsubtitle(). - Look at it (from the project dir), open every image with Read:
node render.mjs --sheet=0.5,1.5,2.5,3.5 --cols=4 --w=480 --out=out/check/a.jpg # key frames node render.mjs --strip=3.8:4.5 --cols=6 --w=320 --out=out/check/s.jpg # every frame of an action node render.mjs --stills=4.4 --out=out/check/st # full-res PNG to judge faces node render.mjs --loop=faces_hina --sheet=0 --cols=1 --w=1920 --out=out/check/f.jpg # model sheets (faces_ren, turns, bodies, motion, hands, sets, fx, close_hina, close_ren) - Render
node render.mjs --frames --workers=4 && node render.mjs --encode --out=out/video.mp4 [--audio=...].