一种游戏中的动画处理方法及装置与流程

文档序号:17903200发布日期:2019-06-13 17:19阅读:290来源:国知局
一种游戏中的动画处理方法及装置与流程

本申请涉及图像处理技术领域,尤其是涉及一种游戏中的动画处理方法及装置。



背景技术:

随着移动设备性能的提升和游戏中图形处理技术的快速发展,玩家对游戏画面的真实性追求越来越高,尤其是游戏中由交互产生动画的画面,需要体现出交互的真实性,例如游戏中的草丛由于受到风力等外力的作用产生摆动的动画画面,再例如游戏中角色的毛发由于受到手指等外力的作用产生摆动的动画画面,在这些画面中的整个草丛模型或者毛发模型在受到外力作用时,动画效果单调,严重影响了动画画面的真实性。



技术实现要素:

有鉴于此,本申请的目的在于提供游戏中的动画处理方法和装置,以克服现有技术中交互作用力作用于某个模型时,该模型动画效果单调、真实性差的缺陷。

第一方面,本申请实施例提供了一种游戏中的动画处理方法,包括:

获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到;

当游戏中的作用力作用在目标模型时,基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动。

在一种可能的实施方式中,所述基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动,包括:

基于所述作用力的信息,从所述目标模型中筛选受到所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息;

根据每个所述目标对象的受力信息,分别确定每个所述目标对象的摆动。

在一种可能的实施方式中,基于所述作用力的信息,从所述目标模型中筛选所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息,包括:

所述作用力为风力,所述作用力作用的目标对象为所述目标模型中的所有目标对象;

根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到风力的方向,并根据所述风力的大小分别确定每个所述目标对象受到的风力的大小。

在一种可能的实施方式中,基于所述作用力的信息,从所述目标模型中筛选所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息,包括:

所述作用力包括角色产生的力,基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象;

针对筛选得到的每个目标对象,基于所述角色的位置信息和该目标对象的位置信息,确定该目标对应受到的所述角色产生的距离作用力的大小。

在一种可能的实施方式中,所述基于所述角色的位置信息和该目标对象的位置信息,确定该目标对应受到的角色产生的距离作用力的大小,包括:

基于所述角色的位置信息和该目标对象的位置信息,确定所述角色与该目标对象的距离;

基于所述角色与该目标对象的距离,以及所述角色产生的力的预定作用范围,确定该目标对象受到的角色产生的距离作用力的大小。

在一种可能的实施方式中,所述目标模型由所述角色的位置信息、所述角色产生的力的预定作用范围和每个目标模型的位置信息确定的。

在一种可能的实施方式中,所述基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象之后,还包括:

针对筛选得到的每个目标对象,基于所述角色的速度信息,获取所述角色的运动速度向量;

基于所述角色的运动速度向量,确定该目标对象受到的速度作用力的方向和所述角色的运动速度大小;

基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小。

在一种可能的实施方式中,所述基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小,包括:

根据所述角色运动状态的变化,渐变地控制该目标对象受到的所述速度作用力的大小。

在一种可能的实施方式中,所述基于所述作用力的信息,从所述目标模型中筛选所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息,还包括:

所述作用力还包括风力,所述风力作用的目标对象为所述目标模型中的所有目标对象;

根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到的风力的方向,并根据所述风力的大小分别确定每个所述目标对象受到的风力的大小。

在一种可能的实施方式中,所述根据每个所述目标对象的受力信息,分别确定每个所述目标对象的摆动,包括:

针对每个所述目标对象,获取该目标对象在竖直方向上的高度;

基于该目标对象在所述作用力作用下的受力信息和该目标对象在竖直方向上的高度,确定该目标对象在水平方向上的摆动幅度;

基于该目标对象在竖直方向上的高度和该目标对象在水平方向上的摆动幅度,确定该目标对象在竖直方向上的摆动幅度。

第二方面,本申请实施例提供了一种游戏中的动画处理装置,包括:

对象获取模块,用于获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到;

