VR游戏中一种动画功能切换方法的设计

2021-09-27 08:57陕西工业职业技术学院赵革委
电子世界 2021年15期
关键词:骨骼代码动画

陕西工业职业技术学院 赵革委

针对如何实现VR游戏场景中角色转态转换过程的动画流畅性,本文以软件的动画合成功能为基础,利用代码控制取代以前动画状态硬切的方式,实现角色由一种动画状态向另一种动画状态逐步转化,大大提升动画状态转化的流畅性,极大的增强了VR游戏的可视性和真实性。

随着5G的普及和推广,极大的提升了VR游戏场景调度的实时性和复杂场景调度的可能性,VR游戏的发展进入一个新时代。但是游戏玩家对游戏的可视性、真实性、流畅性要求也越来越高。因此,游戏开发过程细节处理也成为游戏是否受欢迎的一个衡量标准。本文介绍一种动画状态流畅转化到另一中动画状态的制作方法,增加游戏的可视性和真实性,提升玩家的视觉观感,提高游戏的欢迎度。

1 游戏中动画状态常用转换方法

目前游戏中常采用的动画状态转换方式,基本都采用两个动画状态直接切换,即直接从上一个动画状态转换为下一个动画状态,中间最多增加一个过渡过程。例如从原地到奔跑,先制作一个原地站立动画和一个奔跑动画,当需要切换动画转态时,先调用第一个站立动画转态,然后再调用第二个奔跑动画状态,在动画状态之间增加一个基本切换效果。由于人眼具有视角暂留现象,因此能保障两个动画状态之间的切换不会出现画面闪烁现象,但是没有办法实现从站立到行走,再从行走到奔跑的逐渐变换的过程,因此玩家的视觉观感稍差,动画转态转换过程示意图如图1所示。

图1 常用动画转态转换示意图

2 基于U3D的动画转态转换方法

Animator是Unity 3D提供的动画系统,具有极强的动画创建功能。基于U3D的动画转态转换方法就是以Animator动画系统中的骨骼动画设置为基础,先在Unity中设置骨骼动画状态,然后根据需要调用相应的动画,由于人物的运动基本是手部带动胳膊运动,因此还需设置逆向动画,然后把各种动画通过代码控制,实现动画逐次叠加,进而提高动画状态转化的流畅性,既可以节省资源,同时也能使得状态转化过程具有极强的真实感和流畅度。下面根据制作过程,从四个部分详细讲解这种状态转换方法的实现过程。

2.1 Animator动画系统的骨骼设置

在进行动画系统骨骼设置之前,先要了解动画中骨骼动画的分类情况,然后才能在动画制作软件Animator中进行大类骨骼设计制作。骨骼动画一般可以分为二足动画骨骼、四足动画骨骼,具有双翼的动画骨骼一般也采用四足动画骨骼完成。游戏场景中的角色大部分使用二足动画就能够满足。所以下面以二足动画制作为例完成游戏角色动画制作。

打开Animator动画系统,导入准备好的骨骼,进行骨骼匹配设置,如图2所示。

图2 骨骼匹配设置

目前的二足骨骼是游戏中所有二足角色的父骨骼,将所有的二足骨骼组件按照规则命名,然后进入编辑窗口,按照游戏需求进行骨骼动画设计与制作。制作的骨骼动画具有通用性和公用性,能被所有的二足对象调用,也就是说所有相同动作动画一次制作完成。这样大大节省动画制作的时间,降低动画制作的复杂度。动画制作窗口如图3所示。

图3 骨骼动画制作

2.2 动画连接

创建行走、跳跃、站立、死亡等各种动画,按照逻辑关系分别连接。向里添加向前走、向后走、向前跑、向右跑等动画,完成所有的动画形式设置。左边的动画可以通过放入右边动画后点击后面的格子来映射相反的动画,减少动画的制作量。红色点是代表人物正在播放的动画,蓝色点代表我们添加进去的动画,如图4所示。

图4 动画连接调整

2.3 逆向动画设置

角色的射击动画部分需要使用逆向动画实现。在人物动画控制器中建立头部层、左右臂层,如图5所示。并勾选IK选项,实现由角色骨骼根部带动整个身体,这部分具体的实现将由代码控制。至此,一个完整的角色动画就完成了。

图5 层设置

2.4 流畅转态转换实现

但角色的基本动画设置完成后,下面就只需要撰写代码,完成动画状态转换逐渐变化,使得两个转态逐渐融合,形成更加真实的状态转换动画效果。例如从原地到奔跑,其呈现出的过程应该是从慢到快逐渐变化,不能从走直接变为跑。代码实现过程是这样:首先调用站立的动画状态,然后逐渐切换为走,接着通过代码控制走动画的速度,逐渐变快,之后走逐渐消失,跑动画状态逐渐出现。过程这样的代码控制,就实现了从原地到奔跑动画状态的流畅转换过程。示意图如图6所示。

图6 基于U3D的动画转态转换示意图

3 两种方式比较

3.1 基于U3D的动画转态转换更真实

众所周知,人们在这个真实生活中,当目前处于站立转态,突然要开始奔跑时,一定会有一个由慢到快的过程。而游戏,需要实现有站立到奔跑,是需要使用两个动画站立和奔跑切换,特别是游戏中奔跑动画通常是匀速的。采用以前的方法实现从站立开始奔跑,玩家先看见角色是站立的,然后就是匀速奔跑。随着VR游戏的发展,这一点已经是许多玩家感到不真实。

基于U3D的动画转态转换,核心是用代码控制动画的播放速度。当有站立转变为奔跑时,奔跑动画的播速度可以根据起跑的时间逐步实现由较慢到慢,再到正常播放,所以比较接近真实效果。而且玩家可以根据需要,中间添加其它动画。比如说,角色需要这样一个动画过程,先是站立,然后走,最后在奔跑,基于U3D的动画转态转换,依然可以通过代码实现,只是中间过程增加一个走动画,其它部分代码控制与由站立转态到奔跑转态没有区别。

3.2 基于U3D的动画转态转换更节省资源

使用以前的方法实现从站立开始奔跑,也可以增加真实感,但是得采用增加中间过渡动画的方式,这种方式特别耗费资源的,不但制作过程麻烦,也会大大怎加游戏硬件要求,可能丢失跟更多的玩家。

基于U3D的动画转态转换方法则主要依靠代码实现,既不需要增加动画师的工作量,也不需要提升硬件要求。只是在原来的基础上,在Unity多增加一些设置,而且代码增加量也很少,但是动画状态的流畅性却大大提高了。

结束语:2016年被称为虚拟技术元年,但是之后,虚拟技术由于实时性、场景调度以及体感差等原因几乎处于停滞状态。5G技术的发展为虚拟现实技术提供了新的发展契机和活力,但在此后的发展过程中,VR的可视性、真实性,玩家的既视感,都是VR游戏发展的核心,本文希望能够抛砖引玉,部分解决游戏的真实性、流畅性的问题。

猜你喜欢
骨骼代码动画
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
做个动画给你看
动画发展史
我的动画梦
创世代码
创世代码
创世代码
创世代码
骨骼和肌肉