生成自然丰富,反应灵敏的动作的“Motion Matching”是什么?
 
 
    Ubisoft在2016年内预定发售的【荣誉战魂】,是基于MOBA类集团战斗,并加入了高度紧张的剑斗动作的多人游戏。在绘制非常细致的战场里,主人公以骑士,武士还有维京勇士形象展现着厚重感和帅气的动作。是整体散发着次世代感的作品。
 
    特别引人注目的,是角色动画的自然响应性很高。无论切换到怎样的瞬间,自然的运动也感觉不像是游戏了,尽管如此,还是可以灵敏的反映玩家的操作。
 
    GDC 2016上,在Ubisoft的演讲【Motion Matching and Road To Next-Gen Animation】中对本作实现的高品质动画的独特算法和工作流做了讲解。即便稍微听一下说明,深入到那些游戏动画技术以外领域的,还真的是非常让人震惊的内容。
 
【For Honor Gameplay - Multiplayer Walkthrough】
 
 

把角色动作的自然迁移“有力量的”作出的最新技术

 
Ubisoft的Simon Clavet
 
本作动画系统的目标
 
    进行演讲的Simon Clavet,已经在Ubisoft担任了10年的动画程序员。
 
    在【荣耀战魂】中,除了要真实的描绘战士们激烈的剑斗之外,还要有在广阔战场的战略移动,移动消耗的时间也很多。而本作动画系统所提出的目标就是【正确的游戏性】和【有说服力的动画】。
 
    先从结果来看的话,本作实现的移动动作,在各种情况,各种瞬间,都是以往游戏没有的自然运动。方向转换和加速减速动作的关联,也看不出是多个动画组合而成的那样自然。而且对玩家操作可以快速反应,提供了毫无压力的正确的游戏性。
 
本作的移动动画。姿势变更,方向转化以及气势的变化等都可以完美的对应,完全感觉不到有衔接部分,自然的播放动作。

以前动画系统的问题

 
要实现自然的运动,就需要用户把动画片段(Animation Clip)之间的衔接可以对应玩家操作灵活的变化,这个具体要怎么实现?
 
以前的动画移动系统因为会引起组合数量的爆炸,只能粗略的对应。
 
    这样,在有说服力的动作,和动作游戏才有的响应性上,【荣耀战魂】要求实现的等级很高,用以前的方法几乎是不可能的。
 
    用手工来设定动画片段的转移是有限的,走,跑,停止,转向等各个动作的链接部分,只用少数几个模板怎么也无法实现的。而角色现在的情况是,要正确的再现玩家输入的变化,动画转移的入口和出口变的非常的大,用手工来连接是很勉强的。
 
    因此,以前的游戏,采取的是动画的衔接部分通过程序在方向和力上做修正,动态的来近似的方法。用这种方法,会出现脚无法很好的贴合地面,以及滑步移动的绘制情况。这也是以往角色动画看起来像游戏风格的原因。
 
    【荣耀战魂】中对于这个问题,采用了非常大胆的方法来解决(只有次世代机才能实现)。也就是本次演讲公开的“Motion Matching”的方法。
 
走->停止的运动控制,因为要在忠实的反应玩家操作的同时,实现自然的运动,会有很多的问题。
 

在每帧中对庞大的动作捕捉数据做检索

 
非常简单的算法
 
为了拍摄一种运动,要持续5分钟相似的动作。
 
每30分之1秒1次,检索下一个动画片段
 
对于速度和姿势,提取几个代表点进行匹配
 
     Clavet所说的【愚蠢又有力的的动画系统】的方法,原理上简单得惊人。在每帧里,检索全部的动作捕捉数据,发现最适合的一帧动画时,就进行动画的转移。
 
    例如【疲劳状态的走动】动作。游戏中使用的是,把演员动作的微妙变化全部保存在5分钟的运动数据里。同样的动作,手足位置,腰的高低,头的方向等有微妙的不同,是一连串的运动数据。
 
    然后并不把它分割成多个动画Clip,而是一个整体就直接在游戏中使用就是重点了。在这5分钟的动画数据中,按帧的单位检索,向最适合需要的动作范围进行转移就可以了。不再需要人手工的制作转移图了!
 
    候补的动画帧,以下面的条件为基准进行选择。
 
1.玩家输入预测的移动曲线的适合度
2.对角色现在的姿势(脚,头,手的位置的)的适合度
※为了实现高速化,每帧里都把上面的数据通过预先计算输入到参数里。
 
    例如【边跑边转90度】的动作,在动作捕捉数据中也有模板的。在这些候补中,选择最接近现在姿势的帧。因为这样帧单位进行反复操作,可以达到玩家输入那样的灵敏反映,完全看不到有动画衔接部分。
 
只要不断的拍摄各种姿势的运动捕捉数据,不需要分割数据就在游戏里使用
 
为玩家输入为基准进行方向预测,选择接近的移动方向,维持将来的位置和姿势的动画

成为角色动画技术的革命者?

 
用轨迹预测提升动画匹配的精度
 
斜面也对应了
 
