虚拟角色骨骼动画控制方法及装置、存储介质及电子设备与流程

文档序号:22549697发布日期:2020-10-17 02:23阅读:100来源:国知局
虚拟角色骨骼动画控制方法及装置、存储介质及电子设备与流程

本公开涉及图像处理技术领域,具体而言,涉及一种虚拟角色骨骼动画控制方法及装置、计算机可读存储介质及电子设备。



背景技术:

当场景环境的重力不同于地球上时,为了能渲染更加逼真的角色,角色的动作需要与地球上有不同的表现。

现有技术中是通过预先人为制作多套动作以适应不同的环境,在重力场景较多时,会增加许多工作量,浪费较多的人力资源,同时,由于需要提前制作,在遇到新的环境时,需要重新制作,响应缓慢。

因此有必要设计一种新的虚拟角色骨骼动画控制方法。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种虚拟角色骨骼动画控制方法及装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服现有技术中浪费较多的人力资源且响应较慢的不足。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的第一方面,提供了一种虚拟角色骨骼动画控制方法,包括:

确定虚拟角色所在虚拟环境的第一重力参数;

根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数;

根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态;

响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数;

根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。

在本公开的一种示例性实施例中,确定虚拟角色所在虚拟环境的第一重力参数,包括:

获取所述虚拟角色所在虚拟环境的第一重力加速度;并

计算第一重力加速度与初始重力加速度之间的第一比例系数作为第一重力参数;

其中,所述初始重力加速度为地球表面的平均重力加速度。

在本公开的一种示例性实施例中,根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数,包括:

建立所述第一重力参数与所述虚拟角色的第一骨骼运动参数之间的第一映射关系;

根据所述第一重力参数利用所述第一映射关系确定所述虚拟角色的第一骨骼运动参数。

在本公开的一种示例性实施例中,建立所述第一重力参数与所述虚拟角色的第一骨骼运动参数之间的映射关系,包括:

获取虚拟角色在初始重力加速度下的初始运动参数;

根据所述初始运动参数获取虚拟角色在第一重力加速度下的预设参数;

根据预设参数建立所述第一骨骼运动参数与所述比例系数之间的函数关系。

在本公开的一种示例性实施例中,响应所述虚拟角色的第二重力参数变化为第二重力参数,包括:

获取所述虚拟角色所在虚拟环境的第二重力加速度;并

计算第二重力加速度与初始重力加速度之间的第二比例系数作为第二重力参数;

其中,所述初始重力加速度为地球表面的平均重力加速度。

在本公开的一种示例性实施例中,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数,包括:

建立所述第二重力参数与所述虚拟角色的第二骨骼运动参数之间的第二映射关系;

根据所述第二重力参数利用所述第二映射关系确定所述虚拟角色的第二骨骼运动参数。

在本公开的一种示例性实施例中,建立所述第二重力参数与所述虚拟角色的第二骨骼运动参数之间的映射关系,包括:

获取虚拟角色在初始重力加速度下的初始运动参数;

根据所述初始运动参数获取虚拟角色在第二重力加速度下的预设参数;

根据预设参数建立所述第二骨骼运动参数与所述比例系数之间的函数关系。

在本公开的一种示例性实施例中,所述骨骼运动参数包括如下至少一种参数:所述虚拟角色在预设时间内脚部高度、所述虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度。

在本公开的一种示例性实施例中,所述骨骼运动参数包括所述虚拟角色在预设时间内脚部高度,根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态,包括:

确定所述虚拟角色的脚部在所述预设时间内的运动方向;

根据所述第一重力参数和所述运动方向利用所述第一映射关系调整所述虚拟角色在预设时间内的脚部高度。

在本公开的一种示例性实施例中,所述骨骼运动参数包括所述虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度,根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态,包括:

根据虚拟角色的身体结构分别确定脊椎骨弯曲角度系数和头骨弯曲角度系数;

根据所述虚拟角色在行走过程中的置空脚确定所述脊椎骨和头骨的弯曲方向;

根据所述脊椎骨弯曲角度系数和所述第一映射关系调整所述脊椎骨相对其父骨骼的弯曲角度;

