我训练了一个2D游戏动画生成模型,用于创建复杂、酷炫的游戏动作(完全开源)

六个月前,一个下午,一个朋友带着一个AI问题来找我。
问题是,他尝试使用OpenAI的文本转图像模型来生成2D游戏动画的精灵图,但由于角色错位和一致性问题而无法实现。
我的朋友是游戏行业的老兵。他说,如果AI能够用于生成2D游戏动画,可能会对游戏行业产生重要价值。
我觉得很有趣,一时兴起,开始训练一个2D游戏动画生成模型。经过一段时间的探索,我取得了一些成果。现在我将这个模型、代码、数据以及数据准备代码全部开源。
我们还调查了游戏动画生成模型产品商业化的可能性,我稍后会分享。
模型生成的游戏动画
01 游戏动画的冲击力从何而来?
一开始沉浸在动画生成中很有趣,但模型训练很快变得极具挑战性。我很快发现这是一个深不见底的坑。
最初自然而然的想法是寻找大量的游戏动画资源,并使用最新的开源视频生成模型进行微调训练。
游戏动画资源并不稀缺。我们很快从互联网上找到了数万个游戏动画,大部分是早期主机和街机游戏的动作动画,以及一些设计师在艺术设计平台上的公开作品。我们开始尝试使用几种常见的开源模型进行训练。
在开始训练时,我们发现,尽管同样是图像的时间序列,但游戏动画在许多方面比普通视频复杂得多。
首先,日常现实生活视频中的帧相对平滑,没有剧烈变化。
然而,在游戏动画中,许多动作的幅度特别大,帧之间有突然的变化。有各种高度复杂的转体、身体部位相互重叠等。不仅有动作的变化,还经常有衣服飘动和光影效果。
为了突出动作的冲击力和满足感,2D动画经常引入帧之间的剧烈变化。在许多情况下,动作的帧率是故意降低的。例如,据说皮克斯动画的帧率是普通电影的一半。
尤其是在早期的街机游戏和其他游戏中,由于资源有限,他们不得不将资源优化到极致,尽可能地为每个动作节省帧数。
可以说,游戏动画都有严重的掉帧现象!
例如,下面《拳皇》草薙京的火球动画只有4帧,这简直难以想象。
在游戏动画领域有著名的12条原则,其中许多通过违反日常规则的艺术夸张来实现更流畅和更令人满意的冲击力。
例如,根据“预期原则”和“时序原则”,蓄力抬手发火球的动作会花费大量时间来描绘,而手臂下落释放火球的实际过程只被短暂展现。在一帧中,手臂还在身后,下一帧它已经移动了180度到前面。动作的冲击力更多是通过动作完成后头发和衣服的摆动来表达的。
所以帧之间有很大的突然变化。非常不流畅。时间变化可以说是高度非线性的。
正是这种帧丢失和掉帧为游戏带来了令人满意的冲击力。
但这可以说极大地增加了视频模型训练的难度。首先,数据非常不平滑且不流畅。此外,由于大多数视频骨干模型是使用平滑的日常视频进行训练的,因此带有掉帧和非线性时间变化的游戏动画的训练数据与预训练数据之间的一致性较低。
另一个困难来自于高度可变的游戏动作,这些动作很难用语言表达。例如,即使是最简单的跑步动作,每款游戏都有不同的跑步风格和动作频率。
当使用文本来提示模型时,这些动作风格的变化很难用语言描述,只能称之为“跑步”。
视频模型需要学习如何移动图像来表达动作,但是训练样本变化太大,会使模型难以理解和总结运动规则。
由于上述原因,尝试直接使用视频模型训练游戏动画模型的实验效果非常差。
02 你需要的只是重复相同的动作1000次
我认为这些挑战并非不可解决。事实上,仍然是当前视频模型训练数据不足。在AI领域,只要堆叠足够多的数据,就没有解决不了的挑战。
只是对于我们这些穷光蛋来说,没有那么多的硬件资源去训练那么多不同的数据,我们可能需要等待更强大的基础模型出现。
所以我们想到了另一种方法——使用3D渲染动画来训练2D动画模型。
在寻找更高质量、更高帧率的训练动画时,我们想知道是否可以将3D游戏动画渲染成高质量的2D动画。因为动作渲染的帧率可以由我们自己控制,这可以解决帧之间连贯性和平滑度不足的问题。
Mixamo是Adobe的一个开源3D动作库。它提供了数百个游戏角色的3D模型和200多个游戏动作。版权全部开放。
Mixamo数据已被用于许多AI模型训练。
我们选择了一些我们想要的动作,然后编写脚本将所有200个角色的这些动作渲染成2D动画。
使用3D渲染动画训练2D动画模型有很多好处:首先,我们可以找到许多开源的3D模型和动作。每个模型都可以为每个动作渲染一个动画。每个动作可以由200个不同的角色至少解释200次。我们还可以选择不同的摄像机角度、不同的灯光和渲染风格。这几乎相当于对相同动作有数千次重复的训练数据。它有助于模型一遍又一遍地熟悉一个复杂的动作。
这解决了动作过于多样化和可变的问题。通过不断重复相同的动作,模型更容易理解我们想要的动作规则。
我们控制渲染过程,使动画帧之间的变化更平滑。此外,Mixamo的大多数动作都来自真实的人体动作捕捉,不像我们之前使用的游戏动画那样具有艺术抽象和掉帧,这相对降低了模型的难度。
使用Mixamo渲染动画进行训练取得了非常好的效果。
03 训练细节
1. 基础预训练模型的选择
我们尝试了多种不同的流行模型进行微调。
当然,由于这只是一个副项目,预算控制在一块A100能承受的范围内。
Animatediff在开源社区中被广泛使用,包括comfyui社区。一个很大的优点是它将时间和空间维度分离的设计,这使得以后更换空间维度图像模型部分很方便。
在我们的游戏动画场景中,训练效果不佳。我认为这可能是因为游戏动画的空间维度复杂度太高,而animatediff简化的空间维度设计导致其空间维度表达能力较弱。
Latte使用更先进的DIT分词方法。但训练效果也不是很理想。我们认为开源模型可能没有足够的训练数据,且质量不够高。
使用VideoCraft2(VC2)和DynamicCraft(DC)模型进行训练取得了最佳效果。
VC2的另一个优点是,论文提到他们专门对风格迁移进行了更多训练。这种能力对游戏动画很重要。
2. 平衡动作(时间维度)和图像(空间维度)
基于3D渲染训练动画模型的一个最初问题是,由于大量的重复训练样本都基于3D渲染,模型输出都具有3D渲染风格,并且会影响空间维度图像部分的能力。
我们使用GPT4随机生成了300个游戏角色提示,然后使用原始VC2模型生成动画。我们将这部分数据添加到训练中,以帮助模型保留其原始图像能力。效果相当不错。
我们还保留了一些其他非3D渲染的游戏动画。我们手动筛选了训练数据,尽量保留接近3D动作的动画,过滤掉过于困难或过于抽象的动画。根据实验,这部分有助于提高模型的图像部分性能。
3. 武器
武器也是游戏动画与普通生活视频的一大区别。许多游戏角色需要装备或手持各种奇怪的武器。这也是一个挑战。
对于许多图像模型来说,正确地握持武器仍然有些困难。因此,我们还专门为每个角色按一定比例添加了剑和斧头等武器的动作,增强了模型握持武器的效果。
4. 训练细节
我们使用1块A100,训练了40~50个epoch。
所有动画的提示都分为两部分。前半部分是动作描述:“游戏角色XXX的动画……”,后半部分是角色描述。
角色描述都使用GPT4提示生成。因为使用mixamo渲染的图像清晰度高,概念相对简单,不那么抽象,所以GPT4的描述相对准确。然而,对于识别真实游戏素材,特别是低分辨率像素风格的图像,或不太常见的概念,如牛头怪、猪头怪等,GPT4往往无法给出准确的提示。我们进行了手动筛选。
此外,由于VC2模型使用的CLIP编码器有77个token的限制,我们严格限制了GPT4生成的描述,如果超过77个token则多次重试,直到满足77个token的限制。
04 图像转动画
如果文本转动画对独立开发者有用,那么图像转动画对专业游戏动画师来说远比文本转动画实用。
因为实际工业化的游戏开发是艺术至上的。拥有独特、时尚的艺术风格对游戏的成功至关重要。因此,许多游戏首先有游戏角色的艺术设计,然后交给动画师制作动画。动画完成后,可能还需要与艺术团队反复审查,以确认一些艺术细节。
因此,如果动画能够直接根据游戏角色原始艺术设计稿由模型生成,这将确保艺术风格,同时节省动画制作成本。许多AI视频模型的可控性是广泛落地应用的关键。例如,艺术风格需要高度可控。
而文本的描述能力在许多实际应用场景中显得极其薄弱,无法使用。
图像转动画比文本转动画更难。它对模型有更高的要求。模型需要既掌握动作又理解图像,能够完美地重现图片,并且还要理解输入图像的结构,例如哪部分是腿,哪部分是手。这对于使图像正确移动是必要的。
我的方法是将在训练样本中需要生成动画的角色设计稿的静态图像加入,在训练动画生成的同时训练静态图像的生成。
这个过程相当于向模型教授这个角色的图像设计。
通过混合静态图像和游戏动作进行i2v训练,我们取得了不错的效果。
然而,这种方法的缺点是,当需要为游戏角色进行i2v动画生成时,需要先对该图像进行训练才能正确生成动画。持续时间和成本相对较高。
05 开源
t2v、i2v模型和训练数据都是开源的。你可以访问 github repo 获取代码。
我找不到vc2 t2v的训练代码,所以我自己编写了训练代码,也已在 github repo 开源。
此外,从mixamo 3d模型渲染2D动画使用了blender渲染,代码也完全开源。
我还创建了一个 replicate公共模型,你可以免费使用。
06 其他方法
另一种i2v(甚至t2v)的方法,我认为潜力巨大,是在comfyui社区非常常见的方法,即添加openpose数据作为额外的引导条件,类似于animate anyone。
我尝试了这种方法,发现它非常灵活,不需要额外训练即可生成新的动作。
但我遇到的问题是,有时对于过于复杂的动作,例如涉及转身的动作,模型仍然会出错。
因为openpose渲染的骨架图不包含方向信息,有时输入时会缺少这些信息。
还尝试了后续添加3D条件信息的工作,Champ: Controllable and Consistent Human Image Animation with 3D Parametric Guidance。但是输入图像的身体类型映射经常有问题。
另一个问题是openpose或运动重建的准确性往往不是特别理想。原因可能是游戏动画图像通常更抽象,可能与姿态识别模型训练的数据有很大差异。
游戏中还有许多特殊的抽象概念,例如Q版人物的头部特别大,或者像素艺术的身体部位只有几个像素组成,需要想象。而且在复杂动作中身体部位有很多遮挡。这给姿态提取和运动跟踪带来了巨大的挑战。
当输入引导条件的准确性不足时,animate anyone之类的作品效果会变差。
我认为一个想法是直接使用原始3D模型生成姿态条件,这样可以确保不会损失准确性。
从长远来看,我仍然非常看好这个方向,因为更好的灵活性和控制能力应该比目前按动作训练模型的方法更有前景。
07 商业机会
我们还探讨了AI 2D游戏动画是否存在市场机会。我们通过冷DM联系了近百名2D动画从业者进行访谈。受访者包括专门从事动画的印度外包公司、大型工厂,甚至好莱坞制作动画电影的资深艺术家。
首先,结论是,我认为2D游戏动画,或者更准确地说是2D逐帧动画,是一个存在巨大机会的真实问题,但当前的AI技术尚不成熟,不足以取代现有解决方案。
当然,我不是游戏美术从业者,我的解读仅基于我所能接触到的动画从业者的访谈,不知道大家是否同意,欢迎留言讨论。
1. 2D动画行业的痛点及现有解决方案
逐帧绘制2D动画非常困难。我们采访了大量从业者,很少有人具备逐帧手绘2D动画的能力。因此,我认为2D游戏动画仍然存在巨大的市场机会。
我们获得的一些数据:在游戏行业2D游戏项目中,程序员、美术和动画师的比例约为1:1:1。手绘一分钟动画需要两周时间。可以看出,2D动画的制作仍然是非常大的成本投入。
尽管2D动画制作确实是一个难题,但游戏行业实际上已经有了解决方案。对于许多难以解决的实际问题,人们往往会找到替代解决方案来规避,而不是正面面对问题。
我们了解到,目前行业内有以下几种解决方案:
A. 不做2D游戏,只做3D游戏,或者用3D做2D
因为高质量2D游戏的开发成本实际上越来越高。工业化和标准化水平相对较低。许多工业化工作室制作的2D游戏越来越少。
或者许多2D视角游戏,例如横版卷轴游戏,是使用3D引擎制作的。
根据我能找到的数据,47%的开发者使用3D引擎,而36%使用2D引擎。
与用3D引擎制作的2D动画相比,我个人仍然觉得许多经典游戏的手绘风格2D动画更具吸引力,艺术感更强,工业感更弱。
B. 使用spine等2D骨骼动画引擎
与逐帧手绘2D动画相比,我们采访的大多数动画师都使用spine骨骼动画来制作2D动画。
Spine确实大大降低了2D游戏动画制作的难度和成本。许多小型游戏和休闲游戏开发公司都使用Spine来开发动画。
我个人认为Spine动画总有一种强烈的木偶味,而且实现各种转体等复杂动作仍然相当具有挑战性。
Spine流行的另一个原因是,逐帧动画需要存储每一帧的图像,因此会消耗大量内存资源。如今,手机游戏对加载速度的要求越来越高,而Spine引擎对资源使用的超级优化具有很大优势。
我个人认为,这个因素实际上可以通过许多技术手段进行优化。例如,H264等视频编码对于视频压缩和解码已经非常成熟。如果纯粹是资源使用问题,不应该成为逐帧动画普及的障碍。
C. 像素风格和独立游戏
像素风格游戏由于其特殊的风格要求,很难通过spine实现。大多数仍然基于逐帧动画。
此外,许多追求独特艺术风格以在工业化游戏市场中分一杯羹的独立开发者也乐于使用逐帧动画来实现更酷炫的艺术效果。
2. AI动画与工业应用的差距
当前的AI动画模型能力在以下方面距离工业应用仍有差距:
A. 符合动画12原则的高冲击力、高流畅度动画
当前的AI动画仍处于“正确”阶段,尚未达到“好”的阶段。而在当今竞争激烈的游戏市场中,特别是在自媒体时代,游戏传播的规则使得对游戏美术和动画风格的要求更高。
“好”还不够。它需要高度风格化、高度独特,并且能够病毒式传播。
B. 游戏美术和动画的高度艺术抽象概念对模型来说可能是一个挑战
由于上述原因,许多游戏需要寻求一个非常独特、抽象的概念才能走红。而这些艺术抽象概念在基础模型的训练数据中可能不占多数。
例如,下面《空洞骑士》的角色设计,这个角色没有鼻子和嘴巴,手臂也似乎若有若无,头上还有两个不知是角还是什么的东西。模型需要决定这个角色在执行每个动作时应该处于什么姿势,身体的每个部分应该如何移动,这相当具有挑战性。
C. 酷炫和富有表现力的光影效果
今天的游戏为了社交媒体传播,在光影效果上已经达到了极致。
我做了一些实验,AI模型要完全掌握这些夸张的光影效果,并正确地将其与游戏动作匹配,同时保持精确的节奏,并非易事。
D. 模型对细节描绘的控制
我们接触到的许多工业工作室艺术家可能对动画的每一个细节都有非常高的要求,例如抬手时袖子应该如何移动。
而如今,控制仍然是AI模型的短板。尽管各种controlnet和LORA模型的发展为我们提供了许多工具,但要实现精确的指哪打哪的控制仍然很困难。
这可能难以满足许多完美主义游戏美术总监的要求。
尽管存在各种问题,但我长期以来仍然看好AI游戏动画。我相信,这些挑战中的许多本质上是数据问题,而基础模型正在迅速成熟。
从长远来看,只要有足够的投资和足够的训练数据输入,上述所有挑战都应该可以解决。
我们将继续关注最新最酷的AI技术,并持续分享开源工作。欢迎关注我们,敬请期待!