六个月前的一个下午,一个朋友来找我咨询一个AI问题。
他试图使用OpenAI的文本转图像模型生成2D游戏动画的 sprites,但由于角色对齐和一致性问题而未能成功。
我的朋友是游戏行业的老手。他说如果可以利用AI生成2D游戏动画,这可能对游戏行业具有重要价值。
我觉得这很有趣,于是心血来潮开始训练一个2D游戏动画生成模型。经过一段时间的探索,我取得了一些成果。现在我打算开源这个模型、代码、数据以及数据准备代码。
我们还调查了游戏动画生成模型产品的商业化可能性,我稍后会分享。
游戏动画由模型生成:
生成样本
生成样本
生成样本
01 游戏动画的满足感来自哪里?一开始探索动画生成很有趣,但很快模型训练变得超级有挑战性。我很快发现这是一个深不见底的坑。
最初的自然想法是找到许多游戏动画资源,并使用最新的开源视频生成模型进行微调训练。
游戏动画资源并不稀缺。我们很快从互联网上找到了数万款游戏动画,大部分是早期家用机和街机游戏中的动作动画,还有一些设计师在艺术设计平台上公开的作品。我们开始尝试使用几个常见的开源模型进行训练。
当我们开始训练时,我们发现尽管游戏动画也是一系列图像,但在许多方面,它们比一般的视频复杂得多。
首先,日常生活中视频的每一帧相对比较平滑,没有剧烈的变化。
在游戏中,动画中的许多动作幅度特别大,帧与帧之间变化突然。存在各种复杂的转身动作,身体部位相互重叠等。不仅动作在变化,还经常有衣物飘动和光影效果。
为了突出动作的影响和满足感,2D动画经常在帧之间引入剧烈的变化。在许多情况下,动作的帧率会被故意降低。例如,据说皮克斯动画的帧率只有普通电影的一半。
尤其是在早期的街机和其他游戏中,由于资源有限,他们必须将资源优化到极致,尽可能地节省动作帧数。
可以这么说,所有的游戏动画都有严重的掉帧问题!
例如,来自《拳皇》的京 Kumaso 的火球动画只有 4 帧,这很难想象。
在游戏动画领域有著名的12项原则,其中许多通过违反日常规则的艺术夸张实现了更流畅和令人满意的效果。
12 个动画原则
例如,根据“预期原则”和“时机原则”,充能并举起双手准备释放火球的动作需要花费大量时间来描绘,而实际手臂下落释放火球的过程则只简要展示。在一帧中,手臂还处在背后的位置,而在下一帧中,手臂已经向前移动了180度。动作的效果更多地通过动作完成后头发和衣服的摆动来表达。
所以帧与帧之间有大的突然变化。非常不平滑。时间上的变化可以说是高度非线性的。
正是这种帧丢失和丢帧带来了游戏中的满足感。
但这可以认为极大地增加了视频模型训练的难度。首先,数据非常不平滑且不流畅。此外,由于大多数视频骨干模型是使用平滑的日常视频进行训练的,因此训练数据与具有帧丢失和非线性时间变化的游戏动画的预训练数据之间的一致性很低。
另一个困难来自于高度变化的游戏动作,这些动作很难用语言表达。例如,即使是简单的跑步动作,每个游戏都有不同的跑步风格和动作频率。
完全不同的动作风格,但都只能被称为“奔跑”
当使用文本提示模型时,这些动作风格的变化很难用语言描述,只能称之为“跑步”。
视频模型需要学会如何移动图像来表达动作,但是训练样本变化太大会让模型难以理解和总结运动规则。
由于上述原因,直接使用视频模型训练游戏动画模型的实验结果非常差。
02 只需重复同一动作1000次我认为这些挑战并不是无法解决的。实际上,问题仍然在于当前的视频模型训练数据还不够充足。在AI领域,只要你有足够的数据堆叠,就没有解决不了的挑战。
对于我们这些硬件资源有限的人来说,可能要等到更强大的基础模型出现,才能训练这么多不同的数据了。
所以我们想到了另一种方法——使用3D渲染的动画来训练2D动画模型。
当我们寻找更高质量、更高帧率的训练动画时,我们想知道是否可以使用3D游戏动画渲染成高质量的2D动画。因为动作渲染的帧率可以由我们自己控制,这可以解决帧与帧之间连贯性和流畅性不足的问题。
Mixamo 是 Adobe 开源的 3D 动作库。它提供了数百个游戏角色的 3D 模型和超过 200 个游戏动作。所有版权都是开放的。
mixamo
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 个 epochs。
所有的动画提示分为两部分。第一部分是对动作的描述:“游戏角色XXX的……动画”,第二部分是对角色的描述。
角色描述都是通过 GPT4 提示生成的。因为使用 Mixamo 渲染的图像清晰度高,概念相对简单且不抽象,所以 GPT4 的描述相对准确。然而,对于识别真实的游戏素材,尤其是低分辨率的像素风格图像,或者不太常见的概念,如牛头怪、猪头怪等,GPT4 往往无法给出准确的提示。我们进行了人工筛选。
此外,由于VC2模型使用的CLIP编码器有一个77个token的限制,我们严格限制了GPT4生成的描述,如果超过77个token,则会重试多次,直到满足77个token的限制。
4 图像到动画如果文本转动画对独立开发者可能有帮助,那么图像转动画对于专业游戏动画师来说比文本转动画要实用得多。
因为实际的工业化游戏开发是以艺术为主导的。拥有独特、时尚的艺术风格对于游戏的成功至关重要。因此,许多游戏首先进行游戏角色的艺术设计,然后交给动画师进行动画制作。动画完成后,可能还需要与艺术团队反复审核,确认一些艺术细节。
因此,如果动画可以直接由模型基于游戏角色的原美术设计草图生成,这将确保艺术风格的同时节省动画制作成本。许多AI视频模型的可控性是广泛落地应用的关键。例如,艺术风格需要高度可控。
虽然在许多实际应用场景中,文本的描述能力似乎非常弱,无法使用。
图像转动画比文字转动画更难。它对模型的要求更高。模型需要掌握动作并理解图像,能够完美重现图片,并且还要理解输入图像的结构,比如哪部分是腿,哪部分是手。这是为了让图像正确地动起来所必需的。
我的方法是将需要生成动画的角色设计草图的静态图像添加到训练样本中,在训练生成静态图像的同时训练动画生成。
这个过程相当于教模型关于这个角色的图像设计。
通过将静态图像和游戏动作结合用于i2v训练,我们取得了很好的效果:
添加了各种Minecraft Steve图片到训练中,帮助模型掌握Steve的概念
该模型融合了图像和动作,实现了Image2Animation
然而,这种方法的缺点是,当需要为游戏角色生成动画时,必须先对这个图像进行训练,才能正确生成动画。这样会增加时间和成本。
05 开源t2v 和 i2v 模型以及训练数据都是开源的。你可以访问 github 仓库 获取代码。
我没有找到 VC2 t2v 的训练代码,所以我自己写了一个训练代码,并且也在 github 仓库 上开源了。
此外,从 Mixamo 3D 模型渲染 2D 动画使用了 Blender 渲染,代码也是完全开源的。
我也创建了一个replicate公共模型,你可以免费使用。
06 其他方法另一种我认为很有潜力的 i2v(甚至是 t2v)方法是,在 comfyui 社区中非常常见的一种方法,即添加 OpenPose 数据作为额外的引导条件,类似于 Animate Anyone。
我尝试了这种方法,发现它非常灵活,不需要额外训练就能生成新的动作。
但遇到的问题是,有时候对于过于复杂的动作,比如涉及转身的动作,模型仍然会出错。
因为 OpenPose 渲染的骨骼图不包含方向信息,有时在输入时会缺失这部分信息。
也尝试了后续工作,添加了3D条件信息,Champ:可控且一致的人体图像动画,带有3D参数化引导。但是输入图像的身体类型映射经常出现问题。
另一个问题是,OpenPose 或运动重建的准确性往往不是特别理想。原因可能是游戏动画图像通常更抽象,可能与姿态识别模型训练的数据有较大差异。
游戏中也有很多特殊的抽象概念,比如特别大头的Q版角色,或者由少数像素组成的像素艺术身体部位,需要想象力。在复杂的动作中,身体部位会有许多遮挡,这给姿态提取和动作追踪带来了很大的挑战。
当输入引导条件的准确性不够时,像 animate anyone 这样的作品效果会恶化。
我认为一个想法是直接使用原始的3D模型来生成姿态条件,这样可以确保不会丢失精度。
从长远来看,我对这个方向仍然非常乐观,因为更好的灵活性和控制能力应该比目前根据动作训练模型的方法更有前景。
7 业务机会我们也探讨了AI在2D游戏动画市场上的机会。我们通过冷DM联系了近百家2D动画从业者进行访谈。受访者包括印度专门从事动画的外包公司、大型工厂,甚至好莱坞制作动画电影的资深艺术家。
首先,结论是,我认为2D游戏动画,或者说更准确地说是2D逐帧动画,确实存在巨大的机会,但目前的人工智能技术还不成熟,不足以替代现有的解决方案。
当然,我不是游戏艺术从业者,我的理解仅基于我能够接触到的动画从业者的访谈,不知道你是否同意,欢迎留言讨论。
1. 二维动画行业中的痛点及现有解决方案
逐帧绘制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动画更具吸引力,艺术感更强,工业感更弱。
使用 Spine 和其他 2D 骨骼动画引擎
与逐帧手绘的2D动画相比,我们采访的大多数动画师使用Spine骨骼动画来制作2D动画。
Spine 确实大大降低了2D游戏动画制作的难度和成本。许多小型游戏和休闲游戏开发公司都使用 Spine 来制作动画。
Spine 2D 骨骼动画
我个人认为,Spine 动画总是有一种很强的木偶感,实现涉及各种转身的复杂动作仍然相当具有挑战性。
另一个 Spine 流行的原因是帧动画需要为每一帧存储图像,从而消耗大量的内存资源。如今,移动游戏对加载速度的要求越来越高,而 Spine 引擎的超优化资源使用具有很大的优势。
我个人认为,这个因素实际上可以通过许多技术手段来优化。例如,H264和其他视频编码技术在视频压缩和解码方面已经非常成熟。如果只是资源使用问题,那么逐帧动画的普及不应该成为一个问题。
C. 像素风格和独立游戏
像素风格的游戏由于其特殊风格要求,通过Spine实现较为困难,大多数仍然基于逐帧动画。
此外,许多追求独特艺术风格、希望在工业化游戏市场中占有一席的独立开发者也非常乐意使用逐帧动画来实现更多酷炫的艺术效果。
2. AI动画与工业应用之间的差距
当前的AI动画模型在以下几个方面仍然远未达到工业应用的标准:
A. 高冲击力、高流畅度的动画,符合12项动画原则
当前的AI动画仍然处于“正确”的阶段,还没有达到“好”的阶段。而在今天高度竞争的游戏市场中,尤其是在自媒体时代,游戏传播的规则使得对游戏艺术和动画风格的要求更高。
“好”是不够的。它需要高度风格化,高度独特,并且能够走红。
B. 游戏艺术和动画中的高度艺术性的抽象概念可能对模型构成挑战
由于上述原因,许多游戏需要寻找一个非常独特、抽象的概念来走红。而这些艺术性的抽象概念可能并不占基础模型训练数据的大多数。
例如,下面的《空洞骑士》角色设计,这个角色没有鼻子和嘴巴,手臂也似乎时有时无,头上还有两个不知道是角还是别的东西的东西。模型需要决定这个角色在执行每个动作时应该采取什么姿态,身体的每一部分应该如何移动,这相当具有挑战性。
空洞骑士
酷炫且富有表现力的光影效果
今天的游戏中,为了社交媒体的传播,光影效果被推向了极致。
我做了一些实验,发现对于AI模型来说,完全掌握这些夸张的光影效果、正确地将它们与游戏动作匹配并保持准确的节奏并不容易。
D. 对细节描绘的模型控制
我们与许多工业工作室的艺术家交流时发现,他们可能对动画的每一个细节都有很高的要求,比如抬手时袖子应该如何移动。
而且今天,控制仍然是AI模型的一个不足之处。尽管各种ControlNet和LORA模型的发展为我们提供了许多工具,但要实现精确控制,指示击打的位置仍然常常困难。
这可能很难满足许多完美主义游戏艺术总监的要求。
尽管存在各种问题,我对AI游戏动画的长远发展仍然保持乐观。我相信,许多这些挑战本质上是数据问题,而基础模型正在迅速变得更加成熟。
从长远来看,只要有足够的投资和足够的数据输入进行训练,上述所有挑战都应该能够解决。
我们将继续关注最新和最酷的人工智能技术,并继续分享开源作品。欢迎关注我们,敬请期待!