根据所述头骨弯曲角度系数和所述第一映射关系调整所述头骨相对其父骨骼的弯曲角度。

在本公开的一种示例性实施例中,所述骨骼运动参数包括所述虚拟角色在预设时间内脚部高度,根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态,包括:

确定所述虚拟角色的脚部在所述预设时间内的运动方向;

根据所述第二重力参数和所述运动方向利用所述第二映射关系调整所述虚拟角色在预设时间内的脚部高度。

在本公开的一种示例性实施例中,所述骨骼运动参数包括所述虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度,根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态,包括:

根据虚拟角色的身体结构分别确定脊椎骨弯曲角度系数和头骨弯曲角度系数;

根据所述虚拟角色在行走过程中的置空脚确定所述脊椎骨和头骨的弯曲方向;

根据所述脊椎骨弯曲角度系数和所述第二映射关系调整所述脊椎骨相对其父骨骼的弯曲角度;

根据所述头骨弯曲角度系数和所述第二映射关系调整所述头骨相对其父骨骼的弯曲角度。

在本公开的一种示例性实施例中,所述方法还包括:

获取所述虚拟角色在所述初始重力加速度下的初始运动速度;

在所述第一重力参数大于1时,根据所述第一映射关系增大所述虚拟角色的整体运动速度;

在所述第一重力参数小于1时,根据所述第一映射关系减小所述整体运动速度;

在所述第二重力参数大于1时,根据所述第二映射关系增大所述整体运动速度;

在所述第二重力参数小于1时,根据所述第二映射关系减小所述整体运动速度。

根据本公开的一个方面,提供一种虚拟角色骨骼动画控制装置,包括:

参数确定模块,用于确定虚拟角色所在虚拟环境的第一重力参数;

第一计算模块,用于根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数;

第一调整模块,用于根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态

第二计算模块,用于响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数;

第二调整模块,用于根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。

根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述任意一项所述的虚拟角色骨骼动画控制方法。

根据本公开的一个方面,提供一种电子设备,包括:

处理器;以及

存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述任意一项所述的虚拟角色骨骼动画控制方法。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开的一种实施例所提供的虚拟角色骨骼动画控制中,通过

确定虚拟角色所在虚拟环境的第一重力参数;根据第一重力参数确定虚拟角色的第一骨骼运动参数;根据第一骨骼运动参数控制虚拟角色的目标骨骼动画中的骨骼运动形态;响应虚拟角色的第一重力参数变化为第二重力参数,根据第二重力参数确定虚拟角色的第二骨骼运动参数;根据第二骨骼运动参数控制虚拟角色的目标骨骼动画中的骨骼运动形态;其中,第一骨骼运动参数不同于第二骨骼运动参数。相较于现有技术,一方面,可以根据重力参数调整骨骼运动参数,无需提前制作,在遇到新的重力环境时能够快速响应;另一方面,无需人为制作不同的骨骼运动参数,减少了人力资源的浪费,同时能够减少由于人为失误造成的误差。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出本公开示例性实施例中虚拟角色骨骼动画控制方法的流程图;

图2示意性示出本公开示例性实施例中第一比例系数大于1且脚步运动为抬起时脚部高度与时间的曲线图;

图3示意性示出本公开示例性实施例中第一比例系数大于1且脚步运动为落下时脚部高度与时间的曲线图;

图4示意性示出本公开示例性实施例中第一比例系数小于1且脚步运动为抬起时脚部高度与时间的曲线图;

图5示意性示出本公开示例性实施例中第一比例系数小于1且脚步运动为落下时脚部高度与时间的曲线图;

图6示意性示出本公开示例性实施例中在虚拟角色运动时脊椎骨和头骨的弯曲结构图;

图7示意性示出本公开示例性实施例中第一比例系数大于1时虚拟角色的运动结构图;

图8示意性示出本公开示例性实施例中第一比例系数小于1时虚拟角色的运动结构图;

图9示意性示出本公开示例性实施例中一种虚拟角色骨骼动画控制装置的组成示意图;

