关卡 动画 蓝图 运行_Gears of War 4中的高性能动画技术

编注:本文整理了制作组在GDC 2017与SIGGRAPH 2017的分享内容,具体详见参考来源。本文不涉及具体技术实现方法,仅做思路参考,转载请注明出处。

技术内容纲要:

  1. MOTION PATH WARPING 运动轨迹翘曲
  2. MOTION TRANSITIONS 运动过渡
  3. PHASE MATCHING 相位匹配

一、MOTION PATH WARPING

1.技术目的:

在Gears of War 4中,角色需要翻越各种复杂的环境。为了让这种交互看起来更加真实,需要根据环境物理参数来调整动画的播放。如在Fig.1中,角色就需要同时处理障碍物的高度、宽度甚至斜度信息。

5ad9d9b295770d88b08d589be4d166da.png
Fig.1 针对不同高度、宽度与斜度的障碍物所做的动画翘曲

2. 相关工作:

研究相关技术基于Gleicher(2001)Lockwood等人(2011)关于Motion Warping的工作成果。此前解决这一问题的主要方法是特化,即动画师不断产出所需的动画资源。这种方案在离线状态下很容易完成。但在游戏中,需要程序员根据具体内容定制化构建代码。比如滑行和跳跃都可以通过调整Trajectory的不同形式来实现。这种思路被称为Ad Hoc,即拉丁语中的“for this”,指代专门为某一问题或者任务而设计的解决方法,具有非泛化的特性。

7a4ac775fc343c2a6c2e60331e97d9c4.png
Fig.2 使用Blendspace来特化解决环境交互问题时可能产生的资源列表

为了让解决方案更加系统化,开发者们引入了Warp Point的概念。

3. 技术细节:

Warp Point分为两部分:制作时(Authoring)与运行时(Runtime)Warp Point。

(1)制作时Warp Point:

动画师在Maya中创建与动画相关的Warp Point,每个Warp Point具有三个参量:Face、Translation和Rotation。三个参量分别对应了动画中三个过程:从角色当前朝向转向Warp Point、从角色当前位置平移到Warp Point、从角色当前朝向转向Warp Point朝向。

c9bf3b530a2e644ed547ad0cf2e8353b.png
Fig.3 动画师在Maya中创建Warp Point

5029bbefeacc21e01f4381fbfe2e2642.gif
Fig.4 从角色当前朝向转向Warp Point

e11a38ac834ff707a7c083f1f31a5482.gif
Fig.5 从角色当前位置平移到Warp Point

d2b2b1993f8b53b12c3dd9ac5794942b.gif
Fig.6 从角色当前朝向转向Warp Point朝向

58cff9847ec60c75fbba52124b941f81.png
Fig.7 Maya中的Warp Point编辑器*

(2)运行时Warp Point

运行时,游戏会在世界中分析并安置与环境相关的Warp Point(如Fig.8中黄色球体所示)。分析途径包括Physics Queries和关卡设计师在世界中摆放Marker,其实际上为对场景的描述。当系统开始播放翻越等可以被Warp的动画时,角色在世界中的运动轨迹会被修正,以令来自动画的Warp Point*和环境中生成的Warp Point对齐。两类Warp Point的对齐实质上是源动画到运行中动画的映射。

6e9c77b1645dabc879c0abeb256116d7.gif
Fig.8 环境分析与Warp Point生成(紫色区域为示意图,非游戏内真实内容)

需要注意的是,两类Warp Point在数量上并非一一对应,制作中的Warp Point是依据动画需求创建的,这样的设置能够让整个系统更加灵活。所以如果动画师仅在靠近角色的障碍物边缘设置了Warp Point,而未在远端设置,就有可能出现Fig.9所示情境。此时仅需要如Fig.3所示添加远端Warp Point,此时无需设置Facing数值。

63745b28fdd35bc3f6af1e0a6e1c557d.gif
Fig.9 角色翻越动画因障碍物阻隔而被打断

最终效果如Fig.10所示。图中红线代表动画的原始轨迹,蓝线代表根据真实物理环境翘曲之后的动画运动轨迹。可以看到角色在障碍物上方产生了平移,但是在游戏环境中,这种不自然的短瞬部分几乎是不可察觉的。

3d8c268a0aef6dedee6548a132c05a22.gif
Fig.10 Motion Path Warping最终效果(单个动画资产)

实际上在翻越障碍物时,角色的动画可能不止一个。尤其对于NPC而言,多样化的表现能够更加地丰富游戏画面。程序员会在蓝图中给开放逻辑接口,以便让动画师机动调整。

283b00658a29015cab694a58e5e4ff79.png
Fig.11 角色Juvie的Determine Best Matching Animation节点设置局部

468a5204d0f91bb1c6b62a97eae5654e.png
Fig.12 角色Juvie的Determine Best Matching Animation节点设置全貌

9dd9f2759bbda3817897ca149a7e8899.gif
Fig.13 游戏中各种翻越动画

4. 性能数据

如Fig.2所示,UE引擎中早先关于翻越的策略是通过Blendspace来完成的。但这种方法不仅大大增加了项目资源量,同时运行中需要评估的采样点也随之增加。

Blend space 1D要先评估2个Animation sequence(在Xbox One上通常要耗费20 µs),再融合出结果(这又需要额外的10 µs),其开销是评估单个Animation sequence的150%。二维的Blend space评估三个Animation sequence并做两次混合的开销则是评估单个Animation sequence的300%。

除了翻越动画,Gears of War 4中使用Motion Path Warping的场景还有很多:

eb4eeb630bc6bf623c3424e1739b9e82.gif
Fig.14 Motion Path Warping应用:割锯不同宽度的锁链

