在 2024 年 9 月,Unity 的 Demo 团队展示了一个全新的实时电影级 demo 《Time Ghost》。这个 demo 是基于 Unity 6 引擎制作的,采用了 Unity 6 中的一些新功能和技术能力,让我们能够实现前所未有的视觉品质和复杂程度。
在制作《Time Ghost》的过程中,我们意识到需要解决的一个问题是如何创建具有可信度的角色。这些角色需要穿着真实感很强的服装进行激烈的动画动作,因此布料材质的衣物要能够根据角色的动作正确地变形和产生褶皱。
这并不是一个容易解决的问题,因为布料在 3D 中通常很难处理,常常成为破坏沉浸感和现实感的主要因素。为了避免传统游戏中布料制作方法的局限性,我们需要采取一种不同的方案。
与此同时,我们知道 Unity 的工程团队一直在开发一个实时推理引擎,可以在 Unity 运行时跨平台运行,能够充分发挥机器学习模型的潜力。
在这篇文章中,我们将分享 demo 的制作过程,解释如何将传统动画工作流程与前沿的机器学习技术结合起来,从而提升实时角色动画的品质和真实感,特别是在布料变形方面。
标准角色设置
由于我们的角色建模和骨骼绑定遵循了行业标准,因此可以将常规的动作捕捉数据应用到完成了骨骼绑定和蒙皮的角色模型上,并进行关键帧动画。但为了让主角的服装动画看起来更加真实,我们找到了一种更高级的解决方案,不是单纯使用蒙皮网格和额外的 blendshapes。
基于机器学习的布料动力学
Sentis 是 Unity 对神经网络交换(Neural Network Exchange,NNX)框架的实现,是我们角色管线的核心。通过使用 Sentis,我们能够利用自己的高质量离线布料模拟数据集训练机器学习模型,并在运行时部署该模型。
数据集的构建
首先,我们为每个角色模型的动作表现创建了 70 个姿势,可在 30 帧中从中性姿势平滑过渡到最终的极限姿势。
在 Marvelous Designer 中,我们模拟了基于图案的布料,并能够捕捉到这70个动作中的布料变形行为。
数据提取
接下来的步骤是提取偏差值(delta 值),即皮肤网格和模拟网格之间的差异。这个计算可以在 Maya 或任何其他支持模型顶点数据的数字内容创作(DCC)软件中完成。这个过程涉及到反转蒙皮变形,同时要保持模拟变形的数据。
AI 模型的设计与训练
训练运行时模型可以使用任何机器学习框架,只要它能够转换为 ONNX 格式(开放神经网络交换格式)。最常用的框架有 TensorFlow 和 PyTorch。在《Time Ghost》项目中,我们使用了 TensorFlow 基于提取数据设计并训练了一个自定义模型。
提取的数据被输入到前馈神经网络(feedforward neural network,FNN)中,以角色的关节方向作为输入,然后基于偏差值(delta值)计算并输出相应的顶点位置。
高效的数据管理和实时变形
在 Unity 中,变形数据被应用到蒙皮角色网格上,并通过分块处理来维持一个小巧的运行时模型。
总的来说,我们可以在几小时内将现有的布料模拟(在我们的案例中是 Marvelous Designer 中的模拟)转化为 Unity 中的实时变形。对于《Time Ghost》,我们能够将 2.5GB 的离线变形数据压缩成一个 47MB 的模型。此外,由于 Sentis 在 GPU 上本地运行该模型,而且 GPU 上已存在蒙皮数据,因此我们可以在 GPU 上以 0.8 毫秒的速度变形 12 万个顶点。
接下来的计划
通过集成 Sentis,我们不仅提升了视觉真实感,达到了高度逼真和动态的变形效果,还提供了一种高效且能适应高质量游戏开发需求的工作流程。我们相信,类似的基于机器学习的工作流程将能够解决一系列不同的制作问题,尤其是高质量输出所需的数据量和实时处理预算之间的艰难平衡已经达到极限的情况。我们也在继续实验类似的工作流程,并计划将其应用于未来其他领域。
此外,我们在使用 Sentis 时获得的性能结果也蕴藏巨大潜力,因此我们已经开始研究是否可以将相同的流程应用于移动端开发。Unity 的工程师已经完成了一些初步验证,确认 Sentis 可以在移动设备上运行我们的角色模型,并实现逼真的布料变形效果。虽然移动端游戏开发通常不会追求高保真度,但能够将基于机器学习的方法应用到移动目标平台,表示风格化动画中的变形也能变得比以往更精细和美丽。
我们已经在 Unity Asset Store 中发布了《Time Ghost》demo 的两个 Unity 项目,一个是环境场景,另一个是角色。如果你想亲自体验上述流程的效果,可以从 Unity Asset Store 下载《Time Ghost:Character》项目。
https://assetstore.unity.com/packages/essentials/tutorial-projects/time-ghost-character-298910
它包括一个 Unity 6 的示例场景,内有角色和基于顶点的变形模型。我们还提供了文档,介绍了模型和训练过程。你可以尝试使用自己的角色模拟数据进行训练,看看这种方法是否对你的项目有所帮助。
角色示例中还包含了我们开发的毛发系统(Hair System),这个系统是Unity Originals在过去几个demo(《异教徒》、《Enemies》和《Time Ghost》)中逐步开发完成的。
Sentis 现已随 Unity 6 发布。Sentis 可以导入、优化和运行 AI 模型,具有真实世界交互、更智能的游戏玩法构建与出色游戏特效三大核心功能。欢迎下载体验 Unity 6,体验更快的渲染速度、更先进的光照选项、无缝的多人游戏工作流、增强的 AI 功能,以及对移动端 Web 运行时的改进支持。