图10示意性示出了适于用来实现本公开示例性实施例的电子设备的计算机系统的结构示意图;

图11示意性示出了根据本公开的一些实施例的计算机可读存储介质的示意图。

具体实施方式

现在将参照附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

在本示例性实施例中,首先提供了一种虚拟角色骨骼动画控制方法,参照图1中所示,上述的虚拟角色骨骼动画控制方法可以包括以下步骤:

s110,确定虚拟角色所在虚拟环境的第一重力参数;

s120,根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数;

s130,根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态;

s140,响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数;

s150根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。

根据本示例性实施例中所提供的虚拟角色骨骼动画控制方法中,相较于现有技术,一方面,可以根据重力参数调整骨骼运动参数,无需提前制作,在遇到新的重力环境时能够快速响应;另一方面,无需人为制作不同的骨骼运动参数,减少了人力资源的浪费,同时能够减少由于人为失误造成的误差。

下面,将结合附图及实施例对本示例性实施例中的虚拟角色骨骼动画控制方法的各个步骤进行更详细的说明。

步骤s110,确定虚拟角色所在虚拟环境的第一重力参数。

在本公开的一种示例实施例中,可以首先获取所述虚拟角色所在虚拟环境的第一重力加速度。

在本公开的一种示例实施方式中,虚拟角色可以是游戏中的角色,也可以是动画中角色,其中该角色可以是人物、动物等,在本示例实施方式中不做具体限定。

在本示例实施方式中,第一重力加速度可以是系统给上述虚拟角色所在的虚拟环境设置的重力加速度。

在本示例实施方式中,在完成第一重力加速度的获取之后,可以计算第一重力加速度与初始重力加速度之间的第一比例系数,其中,所述初始重力加速度为地球表面的平均重力加速度。

在本公开的一种示例实施方式中,初始重力加速度为地球表面的平均重力加速度,可以定义为9.8m/s2,也可以定义为10m/s2,在本示例实施方式中不做具体限定。计算上述第一重力加速度和初始重力加速度的第一比例系数。

步骤s120,根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数。

在本公开的一种示例实施方式中,第一骨骼运动参数可以包括虚拟角色在预设时间内脚部高度、虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度以及虚拟角色的整体运动速度中的至少一种。

在本公开的一种示例实施方式中,可以首先获取虚拟角色在初始重力加速度下的初始运动参数,并根据初始运动参数获取预设参数,进而根据预设参数建立骨骼运动参数和比例关系之间的函数关系。

在本示例实施方式中,可以以上述虚拟角色为人物为例进行说明,可以首先确定虚拟角色的脚部在预设时间内的运动方向,运动方向可以是抬起或落下。

在本示例实施方式中,当虚拟角色的脚部抬起时,可以根据上述第一比例系数建立骨骼运动参数与第一重力加速度之间的函数关系。分别建立第一比例系数大于1且运行方向为抬起、第一比例系数大于1且运行方向为落下、第一比例系数小于1且运行方向为抬起以及第一比例系数小于1且运行方向为落下时骨骼运动参数与第一重力加速度之间的函数关系。

在本公开的一种示例实施方式中,可以首先建立第一比例系数大于1时,即第一重力加速度大于初始重力加速度虚拟角色在预设时间内脚部高度与第一重力加速度之间的函数关系,在上述第一比例系数大于1时,当脚部抬起时,使每一帧的脚部的高度都比初始动作在同一时刻更低一些。而当脚部落下时,则使每一帧脚部的高度都比初始动作在同一时刻更高一些。也就是说,抬脚和落脚的速度,由初始动作的匀速变化变为先慢后快,以此便能显示出步履沉重。

在本示例实施方式中,参照图2所示,图中曲线21为在初始重力加速度下初始运动参数,获取的预设参数可以包括脚部高度在时刻0时为0,在时刻t时抬起到最高处h。