二、MOTION TRANSITIONS

1.技术目的:

在许多电子游戏中,Blended Motion Transitions也是不可忽略的一大开销。实际上,相对而言,Blend的开销并不大。但如Fig.15所示,系统必须在过渡过程中持续评估源动画与目标动画状态,这一行为无疑加倍了负担。有时还会出现Transition of Transition之类的嵌套结果,这无疑会使开销数据远超预算。

8fb8d3d39731ee5808aef74c24481f55.png
Fig.15 Blend Motion Transition

2.技术概述

Gears of War 4完全弃用了这种混合方式,反之选择将Motion Transitions作为Animation Post-process来处理。因为无需再在Transition时评估源动画,弃用Blended Transitions让性能得以飞跃提升。只需立即剪切到目标动画,剩下的不连贯的问题让Post-process来优化就可以了。

b34635263819afb22fcf9137fdc10f67.png
Fig.16 Motion Transitions as Animation Post-process

没有任何Post-process的情况如Fig.17所示:

fdc92df280f41945824c9b38cf0c0648.png

876f8fb6c8e0be2611ad884d73b68823.gif
Fig.17 从源动画直接剪切到目标动画

通过给Fig.17的输出增加Filter,可以得到Fig.18这种非常接近预期的效果。但这种方法除了会产生残影,还不便于调整动作细节。同时,因为这种Filter也应用到了非Transition的输出上,所以可能会产生有别于动画意图的内容。在诸如对Muzzle Position有精确要求的情况下,这种方式就更加不可取了。

7e710cb77f835160dce48f420ed04d8a.png

48a900aa531ea20ae36339964e4b8d8f.gif
Fig.18 给原瞬切动画的输出添加Filter

回到最开始说使用Post-process的策略。将Transitions作为Post-process来处理的一个最直接的方法是保存源动画的最后一个Pose,在Transition期间内,在该Pose和(移动中的)目标Pose之间进行平滑差值。但问题即在于,尽管Pose具有了连续性,速度却肉眼可见地不连续了(如Fig.19所示)。

540538e0d42525cdab09b57eb341e70c.png

3a3c1f1c98f01f5a75fd00dd482a3068.gif
Fig.19 Blend from Last Pose

如果从源动画中再保存一个额外的Pose,那么就能解决速度匹配问题。开发者将这种方法命名为Initialization,意为保留原始Pose和速度等数据。该方法求取源动画与目标动画的数据差值、使用有限差分法求取源动画的初始速度,并在曲线拟合过程中使用了一项来自生物医学文献的五次多项式,以模拟真实人类的手臂运动。但对于快速运动的源动画而言,这种策略将导致Overshoot(过冲)。如Fig.20所示,当武器挥动过快时,在恢复目标位置之前,武器会向右下方摆动过远。

6253786e537ffe22e28f99f4011c6d3e.png

b0482f2240dc3563108fbe963d9ac50e.gif
Fig.20 Match Velocity

研究所述方法(Fig.21所示)通过控制曲线的初始加速度以实现无过冲过渡。

826e529d7a331e3edd14089a8f259a2b.png

b68c2c7914b5fa7dd245443e9a8926ee.gif
Fig.21 Match Velocity with Limited Overshoot

Fig.22为这一曲线的应用详解。值得注意的是,如果源动画是朝着目标动画的反方向运动的,初始速度会被置零,以防产生负过冲(undershoot)。随后考虑加速度项,这也是最后需要模拟拉力置零的部分。与速度同理,如果源动画加速度与目标动画加速度相反,初始加速度值也会被置零,否则会产生被生拽硬拉到目标动画的样子——除非真的要做出那种对抗快速移动物体的效果。

b8c429a218cded619c1d8c8ead8535fd.png
Fig.22 Post-process曲线详解

945a6bfac4cf432861f1e59b36419836.png
Fig.23 运动过渡技术的对比图。角色将其武器挥舞过头顶,并过渡到武器指向右下方的最终Pose。(a)是没有Post-process的情况,(b)中匹配了Pose但没有匹配速度,(c)匹配了速度,但发生了过冲,导致后期不得不重新晃回目标Pose,(d)可以在不产生过冲的情况下匹配速度

3.PHASE MATCHING

当过渡回循环运动动画时,如果目标动画的Foot Phase与源动画不匹配,那么生成的Transition会表现出不自然的步法。在Gears of War 4中,开发者为双足角色开发了一个简单高效的启发式流程,以自动匹配运动中的Foot phase。

首先设计一个简单的表达式来计算角色左脚相对于右脚的位置在速度方向上的Phase Quotient(标量)。如果角色静止,那么取前向方向。当角色在运动周期上移动时,该量会大致呈现正弦振荡。为了区分循环中的incoming and the outgoing phases,在Incoming phase中对Phase quotient进行了抵消和偏移。如此一来,Phase Quotient会在整个运动周期中连续增加,并随着周期一同被重置。

在游戏的启动过程中,为主要运动循环的每个动画帧计算Phase Quotient,并将其存储在表格中。在过滤表格数据以确保Phase Quotient单增之后,将其invert并用分段线性曲线对其进行近似。如此,便获得了一个从Phase Quotient重新回到Locomotion Cycle Frame Number的简单映射。

在运行时,从非运动状态回到运动状态时,会为角色当前的Pose简单计算下Phase Quotient,随后使用此前计算得的分段线性函数来将Phase Quotient映射回Locomotion Cycle Frame Number,并接着从该帧开始进入运动状态。

4.参考文献


[1]Bollo D. High performance animation in Gears of War 4[C]// Acm Siggraph. 2017.

[2]GDC 2017 演讲视频

[3]Siggraph 2017 演讲视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值