开源工具
wechat ·
@极客之家
又一个神级开源 Skill:轻松搞定 36 种画风 + 口播动画
未提供
正文
今天给大家分享一个开源的艺术动画项目:huashu-art-motion,目前在 GitHub 上有 5100+ Star。
先简单介绍下
huashu-art-motion 是一个 Skill,它可以用代码画场景、安排动作和转场,也能根据口播做一小段讲解动画。仓库里有艺术风格配方卡、场景代码、参考视频拆解工具和成片检查脚本。
这个 Skill 包含36种艺术风格、9种解说语法,可以用代码方式让画动起来。
功能
做画面内部也在动的场景
官方的艺术史短片里,同一位少女和一只猫穿过不同时期。房间构图变化不大,画风一直在换,从洞穴壁画、古埃及壁画到印象派、梵高、包豪斯,后面还有像素画、蒸汽波和扁平插画。
画面里能看到水面涟漪、星空转动和像素角色顶金币,转场前后的动作也会接着往下走。官方把很多动作直接写进了场景代码,我们做新题材时可以拿这些代码改,不用每回都从一张静态图开始。
拆一段参考视频,再重做动画
我们给 Agent 一段动画,它会先整理转场位置、节奏和画面里主要运动的区域,再根据这些内容重做。拆解结果里会留下具体的转场和动作信息,后面画场景时可以接着用。
我会用它看一些动作比较密集的参考片,先弄清楚哪些地方在动、什么时候切换,再决定自己的片子怎么安排。参考视频本身能不能用,还得在动手前确认好。
按配方卡修改画风
风格配方卡里写了配色、笔触、适合做的动作和转场方式,有些卡片还记录了当前的短板。场景代码也放在一起,看完效果以后,可以继续翻代码和参数。
这些风格的完成程度有差别。人物和背景不协调、局部动作僵硬、材质不够像,项目里都有记录。我会先用总览图挑几种方向,再看对应卡片里写了什么问题,免得做到一半才发现这个风格还差不少东西。
项目早期的艺术风格样片总览
这是项目早期 35 段样片的总览。同一个房间是这组艺术史样片的安排,官方也提醒做新内容时别照搬。
给口播补一小段画面
平时做技术内容,我经常会遇到光靠口播不太容易讲清楚的地方。数据变化可以配一张逐步展开的图表,几个对象之间的关系可以跟着讲解画出来,讲软件操作时也能把真实界面素材放进去,再加一些标注。
huashu-art-motion 目前整理了 9 种解说动画语法,包括白板、信息拼贴、动态文字、数学讲解、发布会式界面和财经图表等。其中 8 种带可运行示范、参数化片段和 JSON 示例,第 9 种讲解员形式主要是参考实现,需要自己准备角色素材。
白板:笔尖揭开线稿动态文字:主词砸进来
参数化片段支持横屏、竖屏和透明底。已经在剪的视频缺哪几秒,可以只做那几秒,再拿回原来的剪辑流程里。我自己的口播稿、屏幕文字和数字,会在导出前再对一遍。
导出前后跑一遍检查
仓库里的 qa.py 会检查画面稳定性、渲染效率、运动情况和流畅程度,也会给出文字框景方面的线索。交付前还有成片检查,中段出现空画面,或者整片缺少镜头内运动,脚本会提示,有些情况会阻止交付。
跑完脚本,我还是会把成片从头看一遍,看看字有没有被截断,动作跟讲解对不对得上。项目也建议找一个没参与制作的 Agent 单独审片,我会把它的意见和原片对照着看,再决定哪些地方要改。
这些代码和检查脚本都在仓库里,后面要改的时候,可以回到场景和参数里查,不必一直守着聊天记录反复描述同一个问题。
快速开始
先把环境跑通
仓库里的安装命令是:
npx skills add alchaincyf/huashu-art-motion
还需要检查 uv、FFmpeg 和 Playwright Chromium,第一次渲染前需要装浏览器:
uv run --with playwright playwright install chromium
Skill 安装完成后,浏览器、FFmpeg 和输出目录还是要分别检查。第一次用的话,建议尽量把时长压低,先跑通一个几秒钟的小片段,确认能正常出图、出视频,再往里加自己的内容。
接下来我们来看四个案例,前俩是我觉得比较有意思的,开源仓库放出来的示例,后两个是我自己做的。
效果展示
1. 花叔穿越名画
《花叔穿越名画》完整成片长 2 分 08 秒,使用了 23 种画风。角色从一幅画走进另一幅画,人物和场景会一起换风格,也会跟画面里的东西互动。
我这里放其中的莫奈片段。角色在日本桥上打水漂,水面出现涟漪,随后继续走向下一场景。
仓库还收了长卷骨架和其中 3 段示范。以后想做类似内容,可以在这套工程结构上改,角色和场景换成自己的就行。
2. 像素闯关片
另一条官方样片是 65 秒的像素闯关片。砖块、水管、关卡运动和转场由代码完成,人物使用生成帧合成。角色顶砖、踩敌人、钻进水管,中间还接了几种不同的转场。
3. Git 分支合并白板动画
我自己先拿 Git 分支合并试一段 20 秒的白板动画。主线和功能分支画成两条路,提交是一个个小盒子,功能分支从主线岔出去,各自往前走,最后在合并节点汇合。冲突出现的时候加个红框,解决以后再往下画。
提交关系我会直接写清楚,免得最后拿到的图把分支画错。盒子也不放太多,A、B、C、D、E 加一个合并提交就够了,手机上还能看清。
我给 Agent 的需求大概是这样:
做一段 20 秒的白板动画,解释一次 Git 分支合并。
main 上有 A、B、C 三次提交,feature 从 B 分出,包含 D、E 两次提交,最后生成合并提交 M,M 的两个父提交是 C 和 E。
提交用小盒子表示,分支线按这个真实拓扑绘制,不要改成一条直线。
笔尖逐步画出提交和连线,合并前用红框标出同一文件的冲突,解决后再画 M。
结尾保留完整提交图,不加与本次合并无关的命令。
这条不用生成人物,素材准备少一些。做完以后,先看分支起点、合并节点的两个父提交和屏幕上的提交名,确认图没有画错。
4. 手冲咖啡剪纸长卷
咖啡这条准备做成 24 秒的剪纸长卷。咖啡豆从画面左侧滚进来,研磨后变成咖啡粉,接着放滤杯、注水,闷蒸时粉层慢慢鼓起,咖啡液再一滴滴落进分享壶。结尾留一杯咖啡,把这次用到的参数写在旁边。
萃取参数我会换成自己的记录,动画只展示这一次冲煮。整条片子也不需要人物帧,主要时间在调器具、动作和场景衔接。
需求先这样写:
做一段 24 秒的剪纸质感横向长卷,记录一次手冲咖啡。
画面依次出现咖啡豆、研磨、滤杯、闷蒸、注水和滴滤,咖啡豆和器具沿着长卷自然衔接,不要做成四张独立幻灯片。
闷蒸时粉层缓慢鼓起,水流和最后的蒸汽保持运动。
本次示例参数写为咖啡豆 18 克、注水 300 克、闷蒸 30 秒、总萃取 2 分 30 秒,并标注“本次记录”。
结尾是一杯咖啡和完整参数,不使用官方角色素材。
看看效果:
两条做完以后,需要先把静帧和短片都留下来,再跑 qa.py 和成片检查。用人物、配音、字体或者参考视频时,我会分别确认权限。
接图像或语音服务还要看自己的账号情况,产生的费用也要单独算。
我的看法
我觉得这个项目适合给口播视频补几段动画,做完以后还能回到代码里改,比较方便和更容易做出自己心中想要的效果。
不过本地环境和素材都要自己准备,出片以后也得再检查一遍,也没那么省事。
项目地址:
https://github.com/alchaincyf/huashu-art-motion