在本示例实施方式中,参照图2所示,脚部抬起时,脚部高度在时刻0时为0,在时刻t时抬起到最高处h,其中,在不同的重力参数下,在0时和t时的高度均相同,而在时刻0到t之间,则与初始动作有区别,首先,可以先确定一个满足时刻0和t时,高度为0和h的凹函数来实现时刻0到t之间脚部高度的变化先慢后快,采用凹函数能够体现步履沉重,如函数但是,因为选择的曲线还要体现重力增加的不同程度的区别,可以采用g来表示上述第一比例系数,即表示当前第一重力加速度与初始重力加速度的比值。所以,可以建立函数作为虚拟角色在预设时间内脚部高度与第一比例系数之间的第一函数关系。其中,f(x)表示脚部高度,x表示时间,h表示虚拟角色脚部在t时刻时的脚部高度,g来表示上述第一比例系数。是上述比重关系第一重力加速度与初始为重力加速度的比值。其中图2中21代表g取1时的曲线,图中22代表g取1.5时的曲线,图中23代表g取2时的曲线。

需要说明的是,在本示例实时方式中,建立第一函数关系时,选取的凹函数能够满足时刻0和t时,高度分别为0和h即可,在本示例实施方式中不做具体限定,即第一函数关系可以具有不同的表达形式,在本示例实施方式中不做具体限定。

在本示例实施方式中,第一比例系数g的取值可以是1.5,也可以是如2、2.3、3等其他数值,在本示例实施方式中不做具体限定。

在本示例实施方式中,可以建立第一比例系数大于1且运行方向为落下时的拟角色在预设时间内脚部高度与第一重力加速度之间的函数关系

参照图3所示,图中曲线31为在初始重力加速度下初始运动参数,获取的预设参数可以包括脚部高度在时刻0时为h,在时刻t时抬起到最高处0。

参照图3所示,脚部落下时,脚部高度在时刻0时为h,在时刻t时落下到最低处0,其中,在不同的重力参数下,在0时和t时的高度均相同,而在时刻0到t之间,则与初始动作有区别,首先,可以先确定一个满足时刻0和t时,高度为h和0的凸函数来实现时刻0到t之间脚部高度的变化先慢后快,此时,采用凸函数能够体现步履沉重,如函数因为选择的曲线还要体现重力增加的不同程度的区别,可以采用g来表示上述第一比例系数,即表示当前第一重力加速度与初始重力加速度的比值。所以,可以建立函数作为虚拟角色在预设时间内脚部高度与第一比例系数之间的第二函数关系。其中,f(x)表示脚部高度,x表示时间,h表示虚拟角色脚部在t时刻时的脚部高度,g来表示上述第一比例系数。是上述比重关系第一重力加速度与初始为重力加速度的比值。其中图3中31代表g取1时的曲线,图3中32代表g取1.5时的曲线,图3中33代表g取2时的曲线。

需要说明的是,在本示例实时方式中,建立第二函数关系时,选取的凸函数能够满足时刻0和t时,高度分别为h和0即可,在本示例实施方式中不做具体限定,即第二函数关系可以具有不同的表达形式,在本示例实施方式中不做具体限定。

在本示例实施方式中,第一比例系数g的取值可以是1.5,也可以是如2、2.3、3等其他数值,在本示例实施方式中不做具体限定。

在本公开的一种示例实施方式中,还可以建立第一比例系数小于1时,即第一重力加速度小于初始重力加速度虚拟角色在预设时间内脚部高度与第一重力加速度之间的函数关系。当脚部抬起时,使每一帧的脚部的高度都比初始动作在同一时刻更高一些。而当脚部落下时,则使每一帧脚部的高度都比初始动作在同一时刻更低一些。也就是说,抬脚和落脚的速度,由初始动作的匀速变化变为先快后慢,以此便能显示出步履轻盈。