对象控制模块,用于当游戏中的作用力作用在目标模型时,基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动。

在一种可能的实施方式中,所述对象控制模块包括:

受力信息确定子模块,用于基于所述作用力的信息,从所述目标模型中筛选受到所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息;

摆动控制子模块,用于根据每个所述目标对象的受力信息,分别确定每个所述目标对象的摆动。

在一种可能的实施方式中,所述受力信息确定子模块具体用于:

在所述作用力为风力时,确定所述作用力作用的目标对象为所述目标模型中的所有目标对象;

根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到风力的方向,并根据风力的大小分别确定每个所述目标对象受到的风力的大小。

在一种可能的实施方式中,所述受力信息确定子模块具体用于:

在所述作用力包括角色产生的力时,基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象;

针对筛选得到的每个目标对象,基于所述角色的位置信息和该目标对象的位置信息,确定该目标对应受到的所述角色产生的距离作用力的大小。

在一种可能的实施方式中,所述受力信息确定子模块具体还用于:

基于所述角色的位置信息和该目标对象的位置信息,确定所述角色与该目标对象的距离;

基于所述角色与该目标对象的距离,以及所述角色产生的力的预定作用范围,确定该目标对象受到的角色产生的距离作用力的大小。

在一种可能的实施方式中,所述受力信息确定子模块具体还用于:

针对筛选得到的每个目标对象,基于所述角色的速度信息,获取所述角色的运动速度向量;

基于所述角色的运动速度向量,确定该目标对象受到的速度作用力的方向和所述角色的运动速度大小;

基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小。

在一种可能的实施方式中,所述摆动控制子模块具体用于:

针对每个所述目标对象,获取该目标对象在竖直方向上的高度;

基于该目标对象在所述作用力作用下的受力信息和该目标对象在竖直方向上的高度,确定该目标对象在水平方向上的摆动幅度;

基于该目标对象在竖直方向上的高度和该目标对象在水平方向上的摆动幅度,确定该目标对象在竖直方向上的摆动幅度。

第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面的任一种可能的实施方式中的步骤。

第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面的任一种可能的实施方式中的步骤。

本申请实施例提供的游戏中的动画处理方法及装置,获取游戏中,由相连的多个目标对象合并得到的目标模型,并在作用力作用在目标模型时,基于作用力的信息,控制目标模型中的多个目标对象以不同方向进行摆动。上述技术方案,在动画处理过程中,在有作用力作用在目标模型时,能够基于作用力的信息控制目标模型中的部分目标对象以不同方向进行摆动,实现了目标对象的动画多样性,提高了目标对象动画效果的真实性,并且还降低了现有技术中处理多个模型的数据计算量。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种游戏中的动画处理方法的流程图;

图2a示出了本申请实施例中的草模型的示意图;

图2b示出了申请实施例中的多颗草模型摆放成草丛的示意图;

图2c示出了本申请实施例中的草丛模型的示意图;

图3示出了本申请实施例中角色产生的力的预定作用范围的示意图;

图4示出了本申请实施例所提供的另一种游戏中的动画处理方法中基于作用力的信息,控制目标模型中的多个目标对象以不同方向进行摆动的流程图;

图5a示出了现有技术中多个草模型的摆动示意图;

图5b示出了本申请实施例中多个草模型的摆动示意图;

图6示出了本申请实施例所提供的另一种游戏中的动画处理方法中确定目标对象受到的角色产生的速度作用力的大小和方向的流程图;

图7a示出了本申请实施例中角色开始运动时速度的变化示意图;

图7b示出了本申请实施例中角色结束运动时速度的变化示意图;

图8示出了本申请实施例所提供的另一种游戏中的动画处理方法的流程图;

图9示出了本申请实施例所提供的另一种游戏中的动画处理方法中根据受力信息确定目标对象的摆动的流程图;

图10示出了本申请实施例所提供的一种游戏中的动画处理装置的结构示意图;

图11示出了本申请实施例所提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

