Communitygithub.com

手绘视频

借助 p5.brush 在 HyperFrames 中制作具有真实手绘质感(钢笔、铅笔、炭笔、马克笔、蜡笔、水彩、墨水)的视频,支持任意风格。

手绘视频 是什么?

该技能允许用户创建完全手绘质感的视频,所有画面元素均通过 p5.brush(GPU 绘制真实笔触纹理)在 HyperFrames 项目中实时渲染,每帧为纯时间函数,保证渲染结果精确可重复。技能内置三个起点用例:解释性手绘笔记、动态涂鸦故事、以及对真人视频的描摹重绘,同时支持用户自由扩展新用例。适用于 Windows 和 macOS 系统,需要 Node.js 18+ 和独立 Python 虚拟环境。核心规则强调“每帧为纯时间函数”、“一元素一种子”、“手绘速度感”、“工具统一”等九项准则,确保结果既有手绘的不完美质感,又保持每帧的一致性。用户可通过 `new_project.py` 快速启动项目,并通过 `hyperframes` 命令进行预览、检查与导出 MP4 视频。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ouerf-man/hand-drawn-video/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

手绘视频 是做什么的?

屏幕上的一切均由 p5.brush(真实的钢笔、铅笔和水彩纹理,在 GPU 上绘制)在 HyperFrames 项目中绘制,并且每一帧都是时间的纯函数,因此渲染结果精确无误。以下用例是起点而非终点:任何手绘创意均可实现。此文件中的路径均相对于技能文件夹。

1. 设置(一次性)

  • Node.js 18+(HyperFrames 通过 npx 运行)。
  • 技能 Python 环境: ~/.cache/hand-drawn-video/venv/bin/python(Windows %USERPROFILE%\.cache\hand-drawn-video\venv\Scripts\python.exe),由 INSTALL.md 步骤 5 通过 Python 3.10-3.12 创建。以下所有命令均使用此 Python。如果缺失,请运行 INSTALL.md 步骤 4-7。切勿将 pip install 安装到系统 Python 中(Homebrew Python 会拒绝),在 Mac 上命令是 python3,而非 python。
  • 互联网:首次运行时,scripts/brushlib.py 会将 p5.brush(固定版本,SHA-256 校验)下载到 kit/.cache/ 中;每个项目都会获得一份副本。渲染时还会从 cdn.jsdelivr.net 加载 GSAP,因此渲染需要互联网连接。
  • redraw-video 用例需要更多组件(MediaPipe、ffmpeg):参阅其 USECASE.md。 完成标志:npx --yes hyperframes --version 输出版本号,且 <skill Python> scripts/brushlib.py 输出 p5.brush ... ok。

2. 选择用例

用例功能起始目录
explainer手绘笔记式步骤解说:钢笔绘图、箭头、水洗、手写标签、红色记号笔突出usecases/explainer/
story短篇动画故事:涂鸦角色表演(挤压、预期动作、眼神、眉毛),水彩世界usecases/story/
redraw-video人物真实视频的重绘(每秒 12 帧,丝网印刷或水彩效果),带有真实到绘画的过渡擦除usecases/redraw-video/
blank其他任何内容或新风格:一条钢笔线、一层水洗、一组排线、手写字迹以及绘画工具包usecases/blank/

在编写任何内容前,阅读所选 usecases/<name>/USECASE.md。若未在表格中,则从 blank 开始,并阅读 references/p5brush-notes.md。 完成标志:选定用例并确认内容(文字、节奏、时长、9:16 或 16:9)。

3. 启动项目

<skill Python> scripts/new_project.py <use case> "<Documents>/<new folder>"

将项目放置在用户的“文档”文件夹中(绝对路径;在 Windows 上可能在 OneDrive 内),切勿放在技能文件夹内:技能更新会替换该文件夹。(--list 可列出可用用例。)redraw-video 例外:它运行自己的工具(USECASE.md)。 完成标志:文件夹包含 index.html、assets/vendor/brush.js(p5.brush,已为 HyperFrames 检查器打补丁)和 assets/fonts/。

4. 个性化定制:优秀手绘作品的规则

以下规则适用于所有用例和新风格。

  1. 每帧都是时间的纯函数。 renderAt(t) 在每次 hf-seek 时清除并重绘所有内容。不使用 Math.random()、Date、计时器或动画帧。
  2. 每个元素一个种子(在每个元素前使用 sd(id))。正在生长的笔触不得改变后续笔触的纹理。
  3. 线条先行,水彩随后。 轮廓最先绘制;水洗在紧随其后淡入;排线通过 brush.clip 从左到右逐渐显现。水彩按绘制顺序位于线条下方。
  4. 以手绘速度绘制。 一个笔触耗时 0.2-0.8 秒,带有缓入缓出。手写字每字母约 0.04 秒。没有任何内容会瞬间出现。
  5. 每个视频使用同一系列工具。 例如钢笔 + 水彩 + 一支红色记号笔。三到四种墨水加上纸张颜色。红色仅用于需要注视的重点。
  6. 不完美,但每帧的不完美保持一致。 使用固定的正弦噪声来绘制超出边角的线条和抖动线条,绝不为每帧引入新随机性。例外:刻意“颤动”(线条闪烁),每个绘制使用新种子,持续 2-3 帧(每秒 8-12 个绘制)。
  7. 简单形状比细节更快被理解。 角色由圆形头部、点状眼睛和一条嘴部线条构成;通过身体(挤压、预期动作、跟随动作)以及眼神和眉毛进行表演。
  8. 文字为手写体、简短且位于绘图旁边,绝不覆盖绘图。 工具包字体为 Caveat(拉丁文)。对于阿拉伯文,请在 assets/fonts/ 中添加 OFL 许可的阿拉伯字体,并使用 @font-face 声明。
  9. 保持简短和安全。 每个片段 5-12 秒。对于 9:16 格式,关键绘制和文字应保持在距离顶部约 170 像素、距离底部约 400 像素之间(平台按钮和字幕区域)。 完成标志:场景内容符合约定并遵循九条规则。

5. 检查与渲染

  • npx --yes hyperframes lint:0 个错误。对于单文件场景,“文件过大”警告可接受。
  • npx --yes hyperframes preview 进行预览,或渲染后查看开始、中间和结束帧。
  • npx --yes hyperframes render . -o renders/video.mp4。
  • 对照步骤 4 中的规则和用例自身的检查项复核帧,修复后重新渲染。 完成标志:renders/video.mp4 存在且其帧通过检查。

6. 添加用例(扩展技能)

创建 usecases/<name>/,包含:

  • index.html:一个可运行的 HyperFrames 组合,加载 assets/vendor/brush.js 和 assets/fonts/ 中的字体(复制 blank 作为起点)。
  • USECASE.md:何时使用、如何修改模板及其自身检查项。 new_project.py 会自动识别新的用例。向步骤 2 的表格中添加一行。

限制

  • p5.brush 需要 WebGL2:HyperFrames 在 Chrome 中渲染,Chrome 支持 WebGL2。
  • 水彩填充无法达到全暗(如真实水彩):对暗部区域使用水洗。更多陷阱见 references/p5brush-notes.md。
  • 描摹重利用例最适合人物正面或四分之三侧面。

相关技能