在本示例实施方式中,参照图4所示,图中曲线41为在初始重力加速度下初始运动参数,获取的预设参数可以包括脚部高度在时刻0时为0,在时刻t时抬起到最高处h。脚部抬起时,脚部高度在时刻0时为0,在时刻t时抬起到最高处h,其中,在不同的重力参数下,在0时和t时的高度均相同,而在时刻0到t之间,则与初始动作有区别,首先,可以先确定一个满足时刻0和t时,高度为0和h的凸函数来实现时刻0到t之间脚部高度的变化先快后慢,此时,采用凸函数能够体现步履轻盈,如函数函数。同样,因为选择的曲线还要体现重力增加的不同程度的区别,可以采用g来表示上述第一比例系数,即表示当前第一重力加速度与初始重力加速度的比值。所以,可以建立函数作为虚拟角色在预设时间内脚部高度与第一比例系数之间的第三函数关系。其中,f(x)表示脚部高度,x表示时间,h表示虚拟角色脚部在t时刻时的脚部高度,g来表示上述第一比例系数。是上述比重关系第一重力加速度与初始为重力加速度的比值。其中图4中41代表g取1时的曲线,图4中42代表g取0.75时的曲线,图4中43代表g取0.5时的曲线。

需要说明的是,在本示例实时方式中,建立第三函数关系时,选取的凸函数能够满足时刻0和t时,高度分别为0和h即可,在本示例实施方式中不做具体限定,即第三函数关系可以具有不同的表达形式,在本示例实施方式中不做具体限定。

在本示例实施方式中,参照图5所示,图中曲线51为在初始重力加速度下初始运动参数,获取的预设参数可以包括脚部高度在时刻0时为h,在时刻t时抬起到最高处0。

脚部落下时,脚部高度在时刻0时为h,在时刻t时落下到最低处0,其中,在不同的重力参数下,在0时和t时的高度均相同,而在时刻0到t之间,则与初始动作有区别,首先,可以先确定一个满足时刻0和t时,高度为h和0的凹函数来实现时刻0到t之间脚部高度的变化先快后慢,此时,采用凹函数能够体现步履轻盈,如函数因为选择的曲线还要体现重力增加的不同程度的区别,可以采用g来表示上述第一比例系数,即表示当前第一重力加速度与初始重力加速度的比值。所以,可以建立函数作为虚拟角色在预设时间内脚部高度与第一比例系数之间的第四函数关系。其中,f(x)表示脚部高度,x表示时间,h表示虚拟角色脚部在t时刻时的脚部高度,g来表示上述第一比例系数。是上述比重关系第一重力加速度与初始为重力加速度的比值。其中图5中51代表g取1时的曲线,图5中52代表g取0.75时的曲线,图5中53代表g取0.5时的曲线。

需要说明的是,在本示例实时方式中,建立第四函数关系时,选取的凹函数能够满足时刻0和t时,高度分别为h和0即可,在本示例实施方式中不做具体限定,即第四函数关系可以具有不同的表达形式,在本示例实施方式中不做具体限定。

在本示例实施方式中,第一比例系数g的取值可以是0.75,也可以是如0.5、0.2、0.1等其他正数,在本示例实施方式中不做具体限定。

在本公开的一种示例实施方式中,以上述骨骼运动参数为虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度为例进行详细说明,在本示例实施方式可以首先第一比例系数大于1时虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度和第一重力加速度之间的函数关系。

首先确定虚拟角色的置空脚,以确定弯曲方向,即角色身体在右脚抬起时向左弯曲,在左脚抬起时身体向右弯曲。同时,腰部还要向前弯曲。

在本示例实施方式中,参照图6所示,建立当右脚抬起时脊椎骨第二节2和第三节3的弯曲角度与第一比例系数之间的第五函数关系,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上额外向左弯曲。弯曲的角度依据当前的参考重力的值而定,建立第五函数关系α1=a×(g–1.0)计算调整角度,其中,g表示上述第一比例系数,a表示弯曲角度系数,可以是一个表示角度的常量,如10度,a也可以根据需求自定义。其中,第五函数关系的表现形式可以包括多种,即可以不采用弯曲角度系数来计算弯曲角度,只要能够分别计算上述脊椎骨第二节2和第三节3的弯曲角度即可,在本示例实施方式中不做具体限定。

在本示例实施方式中,建立头骨的弯曲角度与第一比例系数之间的函数关系,头骨4相对其父骨骼即脊椎骨第三节3向右弯,建立第六函数关系α2=b×(g–1.0)计算调整角度,其中,b表示弯曲角度系数,可以是一个表示角度的常量,如20度,b也可以根据需求自定义。其中,第六函数关系的表现形式可以包括多种,只要能够计算头骨的弯曲角度即可,在本示例实施方式中不做具体限定。

