生化危机7使用的过程化动画技术

发表于2017-01-05
评论3 1.7w浏览

   

         本演讲所内容的是2017年1月26日发售的【生化危机7】中所使用的过程化动画技术。玩家角色和敌人角色的运动会对应游戏环境状况来动态的变化,来获得更有临场感的动画效果。

   

         演讲者  橋本直樹博士,卡普空 CS第一开发总部 第一开发部 第一游戏开发室

   

         讲座分为三部分,生化危机7的游戏概念,游戏中动画的基本功能和对应的解决方案。


        首先是【生化危机7】的概念,本作各以前的【生化危机】系列有所转变,采用了第一人称视点。视觉上使用照片真实的表现,以对应VR的强浸入感的渲染为目标。另外,玩法也回到了最初的探索和解密上,要管理资源的生存模式,以及强调恐怖的表演上。而把这样的图形表现用60FPS的帧率稳定的渲染,对于软件工程师来说是最高的挑战。

   


        生化危机7的动画技术调研以及目标的制定


     Capcom自研引擎的基本功能


       首先是动画的基本功能的说明。【生化危机7】是使用的叫做【RE ENGIE】的Capcom自研引擎开发的。游戏引擎里拥有像控制待机和步行的状态过渡,混合身体朝向与跑动的多个动作的混合树,上半身和下半身不同动画重叠的分层动画等标准的动画功能。


       StateTransition功能,在Transition里配置条件,来触发在不同动画状态之间切换


       动画混合树(BlendTree),Blendspace类似的功能。


       动画序列功能,可以在动画序列上加入事件触发器,来执行生成攻击,调用音效等功能。


       动画分层功能,可以实现动画层的替换和叠加功能。



           现代的动画技术中一般也会采用称作IK(逆向动力学)的方法。简单来说就是运动骨骼关节的顶端部分(手指,脚趾),然后驱动连结的关节运动的构造。


       IK功能有双关节(骨骼)IK (2Bone IK)和多关节IK(CCD IK)两种


       双关节IK和多关节的手脚IK的介绍视频
       视频01  

       通过这种IK功能,也实现了把脚限定在地面的【Foot Lock】功能

   

       FootLock的演示      
       视频02

       然后是使用【LookAt】的功能,由腰,腹,胸,头,眼睛的顺序来控制模型的姿势和视线。可以做出以敌人角色为目标的视线追踪的表现。

       视频03 Look at的演示

       另外还有的就是多个关联动画平滑过渡的解析功能。例如分析脚触地的时机,可以在游戏运行时获取左脚和右脚的落地时间。


       Capcom的RE ENGINE的动画基本功能的总结
       有效利用第一人称视点的手臂和相机的表演


           玩家要实现的目标就是加强游戏的浸入感。具体的就是要想办法表现出玩家角色的动作。因为【生化危机7】是第一人称视角,无法表现出玩家角色的全身模型,所以要以表现两手为基本。也就是巧妙的利用手部的IK处理。这里实现的解决方法有3点。


       首先是攻击时的Hitstop,准备了基本武器的挥动动画。而击中物体时的动作则是过程化生成的。


       挥动的动画与攻击时的HitStop       
       视频04 

       具体来说,就是在武器打击判断到物体击中的瞬间,在保持手臂姿势的同时,附加一个表现击中时反作用力的动画。总之就是固定武器,用IK来处理手部位置的偏移,作出打击的表现。


       攻击HitStop的演示
       视频05 


   

       Hitstop演示动画
       视频06 

       观看实际的游戏动画的话,和单纯的动画相比,有了临场感和生理上的感觉。也希望玩体验版时尝试下攻击游戏中的物体。

   
       Hitstop在游戏中的示例
       视频07 

       第2点是和背景的交互上。具体来说就是制作手接触门和墙壁的动作。在开门的场景中手和门接触后再播放动画。手接触门后就被固定在门上,动作会跟随着门的动作。另外根据和门的距离,接触时手腕的旋转角度也会跟着变化。


       视频08 推门和墙壁的手姿势


   

       游戏中与墙壁交互的示例
       视频09 


   

       手与门的更多游戏示例,增加了游戏场景中的临场感。
       视频10 

         最后一点是过场动画的演示与游戏的衔接。游戏这种自由的在地图中移动的游戏,需要游戏的场景和过场动画的场景可以无缝的衔接。在【生化危机7】中是计算游戏时的相机相机速度和过场时的移动速度,对这个区间做补完。为了不会有单纯的直线的连结速度的不协调感,加入了在移动的起始和结束部分调整速度的功能。

 

       游戏演示与玩家操作的衔接
       视频11 


   

       玩家部分的方案总结


       表现敌意的动作方法

 
       接下来看一下敌人角色的动作。包含的要点有,敌人角色的感觉到智慧的动作,狭小场所中的真实运动,以及滑步的改善上。


         在有意识感的移动上,首先对平行移动(Strafe移动)的动作实现做了解说。因为平行移动在凝视一点的同时,在前后左右的移动,这样就有目的的给予了玩家敌对心和警戒心。


     但是,过程化的平行移动也有自身的问题。这个是因为前后左右的步法是很复杂的,单纯的上半身和下半身的动作混合会让脚的动作纠缠在一起。在【生化危机6】中为了解决这个办法采用了螃蟹步的方法。而在本作中为了追求真实的动作,追加了动作,制作了步法的规则。



       移动混合问题的解决
       视频12 

       【生化危机7】中采用的步法解决方案。

  


       接下来解说的是对应游戏状况动态的改变攻击动作的方法。准备的是敌人攻击时横向挥动武器的动作。对于动作,通过改变手的上下位置,过程化的生成向下挥动和向上挥动的动作。而单纯的用混合动画的话,手的动作会与整体平衡冲突,变成不自然的动作。


       攻击的动态变化演示
       视频13

       这里的实现参考了CEDEC 2011上KOEITECMO发布的【FullBody IK Engine的做法】的文章,加入了类似手足的IK处理那样,改变模型的重心的技术。但实际上因为计算量非常多,减少了骨骼关节的数量,并且通过攻击动作中无视下半身来达到计算的轻量化。r


       然后是以攻击目标头部的动态的改变动作,完成了有敌意的僵尸角色。这样可以对应玩家的姿势来狙击头部,表现出了恐怖感。


       攻击的上下变化
       视频14 


   

       攻击的左右上下变化
       视频15 


   

        为了保证在狭小场所中战斗的真实感,敌人角色同样采用了攻击Hitstop。基本上和玩家角色一样,在动画播放后,在打击位置进行IK处理,在手臂加入武器的反作用力的技术。


        铲子打击墙壁的HitStop    
       视频16


   

       最后进行的是【生化危机7】中滑步的改善方法的介绍。首先是在斜坡和楼梯的走路动作的修正。在斜坡和楼梯上与在水平地面上不同,走路动作容易发生脚漂浮的问题。本作中是用过程化技术对通常步行动作做加工来进行修正的。
       具体的讲就是为地形数据准备了【地形碰撞】和【效果碰撞】两种碰撞数据。前者是单纯的判定倾斜和水面表现,来让角色移动使用。而后者则是在更接近外观的形状的判定数据,增加了着弹和视线穿过的判断,来防止脚的插入。


       动作的修正上,是计算模型和地形判断的地表倾斜,对应脚的位置的倾斜来动作。然后通过效果碰撞来进行脚与地面的接地判定,使用IK处理来表现反作用力的动作。另外还会根据倾斜角来降低腰的位置,防止脚够不到地面的问题。
       斜坡的接地处理
       视频17 


  

       视频18  斜坡处脚的接地处理


   

       视频19  楼梯处脚的接地处理

       另外单脚的身体旋转使用的是Pivot的动作修正。通常的做法是取得接地的脚的信息,以身体的中心为轴来移动。但是因为这样会有脚的侧滑问题,需要把旋转轴靠近支撑脚的方式来解决。还有像踏入攻击的动作,也不是全新的制作,而是利用Footlock来生成动画。

   

 

       视频20 只有Root旋转和采用支撑脚旋转的对比


    

       视频21 踏入攻击加工前后的对比


   

       视频22 踏入动作


   

 

 

 

 


       视频23 钟摆行为的两种动画


    

       最后的总结

 

 


           本演讲所内容的是2017年1月26日发售的【生化危机7】中所使用的过程化动画技术。玩家角色和敌人角色的运动会对应游戏环境状况来动态的变化,来获得更有临场感的动画效果。

   

       演讲者  橋本直樹博士,卡普空 CS第一开发总部 第一开发部 第一游戏开发室

   

       讲座分为三部分,生化危机7的游戏概念,游戏中动画的基本功能和对应的解决方案。


       首先是【生化危机7】的概念,本作各以前的【生化危机】系列有所转变,采用了第一人称视点。视觉上使用照片真实的表现,以对应VR的强浸入感的渲染为目标。另外,玩法也回到了最初的探索和解密上,要管理资源的生存模式,以及强调恐怖的表演上。而把这样的图形表现用60FPS的帧率稳定的渲染,对于软件工程师来说是最高的挑战。

   


       生化危机7的动画技术调研以及目标的制定


       Capcom自研引擎的基本功能


       首先是动画的基本功能的说明。【生化危机7】是使用的叫做【RE ENGIE】的Capcom自研引擎开发的。游戏引擎里拥有像控制待机和步行的状态过渡,混合身体朝向与跑动的多个动作的混合树,上半身和下半身不同动画重叠的分层动画等标准的动画功能。


       StateTransition功能,在Transition里配置条件,来触发在不同动画状态之间切换


       动画混合树(BlendTree),Blendspace类似的功能。


       动画序列功能,可以在动画序列上加入事件触发器,来执行生成攻击,调用音效等功能。


       动画分层功能,可以实现动画层的替换和叠加功能。

 

       现代的动画技术中一般也会采用称作IK(逆向动力学)的方法。简单来说就是运动骨骼关节的顶端部分(手指,脚趾),然后驱动连结的关节运动的构造。


       IK功能有双关节(骨骼)IK (2Bone IK)和多关节IK(CCD IK)两种


       双关节IK和多关节的手脚IK的介绍视频
       视频01  
       通过这种IK功能,也实现了把脚限定在地面的【Foot Lock】功能


       FootLock的演示
       视频02
       然后是使用【LookAt】的功能,由腰,腹,胸,头,眼睛的顺序来控制模型的姿势和视线。可以做出以敌人角色为目标的视线追踪的表现。


       视频03 Look at的演示
       另外还有的就是多个关联动画平滑过渡的解析功能。例如分析脚触地的时机,可以在游戏运行时获取左脚和右脚的落地时间。


       Capcom的RE ENGINE的动画基本功能的总结。

  
       有效利用第一人称视点的手臂和相机的表演


       玩家要实现的目标就是加强游戏的浸入感。具体的就是要想办法表现出玩家角色的动作。因为【生化危机7】是第一人称视角,无法表现出玩家角色的全身模型,所以要以表现两手为基本。也就是巧妙的利用手部的IK处理。这里实现的解决方法有3点。


       首先是攻击时的Hitstop,准备了基本武器的挥动动画。而击中物体时的动作则是过程化生成的。


       挥动的动画与攻击时的HitStop
       视频04 
       具体来说,就是在武器打击判断到物体击中的瞬间,在保持手臂姿势的同时,附加一个表现击中时反作用力的动画。总之就是固定武器,用IK来处理手部位置的偏移,作出打击的表现。

 

       攻击HitStop的演示
       视频05 

   

       Hitstop演示动画      
       视频06 
       观看实际的游戏动画的话,和单纯的动画相比,有了临场感和生理上的感觉。也希望玩体验版时尝试下攻击游戏中的物体。


       Hitstop在游戏中的示例
       视频07 
       第2点是和背景的交互上。具体来说就是制作手接触门和墙壁的动作。在开门的场景中手和门接触后再播放动画。手接触门后就被固定在门上,动作会跟随着门的动作。另外根据和门的距离,接触时手腕的旋转角度也会跟着变化。


       视频08 推门和墙壁的手姿势

   

       游戏中与墙壁交互的示例
       视频09 

   

       手与门的更多游戏示例,增加了游戏场景中的临场感。
       视频10 
       最后一点是过场动画的演示与游戏的衔接。游戏这种自由的在地图中移动的游戏,需要游戏的场景和过场动画的场景可以无缝的衔接。在【生化危机7】中是计算游戏时的相机相机速度和过场时的移动速度,对这个区间做补完。为了不会有单纯的直线的连结速度的不协调感,加入了在移动的起始和结束部分调整速度的功能。

 


       游戏演示与玩家操作的衔接
       视频11 
       玩家部分的方案总结


       表现敌意的动作方法


       接下来看一下敌人角色的动作。包含的要点有,敌人角色的感觉到智慧的动作,狭小场所中的真实运动,以及滑步的改善上。


       在有意识感的移动上,首先对平行移动(Strafe移动)的动作实现做了解说。因为平行移动在凝视一点的同时,在前后左右的移动,这样就有目的的给予了玩家敌对心和警戒心。


       但是,过程化的平行移动也有自身的问题。这个是因为前后左右的步法是很复杂的,单纯的上半身和下半身的动作混合会让脚的动作纠缠在一起。在【生化危机6】中为了解决这个办法采用了螃蟹步的方法。而在本作中为了追求真实的动作,追加了动作,制作了步法的规则。


       移动混合问题的解决
       视频12 
       【生化危机7】中采用的步法解决方案。

  


       接下来解说的是对应游戏状况动态的改变攻击动作的方法。准备的是敌人攻击时横向挥动武器的动作。对于动作,通过改变手的上下位置,过程化的生成向下挥动和向上挥动的动作。而单纯的用混合动画的话,手的动作会与整体平衡冲突,变成不自然的动作。

 

       攻击的动态变化演示
       视频13
       这里的实现参考了CEDEC 2011上KOEITECMO发布的【FullBody IK Engine的做法】的文章,加入了类似手足的IK处理那样,改变模型的重心的技术。但实际上因为计算量非常多,减少了骨骼关节的数量,并且通过攻击动作中无视下半身来达到计算的轻量化。r


       然后是以攻击目标头部的动态的改变动作,完成了有敌意的僵尸角色。这样可以对应玩家的姿势来狙击头部,表现出了恐怖感。


       攻击的上下变化
       视频14 

 

       攻击的左右上下变化
       视频15 
       为了保证在狭小场所中战斗的真实感,敌人角色同样采用了攻击Hitstop。基本上和玩家角色一样,在动画播放后,在打击位置进行IK处理,在手臂加入武器的反作用力的技术。

 

       铲子打击墙壁的HitStop    
       视频16


       最后进行的是【生化危机7】中滑步的改善方法的介绍。首先是在斜坡和楼梯的走路动作的修正。在斜坡和楼梯上与在水平地面上不同,走路动作容易发生脚漂浮的问题。本作中是用过程化技术对通常步行动作做加工来进行修正的。
       具体的讲就是为地形数据准备了【地形碰撞】和【效果碰撞】两种碰撞数据。前者是单纯的判定倾斜和水面表现,来让角色移动使用。而后者则是在更接近外观的形状的判定数据,增加了着弹和视线穿过的判断,来防止脚的插入。


       动作的修正上,是计算模型和地形判断的地表倾斜,对应脚的位置的倾斜来动作。然后通过效果碰撞来进行脚与地面的接地判定,使用IK处理来表现反作用力的动作。另外还会根据倾斜角来降低腰的位置,防止脚够不到地面的问题。


       斜坡的接地处理
       视频17 

   

       视频18  斜坡处脚的接地处理

  

       视频19  楼梯处脚的接地处理
       另外单脚的身体旋转使用的是Pivot的动作修正。通常的做法是取得接地的脚的信息,以身体的中心为轴来移动。但是因为这样会有脚的侧滑问题,需要把旋转轴靠近支撑脚的方式来解决。还有像踏入攻击的动作,也不是全新的制作,而是利用Footlock来生成动画。

 

 

       视频20 只有Root旋转和采用支撑脚旋转的对比

   

       视频21 踏入攻击加工前后的对比

   

       视频22 踏入动作

  

 

 

 

 


       视频23 钟摆行为的两种动画

    

       最后的总结

 


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论