Art-style animation → HyperFrames
Engines
- huashu-art-motion (
~/.claude/skills/huashu-art-motion, installed by setup.sh): deterministic canvas engine (window.renderFrame(t)), painting libsPAINT(strokes, halftone, pixelate, dabs, mosaic, facets, inkWash, brush, cut → Path2D),TOON(flat shading),CAM(pushTo dives). Read its SKILL.md for the API. - claude-animation plugin (hand-drawn 2D, textured-editorial / watercolour looks) — alternative look.
- HyperFrames does assembly, titles, sound, captions and the final render.
Workflow that works
- Custom scenes, not presets. huashu's
render.py --specclips draw a centre node + satellites and read as a mind map. For anything showcase-grade write scenes: copyscripts/engineintovideos/<name>/engine, createdemos/<film>/eras.js+<film>.jsregisteringSCENES['id'] = (g, t, W, H) => {...}. - Kurzgesagt look: one continuous world, flat shapes with TOON shading, rim light, a slow
CAM.pushTodive into each layer ("what's inside"), Poppins/rounded type, scale bars and labels that pop on the beat. - Painter styles: compose the subject once, then render it through each style's brush (Van Gogh = directional strokes along a flow field; Lichtenstein = halftone + black outline; Kusama = dots; cubism = facets ~nx26/ny16 with small shift — too many facets = shattered mess; ink = inkWash; 8-bit = pixelate + palette).
- Render (30 fps, the engine defaults to 60):
uv run --with playwright python render.py --film demos/<film> --solo <id> --no-counter --fps 30 --from 0 --to <s> --out clip.mp4(--width 1080 --height 1920for vertical). - Assemble in HyperFrames: clips as
<video class="clip">with titles/labels as HTML on top, score from thescoreskill with a hit per style change, render, loudnorm −14.
Look at a frame of every style before rendering the full set — alpha/wash settings that look fine in code often come out muddy.