当左脚抬起时,脊椎骨和头骨的弯曲角度计算相同,但弯曲方向刚好相反。因次,此处不再赘述。

同时,修改脊椎骨第二节2和第三节3,让其分别相对其父骨骼第一节1和第二节2在初始动作的基础上额外前弯曲,以表现弯腰效果。弯曲的角度依据当前的第一重力加速度的值而定,建立第七函数关系α3=c×(g–1.0)计算向前弯曲角度,其中,c表示弯曲角度系数,可以是一个表示角度的常量,如10度,c也可以根据需求自定义。其中,第七函数关系的表现形式可以包括多种,只要能够计算脊椎骨第二节2和第三节3的向前弯曲角度即可,在本示例实施方式中不做具体限定。

在本公开的一种示例实施方式中,还可以对虚拟角色的整体运动速度进行调整,在上述第一比例系数大于1时,需要修改角色动画播放速度、角色前进速度,以一定比例使其比初始动作较慢。在上述第一比例系数小于1时,需要修改角色动画播放速度、角色前进速度,以一定比例使其比初始动作较快。

设当前重力相对地球重力的比值为g,可以建立第八函数关系计算速度系数来完成对虚拟角色的整体运动速度进行调整控制,其中,第八函数关系为:

其中,m为第一比例系数大于1时最小速度系数,满足0<m<1.0。即无论重力增大为多少,角色的动画播放速度和前进速度的最小值为初始重力加速度下速度的m倍。

n为第一比例系数小于1时的最大速度系数,满足1.0<n。即无论重力减小为多少,角色的整体运动速度,即动画播放速度和前进速度的最大值为初始重力加速度下速度的n倍。

在步骤s130中,根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态。

在本示例实施方式中,第八函数关系的表达方式可以包括多种,只要能够完成对速度系数的计算即可,在本示例实施方式中不做特殊限定。

在本公开的一种示例实施方式中,可以首先确认虚拟角色的脚步在预设时间内的运动方向,并根据第一映射关系、第一比例关系调整虚拟角色在预设时间内的脚部高度。

在本示例实施方式中,当上述第一比例系数大于1且运行方向为抬起时,可以采用第一函数关系调整虚拟角色在预设时间内的脚部高度;当第一比例系数大于1且运行方向为落下时,可以采用第二函数关系调整虚拟角色在预设时间内的脚部高度,当第一比例系数小于1且运行方向为抬起时,可以采用第三函数关系调整虚拟角色在预设时间内的脚部高度;当第一比例系数小于1且运行方向为落下时,可以采用第四函数关系调整虚拟角色在预设时间内的脚部高度。

在本示例实施方式中,当骨骼运动参数包括虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度是,可以首先虚拟角色的身体结构分别确定脊椎骨弯曲角度系数和头骨弯曲角度系数,即上述a、b、c的值,然后确定虚拟角色的置空脚,即虚拟角色哪只脚抬起。

当右脚抬起,参照图6所示,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上额外向左弯曲。弯曲的角度依据当前的参考重力的值而定,弯曲角度可以采用上述第五函数关系计算得到。头骨4相对其父骨骼即脊椎骨第三节3向右弯曲,弯曲角度可以采用过上述第六函数关系计算得到。

当左脚抬起时,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上额外向右弯曲。弯曲的角度依据当前的参考重力的值而定,弯曲角度可以采用上述第五函数关系计算得到。头骨4相对其父骨骼即脊椎骨第三节3向左弯曲,弯曲角度可以采用过上述第六函数关系计算得到。

同时,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上会向前弯曲,具体弯曲角度可以采用过上述第七函数关系计算得到。

在本公开的一种示例实施方式中,在上述第一比例系数大于等于1是,是的虚拟角色的每一步均由脚掌落地,且在停止一静止时间后,进行下一步,以使得能够更逼真地表现重力增大时的步履沉重。