考虑到现有技术中游戏的动画画面数据处理量大、动画效果真实性差的缺陷,本申请实施例提供了一种游戏中的动画处理方法和装置,该方法和装置将多个目标对象合并为一个目标模型,从而在动画处理过程中,不再分别遍历和处理每个目标对象,只需要遍历和处理目标模型即可,有效降低了数据的计算量,提高了处理效率。并且,在有作用力作用在目标模型时,该方法和装置能够基于作用力的信息控制目标模型中的部分目标对象以不同方向进行摆动,在实现对同一个目标模型中的单个目标对象进行单独控制的同时,实现了目标对象的动画多样性,提高了目标对象动画效果的真实性。

应当说明的是,本申请实施例提供的动画处理方法和装置不仅仅限于应用在游戏场景下,还可以用于视频、动画片等场景下,例如,利用本申请实施例提供的动画处理方法和装置处理动画片中的动画画面。

为便于对本实施例进行理解,首先对本申请实施例所公开的一种游戏中的动画处理方法进行详细介绍。

如图1所述,本申请实施例提供的游戏中的动画处理方法,包括如下步骤:

s110、获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到。

上述目标对象可以是任意的受到外力作用时会发生摆动的对象。在游戏的应用场景下,上述目标对象可以是草、毛发(如头发)等。

通过目标对象的摆动从而达到形成动画画面的效果。

游戏中,在美术制作过程中会首先制作一个目标对象,以草作为目标对象为例,如图2a所示,首先制作一颗草的草模型210。之后,如图2b所示,根据有效场景规划,将多颗草的草模型摆放成一个草丛模型220。

可见,多个目标对象具有区域连续、数量多的特点,为了降低动画处理的模型的数量,提高动画处理的效率,将相连的目标对象合并,得到一个目标模型,本步骤获取的目标模型即上述由相连的多个目标对象合并得到的模型。如图2c所示,将相连的草模型合并形成一个大的草丛模型220或230。没有相连的草模型不进行合并,因此合并后可能形成多个草丛模型。合并之后,动画处理中只需要遍历和处理合并之后的目标模型,从而减少了需要处理的模型的数量,提高了动画的管理效率。

在执行本步骤之前,可以利用如下子步骤将相连的多个目标对象合并为一个目标模型:获取每个目标对象的位置信息;基于每个目标对象的位置信息,将相连的多个目标对象合并为一个目标模型。

s120、当游戏中的作用力作用在目标模型时,基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动。

上述作用力是指一切可以作用在目标模型上的作用力,例如作用力可以是风力,再例如,作用力可以是角色产生的力。

作用力作用在目标模型时,作用力作用到的目标对象会发生摆动,作用力作用不到的目标对象不会发生摆动,实现了对同一个目标模型中的单个目标对象进行单独控制,并且为了提高动画画面的真实性,本步骤基于作用力的信息,控制受到作用力的各个目标对象以不同方向进行摆动。

由于上面的陈述可知,作用力可以是风力或角色产生的力,在作用力为风力的情况下,风力在作用的目标模型是游戏的当前画面中的所有目标模型,在作用力是角色产生的力的情况下,由于角色的作用范围有限,因此并不是所有的目标模型都受到力的作用,需要进一步确定角色产生的力作用的目标模型。

具体地,角色位于目标模型中时,越靠近角色的目标模型或目标对象受到的角色产生的力的作用越大,超过角色产生的力的作用范围的目标模型或目标对象将不受角色的影响而发生摆动。因此,在确定角色产生的力作用的目标模型之前,需要根据经验或实验预先为角色产生的力设置一个作用范围,即设置下述角色产生的力的预定作用范围。进一步地,再根据上述预定作用范围确定角色产生的力作用的目标模型时,还需要角色的位置信息和每个目标模型的位置信息,因此还需预先获取角色的位置信息和每个目标模型的位置信息。

