大家好,我是Epic Games引擎动画技术产品经理Jeremiah Grant。这篇博文将讲述在虚幻引擎5抢先体验版项目“古代山谷”中,我们为结尾出现的巨型机器人“The Ancient One”制作动画和绑定时的心路历程,以及实现过程和使用的工具。“The Ancient One”通过充分利用虚幻引擎5抢先体验版中的Nanite和动画功能,拓展了动画和绑定系统的极限,这一成果离不开与Aaron Sims Creative Company的紧密合作。
在构思The Ancient One的时候,我们就确定了要使用Nanite来加深机器人的几何体细节。这就引出了一些关于设计和工作流程的注意事项。我们的设计不依赖于骨架网格体和传统的蒙皮,而是通过蓝图在骨架上附着高分辨率的Nanite网格体,由这些网格体牢固地相互铰接,组成机器人。这意味着每个铰接元素都必须是一个独特的网格体,为了避免混乱,需要明确定义组织结构。
我们希望由程序驱动The Ancient One的众多内部机制和动作,从而减少动画师的工作量,并允许我们通过剧情和操作间的过渡动画检验程序性动画工作流程。我们并没有通过扩展MetaHuman绑定来为角色注入自动化驱动元素,而是打破了所有程序性驱动机制,全部集中到一个独立的控制绑定:AncientOne_Mechanics_CtrlRig。在骨架网格体资产细节(AncientOne_Post_AnimBP)中,已将“Post Process Anim BP”指定为后期处理动画蓝图,而这个控制绑定会被添加到该蓝图中。一切内容(包括关卡序列或状态机)处理完毕之后,后期处理动画蓝图将开始求值。这意味着,无论是在Sequencer中为该绑定制作动画,还是播放一段开火动画,所有程序性动画都将上演开火。
如果要在图表中根据传入的动作来调整姿势(即根据手臂动画自动调整活塞姿势),这个活塞函数是一个很好的示例。查看另一个函数core_gears,可以了解控制绑定图表的另一个用例。在这里,我们设置了程序性动作,为核心传动装置和圆盘创造了类似于时钟摆动的效果。Accumulated Time节点创建了一个时间值,我们可以使用该值或将其输入其他节点,从而驱动旋转动作,或通过正弦运算产生摆动。为了提供对该行为的高级别控制,我们公开了gear_weight变量,并将其传入Accumulated Time节点的Speed值中,这将允许我们通过蓝图禁用或停止该行为。在这个特定示例中,一旦The Ancient One被击败,这个变量就会停止齿轮的动作。
通过使用core_gears函数,我们能够以美术导向的方式控制程序性的齿轮动作。
在Sequencer中制作动画
在开发“古代山谷”时,我们的目标始终是让The Ancient One尽可能地展现UE5 EA版的动画性能。虚幻引擎的非线性动画工具Sequencer最近得到了大量改进,而这个项目赋予了我们探索极限的机会。