在本示例实施方式中,静止时间可以是0.05秒,也可以是0.02s,h还可以是比如0.08s、0.1s或者更大,在本示例实施方式中不做具体限定。

在本示例实施方式中,参照图7和图8所示,本方案实时检测虚拟环境的第一重力加速度,并调整虚拟角色的骨骼运动参数,使得虚拟角色的运动状态更加符合实际,例如,在第一重力加速度大于初始重力加速度时,虚拟角色的运动状态呈现如图7所示的步履沉重的状态,在第一重力加速度小于初始重力加速度时,虚拟角色的运动状态呈现如图8所示的步伐轻盈的状态。且无需人为制作不同的骨骼运动参数,减少了人力资源的浪费。

在步骤s140中,响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数。

在本公开的一种示例实施方式中,实时检测用户重力参数的变化,当虚拟角色的重力参数由第一重力参数变化为第二重力参数时,根据第二重力参数确定虚拟角色的第二骨骼运动参数。

具体而言,计算第二重力加速度与初始重力加速度之间的第二比例系数,其中,所述初始重力加速度为地球表面的平均重力加速度。

在本公开的一种示例实施方式中,初始重力加速度为地球表面的平均重力加速度,可以定义为9.8m/s2,也可以定义为10m/s2,在本示例实施方式中不做具体限定。计算上述第二重力加速度和初始重力加速度的第二比例系数。

在本公开的一种示例实施方式中,第二骨骼运动参数可以包括虚拟角色在预设时间内脚部高度、虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度以及虚拟角色的整体运动速度中的至少一种。

在本公开的一种示例实施方式中,可以首先获取虚拟角色在初始重力加速度下的初始运动参数,并根据初始运动参数获取预设参数,进而根据预设参数建立骨骼运动参数和比例关系之间的函数关系。

在本示例实施方式中,可以以上述虚拟角色为人物为例进行说明,可以首先确定虚拟角色的脚部在预设时间内的运动方向,运动方向可以是抬起或落下。

在本示例实施方式中,当虚拟角色的脚部抬起时,可以根据上述第二比例系数建立骨骼运动参数与第二重力加速度之间的函数关系。分别建立第二比例系数大于1且运行方向为抬起、第二比例系数大于1且运行方向为落下、第二比例系数小于1且运行方向为抬起以及第二比例系数小于1且运行方向为落下时骨骼运动参数与第二重力加速度之间的函数关系。

在本公开的一种示例实施方式中,可以首先建立第二比例系数大于1时,即第二重力加速度大于初始重力加速度虚拟角色在预设时间内脚部高度与第二重力加速度之间的函数关系,在上述第二比例系数大于1时,当脚部抬起时,使每一帧的脚部的高度都比初始动作在同一时刻更低一些。而当脚部落下时,则使每一帧脚部的高度都比初始动作在同一时刻更高一些。也就是说,抬脚和落脚的速度,由初始动作的匀速变化变为先慢后快,以此便能显示出步履沉重。

具体如何根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数的方式与根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数的步骤相同,具体可参照步骤s120,此处不再赘述。

在步骤s150中,根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。

在本公开的一种示例实施方式中,可以首先确认虚拟角色的脚步在预设时间内的运动方向,并根据第二映射关系、第二比例关系调整虚拟角色在预设时间内的脚部高度。

在本示例实施方式中,当上述第二比例系数大于1且运行方向为抬起时,可以采用第一函数关系对应的第二重力参数的函数关系调整虚拟角色在预设时间内的脚部高度;当第二比例系数大于1且运行方向为落下时,可以采用第二函数关系对应的第二重力参数的函数关系调整虚拟角色在预设时间内的脚部高度,当第二比例系数小于1且运行方向为抬起时,可以采用第三函数关系对应的第二重力参数的函数关系调整虚拟角色在预设时间内的脚部高度;当第二比例系数小于1且运行方向为落下时,可以采用第四函数关系对应的第二重力参数的函数关系调整虚拟角色在预设时间内的脚部高度。

