在消费者硬件上,自始至终制作了一个游戏资产包——10种动物,58种循环动画——而有趣的部分并不是生成动画本身,而是周围的一切。因为坑点花了我更多的时间,而不是GPU。
设置:RTX 3050 8GB,MiniMax H3 fp8通过ComfyUI,\--lowvram \--cache-none\。源图像是1024×1024的白色卡通插画。
实际上最重要的是
循环动画是通过构建而不是通过提示来实现的。
H3是一个*首末*-到视频模型。将同一个LoadImage连接到`first_frame`和`last_frame`中,动画就被强制返回到其原始姿势。 我花了好几分钟时间,礼貌地要求提示“返回到第一帧”,然后才注意到这个节点已经解决了它。走路动画立即停止了。
缩小主题前生成。
我的源图像占满了90%+的画布,约有2%的余白。每当动物伸出一条腿时,它就会在边缘被截断。解决方案是检测主题的边界框,裁剪,缩放到80%,重新中心在白色上。余白从1.3-5.9%变为12-16%,并且截断消失了。这个问题很容易忽略,因为源图像看起来很好——它是运动需要空间。
长度是量化的,fps不是一个参数。
H3接受17k+5帧:5、22、39、56。没有fps输入——它被训练在24fps上。如果您要求更少的帧,则会得到*更少的运动*,而不是慢速播放。如果您想制作1秒的循环动画,请生成22帧,并编写一个提示,动作完成在1秒内。否则,您会得到一半动画被拉伸到整个持续时间的动画。
背景移除:不要使用一键工具。
rembg/u2net留下了几十像素宽的软光环。成功的解决方案是从边缘开始进行洪水填充(从来不根据亮度进行阈值——一只白色的羊会从内部被吃掉),分离阴影根据饱和度,然后使用`binary_fill_holes`恢复眼睛和封闭的光区域。
一个花了好一会儿才解决的问题:`fill_holes`也填充了真正的背景——胳膊和躯干之间的三角形,伸展的腿之间的间隙。现在我将每个洞的颜色与测量的外部背景颜色进行比较;如果相同,则表示被困的背景,任何具有自己的色调的颜色则保持不变。容差必须非常紧密(10/255);否则会在淡色的主题上泄洞。
什么会破裂
WAN 2.2 5B永远无法完成。采样花了2:24,VAE解码在7.93/8GB上持续45分钟并产生了什么也没有。H3的VAE约为4.9GB,适合;WAN的VAE没有,至少在`--cache-none`的情况下没有。 如果您有8GB的内存,这个问题在您队列30个任务之前值得注意。
我的批处理脚本在超时时死亡。在VAE解码期间,ComfyUI的HTTP服务器会停止回答数十秒。 我只捕获了`HTTPError`,所以一个`TimeoutError`在`/history/<job>`上杀死了一次生成,动画接近完成。捕获`URLError`/`TimeoutError`/`OSError`并重试——超时意味着“忙”,而不是“失败”。在N个连续的沉默之后放弃,而不是在第一次沉默时放弃。如果您感兴趣,可以从以下地址下载它:https://shaddafare.itch.io/shepherds-farm-animated-sprites
评论 (0)