上述角色的位置信息包括角色在水平方向上的坐标轴x轴的值、z轴的值以及角色在竖直方向(即坐标轴y轴)上的值。目标模型的位置信息包括目标模型在水平方向上坐标轴x轴的值、z轴的值以及角色在竖直方向(即坐标轴y轴)上的值。由于角色在竖直方向上的坐标值,即角色在竖直方向上的高度不影响其作用范围,并且目标模型在竖直方向上的坐标值,即目标模型在竖直方向上的高度不影响其是否受到角色的作用力,因此在确定角色产生的力作用的目标模型时,只需要角色的位置信息中角色在水平方向上的坐标值和目标模型的位置信息中目标模型在水平方向上的坐标值。

在获取了上述角色的位置信息、每个目标模型的位置信息以及角色产生的力的预定作用范围后,通过遍历每个目标模型就能够实现对目标模型的筛选。在遍历到某个目标模型时,具体可以利用如下步骤确定作用力是否作用到该目标模型上:基于角色的位置信息、角色产生的力的预定作用范围和该目标模型的位置信息,判断该目标模型是否在角色产生的力的作用范围内,如果在,则确定角色产生的力作用到该目标模型上,否则,角色产生的力不会作用到该目标模型上。

在具体实施时,如图3所示,上述角色产生的力的预定作用范围可以是一个以角色为圆心,以角色最长作用距离为半径r的圆形区域。目标模型与角色的距离超过r,将不受角色产生的作用力的影响。

综上,在作用力为风力时,上述步骤s110中获取的游戏中的目标模型为游戏画面中的所有目标模型,在作用力为角色产生的力时,上述步骤s110中获取的游戏中的目标模型只是角色作用到的模型,由角色的位置信息、所述角色产生的力的预定作用范围和每个目标模型的位置信息确定。

如图4所示,在另一实施例中,上述基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动,具体可以利用如下步骤实现:

s410、基于所述作用力的信息,从所述目标模型中筛选受到所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息。

上述作用力的信息具体可以包括:风力的大小、角色的位置信息、角色的速度信息。

由上面的陈述可知,在作用力不同时,作用力的作用范围不同,例如,在作用力为风力时,作用力的作用范围可以认为是当前屏幕画面中所有的目标模型,以及每个目标模型中的所有的目标对象,此时,根据作用力的信息筛选得到目标对象为目标模型中的所有目标对象。在作用力为角色产生的力时,需要根据角色的位置信息和角色产生的力的预定作用范围筛选其作用的目标模型,同样,角色可能无法作用筛选得到的目标模型中的所有目标对象,因此,还需要根据角色的位置信息和角色产生的力的预定作用范围筛选目标模型中的目标对象。

s420、根据每个所述目标对象的受力信息,分别确定每个所述目标对象的摆动。

在所述作用力为风力时,上述确定筛选得到的每个目标对象在所述作用力作用下的受力信息,可以具体利用如下步骤实现:根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到风力的方向,并根据所述风力的大小分别确定每个所述目标对象受到的风力的大小。

上述预设的目标属性信息是预先为每个目标对象设置的,每个目标对象的预设的目标属性信息可以设置为不同,根据目标属性信息的不同能够控制不同的目标对象朝不同的方向摆动,以增加目标对象与风力交互的随机性,使得目标对象与风力交互的方向具有一定多样性,增加表现力,提高动画效果的真实性。

如图5a所示,现有技术的游戏中,在受到风力作用时,所有草模型都向同一个方向摆动,但实际上,草在受到风力作用时,并不是所有的草都向一个方向摆动,摆动方向会有各种差异,因此现有技术的游戏中,草模型的动画效果不够真实,多样性差。利用本申请实施例提供的基于预设的目标属性信息能够使不同的草模型具有不同的受力方向,在受力方向不同时,摆动方向会出现不同,如图5b所示。可见本申请实施能够使目标对象与风力交互的方向具有一定多样性,增加表现力,提高动画效果的真实性。

在具体实施时,上述预设的目标属性信息可以是目标对象的顶点色,此时,可以利用如下公式确定在所用力为风力时,目标对象的受力信息:

wind_power=func(vetex_color)×nature_wind_power

其中,wind_power表示在作用力为风力时,目标对象的受力信息,func表示通过顶点色计算得到一个具有一定的随机性的二维向量,用于确定目标对象受到的风力的方向,nature_wind_power表示风力的大小。

上述顶点色是目标对象的一个属性,可以不是目标对象实际表现出来的颜色。一般情况下,每个目标对象由多个三角形构成,每个三角形有3个顶点,每个顶点都可以分别设置一个顶点色,当然,某一个目标对象的所有三角形的所有顶点的顶点色也可以设置成相同的。

func可以利用如下公式确定:

func=float2(sin(vetex_color.r–k1),sin(vetex_color.g–k2)

其中,vetex_color表示顶点色,vetex_color.r表示顶点色的r(红色)通道的值,vetex_color.g表示顶点色的g(绿色)通道的值,k1、k2分别表示一个预设的系数。系数k1和k2的值可以根据实际应用场景的需求灵活设定,k1和k2可以设置为相同的值,也可以设置为不同的值,例如,可以将系数k1和k2均设置为0.5,再例如,可以将k1设置为0.4,将k2设置为0.6,本申请实施例对k1和k2的取值不做限定。

上述公式中,vetex_color.r–k1表示目标对象的顶点色中红色通道的值与一个预定的系数值的差值,对该差值取正弦值,得到的正弦值作为目标对象受到的风力的方向向量中的一个值。上面公式中,vetex_color.g–k2表示目标对象的顶点色中绿色通道的值与另一个预定的系数值的差值,对该差值取正弦值,得到的正弦值作为目标对象受到的风力的方向向量中的另一个值。上面的两个正弦值组成了目标对象受到的风力的方向向量,根据该方向向量能够确定目标对象受到的风力的方向。

可见,func得到一个带有方向的二维向量,根据上述的公式计算得到的wind_power是一个具有随机性二维向量,既包括目标对象受到的风力的大小,也包括目标对象受到的风力的方向。

当然,也可以利用顶点色的b(蓝色)通道的值确定func中的一维向量,通过顶点色的另一个颜色通道(例如g通道)的值确定func中的另一维向量,本申请实施例对确定func的方式并不进行限定。

上述利用顶点色确定func时,由于蓝色通道的值通常很低,因此优选的采用红色通道的值和绿色通道的值确定func。进一步地,在利用红色通道的值和绿色通道的值确定func之前,首先对红色通道的值和绿色通道的值进行归一化处理,再利用归一化得到的值确定func。

另外,应当说明的是,目标属性信息预先设定时,可以具有随机性,但是需要控制在一定的范围内,例如在设置顶点色时,所有目标对象的顶点色可以设置的各不相同,但是所有目标对象的顶点色得至需要设在一个预定的区间内。上述对目标属性信息的限制用以避免各个目标对象摆动差别太大,导致动画效果失真的状况。

在所述作用力为角色产生的力时,上述基于所述作用力的信息,从所述目标模型中筛选所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息,可以具体利用如下步骤实现:基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象;针对筛选得到的每个目标对象,基于所述角色的位置信息和该目标对象的位置信息,确定该目标对象受到的所述角色产生的距离作用力的大小。

在具体执行基于所述角色的位置信息和该目标对象的位置信息,确定该目标对象受到的所述角色产生的距离作用力的大小时,可以利用如下步骤实现:基于所述角色的位置信息和该目标对象的位置信息,确定所述角色与该目标对象的距离;基于所述角色与该目标对象的距离,以及所述角色产生的力的预定作用范围,确定该目标对象受到的角色产生的距离作用力的大小。

由于角色对目标对象产生的距离作用力的大小,只与角色与目标对象在水平方向上的距离有关,与角色和目标对象在竖直方向上距离没关系,因此,上述基于所述角色的位置信息和该目标对象的位置信息,确定所述角色与该目标对象的距离,是根据角色在水平方向上的坐标与目标对象在水平方向上的坐标来确定的。

进一步地,可以利用如下步骤计算距离作用力的大小:

dist_power=(max_dist_factor–dist)÷max_dist_factor

其中,dist_power表示距离作用力的大小,max_dist_factor表示角色作用力最长作用距离,dist表示角色与目标对象的距离。

根据上面的公式可知,距离作用力的取值范围为0~1。

应当说明的是,在角色与目标对象的距离大于角色作用力最长作用距离时,即上述公式计算时,max_dist_factor–dist得到的值为负值时,说明目标对象超出了角色作用的范围,即目标对象不受角色产生的作用力的作用,不会发生摆动,此时dist_power为0,但是利用上面的公式计算得到的dist_power为负值,因此在利用上面公式计算得到dist_power后,需要对dist_power进行处理,具体地,若dist_power位于0~1之间,则保留计算得到的dist_power,否则dist_power置0。

上述距离作用力为角色本身对目标对象的作用力。角色在移动时,角色的运动速度也会对目标对象产生力的作用。如图6所示,在角色运动时,上述基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象之后,本申请实施例的游戏中的动画处理方法还包括如下步骤:

s610、针对基于角色的位置信息筛选得到的角色产生的力作用到的每个目标对象,基于所述角色的速度信息,获取所述角色的运动速度向量。

角色的速度信息中分别包括角色在水平方向的两个坐标轴的速度分量,基于角色在水平方向的两个坐标轴的速度分量,可以确定角色的运动速度向量。

s620、基于所述角色的运动速度向量,确定该目标对象受到的速度作用力的方向和所述角色的运动速度大小。

角色的运动速度向量基于角色在水平方向的两个坐标轴的速度分量确定,因此根据角色的运动速度向量能够确定目标对象受到的速度作用力的方向。

上述角色的运动速度大小即为角色的运动速度向量的模。

s630、基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小。

在确定了角色的运动速度大小后,由于角色的运动速度与角色产生速度作用力具有直接的关系,因此,可以直接将角色的运动速度大小作为目标对象受到的所述角色产生的速度作用力的大小。

当然,也可以根据确定的角色的运动速度大小,经过预定的计算,确定目标对象受到的角色产生的速度作用力的大小。例如,可以将确定的角色的运动速度大小进行加权处理,得到目标对象受到的角色产生的速度作用力的大小。

为进一步提升交互表现力,本申请实施例对角色的速度进行渐变处理,同时渐变地控制该目标对象受到的所述速度作用力的大小。如图7a所示,角色由静止开始运动,其速度渐递增到最大速度v,其产生的速度作用力的大小也相应地逐渐增大。如图7b所示,角色由运动变静止时,其速度渐递减小到0,其产生的速度作用力的大小也相应地逐渐减小。

以上实施例中说明了在作用力分别为风力、角色产生的力时,目标对象的受力信息的确定方案。进一步地,作用力可以同时包括风力和角色产生的力,并且角色产生得力同时包括角色本身产生的距离作用力和角色的运动产生的速度作用力。

在作用力既包括风力也包括角色产生的力时,可以首先利用上述方案,分别确定风力对应的受力信息和角色产生的作用力对应的受力信息,之后,将确定的受力信息进行整合,确定目标对象受到的最终的受力信息。具体地,如图8所示,可以包括如下步骤:

s810、获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到。s820、当游戏中的风力作用在目标模型时,步骤s810获取的目标模型为当前游戏画面中的所有目标模型,每个目标模型中的所有目标对象均受到风力的作用,此时,根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到风力的方向,并根据风力的大小分别确定每个所述目标对象受到的风力的大小。

s830、当游戏中的角色产生的作用力作用在目标模型时,步骤s810中获取的目标模型由所述角色的位置信息、所述角色产生的力的预定作用范围和每个目标模型的位置信息确定。

对于游戏中的角色产生的力作用的某个目标模型,基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象。

针对筛选得到的每个目标对象,基于所述角色的位置信息和该目标对象的位置信息,确定该目标对应受到的所述角色产生的距离作用力的大小。

针对筛选得到的每个目标对象,基于所述角色的速度信息,获取所述角色的运动速度向量。

基于所述角色的运动速度向量,确定该目标对象受到的速度作用力的方向和所述角色的运动速度大小。

基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小。

s840、基于上面确定的目标对象受到风力的方向和大小、目标对象受到的角色产生的速度作用力的大小和方向、目标对象受到的角色产生的距离作用力的大小,对目标对象的受力信息进行整合,确定目标对象受到的最终的受力信息。

具体地,在执行上述整合受力信息的过程中,具体可以利用如下公式实现:

final_power=dist_power×speed_power+wind_power

其中,dist_power表示目标对象受到的角色产生的距离作用力,是一个一维的数值。speed_power表示目标对象受到的角色产生的速度作用力的大小和方向,是一个二维的向量。wind_power表示目标对象受到的风力的大小和方向,是一个二维的向量。final_power表示目标对象受到的最终的受力信息,是一个二维向量,既包括目标对象最终受到的作用力的大小,也包括目标对象最终受到的作用力的方向。

以上实施例具体说明了确定受力信息的实现方案,在确定了目标对象的受力信息后,如图9所示,可以利用如下步骤根据受力信息,确定所述目标对象的摆动:

s910、针对每个所述目标对象,获取该目标对象在竖直方向上的高度。

目标对象在竖直方向上的高度越高,受到作用力后的摆动幅度越大,因此需要获取目标对象在竖直方向上的高度。

s920、基于该目标对象在所述作用力作用下的受力信息和该目标对象在竖直方向上的高度,确定该目标对象在水平方向上的摆动幅度。

在具体实施时,可以利用如下公式确定目标对象在水平方向上的摆动幅度:

h_offset=hei×final_power×factor

其中,h_offset表示目标对象在水平方向上的摆动幅度,该摆动幅度既包括摆动的方向,也包括摆动幅度的大小。具体地,h_offset可以包括目标对象在水平方向的x轴上的摆动幅度的大小和目标对象在水平方向的z轴上的摆动幅度的大小。hei表示目标对象在竖直方向上的高度。factor表示预设的调控因子。

s930、基于该目标对象在竖直方向上的高度和该目标对象在水平方向上的摆动幅度,确定该目标对象在竖直方向上的摆动幅度。

在具体实施时,可以利用如下公式先确定目标对象在竖直方向上摆动后的高度,基于目标对象在竖直方向上摆动后的高度和摆动前的高度,就能够确定目标对象在竖直方向上的摆动幅度。

式中,y表示目标对象在竖直方向上摆动后的高度,h_offset.x表示目标对象在水平方向的x轴上的摆动幅度的大小,h_offset.z表示目标对象在水平方向的z轴上的摆动幅度的大小。

基于以上描述,摆动后,目标对象的坐标具体为:

grass_world_pos.x+h_offset.x,y,grass_world_pos.z+h_offset.z

其中,grass_world_pos.x表示目标对象在水平方向的x轴上的原始坐标,grass_world_pos.z表示目标对象在水平方向的z轴上的原始坐标。

在游戏中,目标对象与角色结合具有移动的战略意义,例如草丛具有隐身功能,所以角色经常进出草丛或在草丛中移动,那么,在角色与草丛交互时,利用上述实施例中的方案,能够增加草丛的动态表现,增强游戏的体验感,使得草丛与角色的交互更加真实。

本申请实施例的游戏中的动画处理方法将多个相连的目标对象合并为一个目标模型,从而在动画处理的过程中能够减少模型的遍历和处理数量,提高了动画处理和管理的效率。并且,本申请实施例的游戏中的动画处理方法基于目标对象的预设的目标属性信息,实现了目标对象与风力的多样化交互,使得目标对象在风力的作用下,摆动方向具有一定随机性,模拟更加真实的自然风带来的目标对象摆动效果。同时,本申请实施例的游戏中的动画处理方法基于角色的位置信息、速度信息与目标对象进行动态交互方式,使得目标对象的摆动更加真实。

基于相同的技术构思,本申请实施例还提供一种游戏中的动画处理装置、电子设备、以及计算机存储介质等,具体可参见以下实施例。

如图10所示,本申请实施例提供了一种游戏中的动画处理装置,该装置执行的动画处理的步骤与以上实施例中公开的动画处理方法中的步骤相同。具体地,游戏中的动画处理装置包括:

对象获取模块1001,用于获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到。

对象控制模块1002,用于当游戏中的作用力作用在目标模型时,基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动。

在一些实施例中,所述对象控制模块1002包括:

受力信息确定子模块10021,用于基于所述作用力的信息,从所述目标模型中筛选受到所述作用力作用的目标对象,并确定筛选得到的每个目标对象在所述作用力作用下的受力信息;

摆动控制子模块10022,用于根据每个所述目标对象的受力信息,分别确定每个所述目标对象的摆动。

在一些实施例中,所述受力信息确定子模块10021具体用于:

在所述作用力为风力时,确定所述作用力作用的目标对象为所述目标模型中的所有目标对象;

根据每个目标对象的预设的目标属性信息,分别确定每个所述目标对象受到风力的方向,并根据风力的大小分别确定每个所述目标对象受到的风力的大小。

在一些实施例中,所述受力信息确定子10021模块具体用于:

在所述作用力包括角色产生的力时,基于所述角色的位置信息和所述角色产生的力的预定作用范围,从所述目标模型中筛选受到所述角色产生的力作用的目标对象;

针对筛选得到的每个目标对象,基于所述角色的位置信息和该目标对象的位置信息,确定该目标对应受到的所述角色产生的距离作用力的大小。

在一些实施例中,所述受力信息确定子模块10021具体还用于:

基于所述角色的位置信息和该目标对象的位置信息,确定所述角色与该目标对象的距离;

基于所述角色与该目标对象的距离,以及所述角色产生的力的预定作用范围,确定该目标对象受到的角色产生的距离作用力的大小。

在一些实施例中,所述受力信息确定子模块10021具体还用于:

针对筛选得到的每个目标对象,基于所述角色的速度信息,获取所述角色的运动速度向量;

基于所述角色的运动速度向量,确定该目标对象受到的速度作用力的方向和所述角色的运动速度大小;

基于所述角色的运动速度大小,确定该目标对象受到的所述角色产生的速度作用力的大小。

在一些实施例中,所述摆动控制子模块10022具体用于:

针对每个所述目标对象,获取该目标对象在竖直方向上的高度;

基于该目标对象在所述作用力作用下的受力信息和该目标对象在竖直方向上的高度,确定该目标对象在水平方向上的摆动幅度;

基于该目标对象在竖直方向上的高度和该目标对象在水平方向上的摆动幅度,确定该目标对象在竖直方向上的摆动幅度。

本申请的一些实施例还公开了一种电子设备,如图11所示,为本申请实施例提供的电子设备110结构示意图,包括处理器111、存储器112、和总线113;存储器112用于存储执行指令,包括内存1121和外部存储器1122;这里的内存1121也称内存储器,用于暂时存放处理器111中的运算数据,以及与硬盘等外部存储器1122交换的数据,处理器111通过内存1121与外部存储器1122进行数据交换,当所述用户设备110运行时,所述处理器111与所述存储器112之间通过总线113通信,使得所述处理器111在用户态执行以下指令:

获取游戏中的目标模型,所述目标模型由相连的多个目标对象合并得到;

当游戏中的作用力作用在目标模型时,基于所述作用力的信息,控制所述目标模型中的多个目标对象以不同方向进行摆动。

本申请的一些实施例还公开了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述实施例的游戏中的动画处理方法中的步骤。

本申请实施例还提供了一种进行文本检错计算机程序产品,其包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟、光盘、显卡或者显存等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1