在本示例实施方式中,当骨骼运动参数包括虚拟角色在行走时脊椎骨和头骨的弯曲方向和角度是,可以首先虚拟角色的身体结构分别确定脊椎骨弯曲角度系数和头骨弯曲角度系数,即上述a、b、c的值,然后确定虚拟角色的置空脚,即虚拟角色哪只脚抬起。

当右脚抬起,参照图6所示,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上额外向左弯曲。弯曲的角度依据当前的参考重力的值而定,弯曲角度可以采用上述第五函数关系对应的第二重力参数的函数关系计算得到。头骨4相对其父骨骼即脊椎骨第三节3向右弯曲,弯曲角度可以采用过上述第六函数关系对应的第二重力参数的函数关系计算得到。

当左脚抬起时,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上额外向右弯曲。弯曲的角度依据当前的参考重力的值而定,弯曲角度可以采用上述第五函数关系对应的第二重力参数的函数关系计算得到。头骨4相对其父骨骼即脊椎骨第三节3向左弯曲,弯曲角度可以采用过上述第六函数关系对应的第二重力参数的函数关系计算得到。

同时,脊椎骨第二节2和第三节3分别相对其父骨骼即第一节1和第二节2在初始动作的基础上会向前弯曲,具体弯曲角度可以采用过上述第七函数关系对应的第二重力参数的函数关系计算得到。

在本公开的一种示例实施方式中,在上述第一比例系数大于等于1是,是的虚拟角色的每一步均由脚掌落地,且在停止一静止时间后,进行下一步,以使得能够更逼真地表现重力增大时的步履沉重。

在本示例实施方式中,静止时间可以是0.05秒,也可以是0.02s,h还可以是比如0.08s、0.1s或者更大,在本示例实施方式中不做具体限定。

在本示例实施方式中,参照图7和图8所示,本方案实时检测虚拟环境的第二重力加速度,并调整虚拟角色的骨骼运动参数,使得虚拟角色的运动状态更加符合实际,例如,在第二重力加速度大于初始重力加速度时,虚拟角色的运动状态呈现如图7所示的步履沉重的状态,在第一重力加速度小于初始重力加速度时,虚拟角色的运动状态呈现如图8所示的步伐轻盈的状态。且无需人为制作不同的骨骼运动参数,减少了人力资源的浪费。

以下介绍本公开的装置实施例,可以用于执行本公开上述的虚拟角色骨骼动画控制方法。此外,在本公开的示例性实施方式中,还提供了一种虚拟角色骨骼动画控制装置。参照图9所示,所述虚拟角色骨骼动画控制装置900包括:参数确定模块910,第一计算模块920、第一调整模块930、第二计算模块940和第二调整模块950。

其中,所述参数确定模块910可以用于确定虚拟角色所在虚拟环境的第一重力参数;所述第一计算模块920可以用于根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数;第一调整模块930可以用于根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态;第二计算模块940可以用于响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数;第二调整模块950可以用于根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。。

由于本公开的示例实施例的虚拟角色骨骼动画控制装置的各个功能模块与上述虚拟角色骨骼动画控制方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的虚拟角色骨骼动画控制方法的实施例。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,在本公开的示例性实施例中,还提供了一种能够实现上述虚拟角色骨骼动画控制方法的电子设备。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。

下面参照图10来描述根据本公开的这种实施例的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,所述处理单元1010可以执行如图1中所示的s110,确定虚拟角色所在虚拟环境的第一重力参数;s120,根据所述第一重力参数确定所述虚拟角色的第一骨骼运动参数;s130,根据所述第一骨骼运动参数控制所述虚拟角色的目标骨骼动画中的骨骼运动形态;s140,响应所述虚拟角色的第一重力参数变化为第二重力参数,根据所述第二重力参数确定所述虚拟角色的第二骨骼运动参数;s150,根据所述第二骨骼运动参数控制所述虚拟角色的所述目标骨骼动画中的所述骨骼运动形态;其中,第一骨骼运动参数不同于所述第二骨骼运动参数。

又如,所述的电子设备可以实现如图1所示的各个步骤。

存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(rom)1023。

存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1000也可以与一个或多个外部设备1070(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。

参照图11,描述了根据本公开的实施例的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。

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