这个方法的优点是,可以实现支持灵敏操作的高品质动画,以及减轻手动工作。
 
    这个方法和以前的动画系统完全不同,以前那种从一个动画Clip转移到另外一个动画Clip,和现在这种运动匹配方法在结果上就不用说了。即便制作捕捉数据的人,也无法事先预测帧与帧之间的变化。
 
    而且,它与最近的热门话题-深度学习也有相似之处。这个是通过原始的庞大运动数据,创作出新的连续动作的系统。如果可以【学习】新的运动,这样对应动画的精度也会提升。
 
    但这个方法也有弱点。虽然这个系统也能实现类似【蹲下的状态从朝向右向左做旋转并后退移动】这样的复杂组合,因为不是手工制作动画转移图,要确认可以对应游戏玩法需要的全部运动是很难的。特定的操作组合,感觉还是会有动画模板的盲点产生(捕捉数据的不足)。这种情况因为转移到了不匹配的帧上,运动的表现程度也就下降了。
 
    这样的话,【For Honor】的开发团队每次都要进行游戏内运动的不自然情况的检查,每周都会实施“填坑”的动作捕捉议程。一边减少盲点,一边继续提高游戏的完成度。
 
    当然因为实现这种方法的负荷很高。使用大量运动数据的话,数据容量会变得非常大,为了最佳动画帧的检索需要有很强力的CPU,完全是面向次世代机的技术。但这确实是真正革命性的游戏动画系统。
 
    把动作的流畅和真实性作为生命的游戏【荣耀战魂】,使用这个技术的游戏究竟是怎么样的呢,作为动作游戏玩家真的是非常期待。
 
 
 

GDC2016【For Honor-荣耀战魂】的次世代动画技术的更多相关文章

  1. 深入Guerrilla Games解密次世代开山大作《杀戮地带暗影坠落》(The technology of Killzone Shadow Fall)

    文章摘要:这几天终于有时间,把全文翻译完了,自己感觉不是太满意,不过大家能看懂就好,就当一个学习的机会.整篇文章通过SONY第一方游戏工作室Guerrilla Games主创的语录,为我们展现了次世代 ...

  2. 基于Unity 5的次世代卡通渲染技术 -- Unite 2017 米哈游总监贺甲分享实录

    在5月12日Unite2017开发者大会上,米哈游技术总监兼美术指导贺甲进行了主题为次世代卡通渲染的演讲.一下为详细分享内容: 大家好,首先自我介绍一下,我叫贺甲,在米哈游担任技术总监和美术指导工作, ...

  3. 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)

    目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...

  4. cg tut

    Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...

  5. 中国VR公司的详尽名单

    中国VR公司的详尽名单   <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...

  6. [转]Cryengine渲染引擎剖析

    转篇Napoleon314 大牛的分析,排版好乱,见谅,耐心读,这是个好东西,注意看他自己的实现,是个技术狂人啊,Ogre焕发次时代的光芒啊~~~努力 ------------------------ ...

  7. unity assetStore 常用插件

    常用插件 20180723============= 教程类 =============<Mecanim Example Scenes > 官方示例场景<Surivial Shoot ...

  8. 集显也能硬件编码:Intel SDK && 各种音视频编解码学习详解

    http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...

  9. Unity网游开发生存指南—蒸汽之城

    Posted by amy on 2013.03.07 文 / 王楠(梦加网络 游戏制作人) 前段时间关于Unity是否适合国内手游/网游创业团队的讨论非常火爆,本文从<蒸汽之城>的开发历 ...

随机推荐

  1. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

    方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...

  2. Python基础5- 运算符

    Python的运算符和其他语言的类似,主要有:算术运算符.比较运算符.逻辑运算符.赋值运算符.成员运算符.位运算符 ----------------------------------------算术 ...

  3. three.js 场景入门

    <!DOCTYPE html> <html> <head> <title>Example 01.02 - First Scene</title&g ...

  4. Docker安装RStudio

    在我前一篇文章中已讲述了如何在Windows中安装和配置Docker,本文则讲述如何在docker中安装rstudio! 1.Docker的使用 1.1查看指定machine的IP 打开Docker ...

  5. Visual Studio: whether auto-building when press the debug button

    Tools -> Options -> Projects and Solutions->Build and Run -> choose an option for On Run ...

  6. soapui中文操作手册(十)----REST Sample Project

    第一步:打开MockService 1.双击MockService: 2.单击开始mockservice. 你会看到mockservice“端口8080上运行”. 参考: 配置使用MockServic ...

  7. BZOJ1114 : [POI2008]鲁滨逊逃生Rob

    设船最宽行列的交点为船的重心,那么只要预处理出重心在每个位置是否可行,以及在边界上走出边界所需的最小值之后,进行一遍BFS即可. 枚举每个点$(x,y)$,求出它上下最近的障碍物的距离.考虑重心在第$ ...

  8. NodeJS中 package.json 解析

    package.json 中包含各种所需模块以及项目的配置信息(名称.版本.许可证等)meta 信息. 包含可配置项 name 名称 应用描述 description 版本号 version 应用的配 ...

  9. jquery validate学习心得

    据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~ ...

  10. VB远程访问MYSQL代码图解

    首先需要安装MySQL Connector/ODBC 地址:http://dev.mysql.com/downloads/connector/odbc/ 根据自己的系统(运行环境: Win7/XP/W ...