Huashu Design动画引擎深度解析:Stage+Sprite时间轴模型与4个核心API
【免费下载链接】huashu-designHuashu Design · HTML-native design skill for Claude Code · Claude Code 里 HTML 原生的设计 skill · 高保真原型 / 幻灯片 / 动画 + 20 设计哲学 + 5 维评审 + MP4 导出 · Agent-agnostic项目地址: https://gitcode.com/gh_mirrors/hu/huashu-design
Huashu Design是一个 HTML 原生的设计 skill,它的动画引擎用「Stage + Sprite 时间轴模型」+ 4 个核心 API(useTime/useSprite/interpolate/Easing),让你零依赖地在浏览器里做出发布级时间轴动画,一条命令导出 MP4。本文带你快速看懂这套引擎的设计思想。
什么是 Huashu Design 的动画引擎?
多数 AI 生成的动画之所以看起来「廉价」,是因为元素表现得像数字而不是物体——没有重量、没有惯性。Huashu Design 的解法是一套Remotion/After Effects 思路的轻量化时间轴引擎:把动画当成一条时间轴,每个画面片段都有明确的起止时间,而不是零散的 CSS transition。
核心代码全部在一个文件里:assets/animations.jsx(仅 300 余行,零依赖),装进 skill 后即可被 agent 直接调用。
Stage + Sprite:把动画拆成时间片段
这套模型只有两个概念,但足够表达所有时间轴动画:
| 概念 | 角色 | 类比 |
|---|---|---|
<Stage> | 整个动画容器 | 电影院的放映机 |
<Sprite start end> | 时间片段 | 胶片中的一段 |
- Stage负责提供全局时间时钟、自动缩放适配视口、以及播放/暂停/拖动(scrubber)控制条。
- Sprite只在
start到end之间渲染。片段外它完全消失,片段内它向子组件暴露一个 0→1 的本地进度t。
这样写出来的动画天然具备两个好处:片段可交叉(前一个 Sprite 的结束时间可以晚于后一个的开始时间,天然实现 cross-fade 过渡),且任意时刻的画面由时间唯一决定——这正是后面能逐帧导出 60fps 视频的基础。
<Stage duration={10}> <Sprite start={0} end={3}> <Title /> </Sprite> <Sprite start={2} end={5}> <Subtitle /> </Sprite> </Stage>完整的教学级例子(问题→思路→结果的分段叙事动画)见 references/animations.md。
4 个核心 API:覆盖所有动画需求
引擎把动画逻辑拆成 4 个各司其职的 API,记住它们的使用口诀即可:
1.useTime()—— 读全局时间
返回当前播放到第几秒。适合字幕、水印这类需要跟随整条时间轴的元素。
2.useSprite()—— 读本片段进度
返回{ t, elapsed, duration }。t是 0→1 的归一化进度,是驱动动画的主力。比如「在前 30% 完成渐入,后面保持可见」:
const { t } = useSprite(); const opacity = interpolate(t, [0, 0.3], [0, 1], Easing.easeOut);3.interpolate()—— 按进度插值
把进度映射到任意属性区间:透明度、位移、缩放、数字计数……只要能量化的都能插值。这是「数字 → 画面」的翻译器。
4.Easing—— 缓动函数库
内置 8 条曲线,其中三条最值得记:
| 曲线 | 手感 | 用途 |
|---|---|---|
expoOut⭐ | 快速启动、缓慢刹车 | 默认主缓动,给元素「物理重量感」 |
overshoot⭐ | 先冲过再回弹 | Toggle 切换、按钮弹出 |
spring | 弹簧衰减 | 几何体归位、UI 抖弹 |
一个关键品味规则:入场用expoOut、出场用easeIn——这是 Anthropic 级动画的基础规律,也是 references/gsap-recipes.md 里自研 Easing 与 GSAP 完全一致的映射依据。
节奏指南:动画是物理学,不是曲线
引擎只解决「怎么动」,「动得多好」靠节奏规则(详见 references/animation-best-practices.md):
- 微交互0.1–0.3s(hover、tooltip)
- UI 过渡0.3–0.8s(页面切换、模态框)
- 叙事片段每段 2–10s,单段最长不超过 10 秒——人类注意力有限,10 秒讲一件事,讲完就换
写作顺序也有讲究:先写时间轴剧本,再写组件。比如0:00–0:03 问题出现 → 0:03–0:06 放大展开 → 0:06–0:09 解法滑入。动画是 signal 不是装饰,什么都 fade-in 等于什么都没强调。
踩坑方面(比如动画卡顿、场景切换空白断层、字体没加载就测量导致位置偏移)都有真实案例和修复规则,集中在 references/animation-pitfalls.md。
一条命令导出 MP4 / GIF / 60fps
Stage 引擎的「画面由时间唯一决定」特性,让视频导出变成纯机械操作(完整流程见 references/video-export.md):
| 脚本 | 作用 |
|---|---|
| scripts/render-video.js | HTML → 25fps MP4(Playwright + ffmpeg) |
| scripts/convert-formats.sh | 25fps MP4 → 60fps MP4 + palette 优化 GIF |
| scripts/render-video-seek.js | 逐帧 seek 截图,真 60fps 确定性渲染(推荐高质量交付) |
| scripts/add-music.sh | 混入内置 BGM 库(tech / ad / tutorial 等 6 首场景化配乐) |
典型流水线只需三步:录屏 → 派生 60fps 和 GIF → 加 BGM。引擎还内置了录制感知:导出时自动强制非循环、等字体加载完才起播第一帧,避免成片开头出现黑帧或回绕。
上手参考路径
- 引擎源码与用法:assets/animations.jsx
- 时间轴模型教程:references/animations.md
- 能力演示(中英双版):demos/c3-motion-design.html
- 高级后端(HyperFrames + GSAP timeline):references/gsap-recipes.md
一句话总结:Huashu Design 的动画引擎用「Stage 时钟 + Sprite 片段 + 进度插值 + 缓动曲线」四件套,把视频制作软件的时间轴思维搬进了一个 300 行的零依赖文件里——写 HTML,拿成片。
【免费下载链接】huashu-designHuashu Design · HTML-native design skill for Claude Code · Claude Code 里 HTML 原生的设计 skill · 高保真原型 / 幻灯片 / 动画 + 20 设计哲学 + 5 维评审 + MP4 导出 · Agent-agnostic项目地址: https://gitcode.com/gh_mirrors/hu/huashu-design
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考