三维人体模型运动合成的方法、装置、设备及介质与流程

文档序号:18122213发布日期:2019-07-10 09:42阅读:237来源:国知局
三维人体模型运动合成的方法、装置、设备及介质与流程

本发明属于计算机动画技术领域,尤其涉及一种三维人体模型的运动合成方法。



背景技术:

随着虚拟现实技术的快速发展,计算机动画现在已经在人们的生活中的各个领域占有重要地位,其中,通过人体运动数据去建立的动画也有很大的市场需求。近年来,构建人体运动的手段已经趋于成熟,例如运动捕捉以及一些3d建模工具均可以对人体运动数据进行获取和编辑。但通过人工的方式得到的运动数据毕竟是有限的,并且在人力、物力等方面均有一定的成本。因此,如何高效的对运动数据进行复用是非常具有研究意义的。

在运动合成的过程中,若两段运动的相似度越高,则越容易进行运动合成,运动相似性度量就是用于度量两段不同的运动之间的相似程度,即使是在两段差异较大的运动之间进行运动合成,为了使它们合成的效果逼真、平滑,也可以通过运动相似性度量去在两段运动序列中各自选取一段相似度最高的片段,通过这两个片段去合成,从而得到良好的合成效果。目前,已有一些基于数值的度量方法已经实现,主要针对数值方面对两段运动序列进行度量,从而为运动合成选取合适的过渡片段,让合成的运动保持真实感和平滑性。衡量数值上的相似目前已有多种方法,基本都是基于距离的相似性度量,但基于数值的相似性度量在运动逻辑性判别上有一定缺陷,目前未有统一标准,不易判断运动逻辑相似性的问题。

综上所述,目前运动合成尚未提出有效判断运动逻辑相似性问题的解决方案。



技术实现要素:

本发明实施例提供了一种三维人体模型运动合成的方法、装置、设备及介质,以至少解决现有技术中基于数值的相似度度量不易判断运动逻辑相似性的问题。

第一方面,本发明实施例提供了一种三维人体模型运动合成的方法,包括以下步骤:

获取两段运动序列作为合成材料;

对所述获取的两段运动序列进行数值相似性度量,得到所述获取的两段运动序列中相似度最大的片段;

对所述获取的两段运动序列进行逻辑相似性度量;

基于逻辑相似性度量结果对所述获取的两段运动序列进行逻辑相似性判定,判定两段运动序列是否属于同一类运动;

对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行合成,形成合成后的运动序列;

其中,如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡段进行连接合成;如果所述两段运动序列都不是周期运动序列时,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡段的过渡帧进行连接合成。

第二方面,本发明实施例提供了一种基于运动逻辑的三维人体模型运动合成装置,所述装置包括:

获取模块,用于获取两段运动序列作为合成材料;

度量模块,用于对所述获取的两段运动序列进行数值相似性度量,得到所述获取的两段运动序列中相似度最大的片段以及用于对所述获取的两段运动序列进行逻辑相似性度量;

相似性判定模块,用于根据逻辑相似性度量结果对所述获取的两段运动序列进行逻辑相似性判定,判定两段运动序列是否属于同一类运动;

逻辑不相似合成模块,用于对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行合成,形成合成后的运动序列;其中,如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡段进行连接合成;如果所述两段运动序列都不是周期运动序列时,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡段的过渡帧进行连接合成。

第三方面,本发明实施例提供了一种三维人体模型运动合成设备,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如上述实施方式中第一方面的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。

本发明实施例提供的三维人体模型运动合成的方法、装置、设备及介质,采用获取两段运动序列作为合成材料;对获取的两段运动序列进行运动相似性度量;判定两段运动序列的相似性;利用逻辑相似性度量结果和数值相似性度量结果,综合判定获取的两段运动序列的相似性,是否属于同一类运动;对判定的符合同一类运动的两段运动序列利用插值技术来进行逻辑相似的两段运动序列之间的合成,形成合成后的运动序列;对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行逻辑不相似的两段运动序列之间的合成,形成合成后的运动序列;将合成后的运动序列数据写入对应的骨骼节点依赖库中,完成运动合成序列的输出的方式,解决了基于数值的相似度度量不易判断运动逻辑相似性的问题,提高选取相似运动片段的相似率,从而提升运动合成的成功率和运动效果。避免了运动合成技术中常见的失真现象。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明一个实施例的三维人体模型运动合成方法的流程图;

图2示出了本发明另一个实施例的三维人体模型运动合成方法的流程图;

图3示出了本发明一个实施例的人体骨架关节示意图

图4示出了本发明一个实施例的单独运动模板生成过程图

图5示出了本发明一个实施例的动态时间规整图

图6示出了本发明一个实施例的过渡运动向量偏移图

图7示出了本发明一个实施例的三维人体模型运动合成装置示意图;

图8示出了本发明一个实施例的三维人体模型运动合成设备示意图;

图9示出了本发明一个实施例的虚拟人运动展示效果图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

在本发明一个实施例中,提供一种三维人体模型运动合成的方法。图1示出了本发明一个实施例的三维人体模型运动合成方法的流程图,如图1所示,该流程包括以下步骤:

获取两段运动序列作为合成材料;

对所述获取的两段运动序列进行数值相似性度量,得到所述获取的两段运动序列中相似度最大的片段;

对所述获取的两段运动序列进行逻辑相似性度量;

基于逻辑相似性度量结果对所述获取的两段运动序列进行逻辑相似性判定,判定两段运动序列是否属于同一类运动;

对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行合成,形成合成后的运动序列;

其中,如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡段进行连接合成;如果所述两段运动序列都不是周期运动序列时,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡段的过渡帧进行连接合成。

可选地,所述方法还包括:对判定出的属于同一类运动的两段运动序列,利用插值技术进行合成,形成合成后的运动序列。如图2所示。

可选地,所述对获取的两段运动序列进行逻辑相似性度量,包括以下步骤:

对所述获取的两段运动序列进行降维操作,提取关键关节点;

对关键关节点的关键属性进行特征提取;

利用运动模板针对所提取的特征对所述获取的运动序列进行运动的逻辑相似性度量。

可选地,所述利用运动模板对所述获取的运动序列进行运动的逻辑相似性度量,具体包括:

根据不同运动类型下关节点的关节影响度进行运动模板定义;

根据所定义的运动模板,为全部运动类型定义具有n个属性的统一运动模板t;

所述统一运动模板t采用如下公式进行计算:

t=(-1)c,n=0

其中,t代表具有n个属性的统一运动模板,c代表运动周期,取值范围是1或2,1指非周期运动,2指周期运动,xi取值范围为0和1之间的值域,ωi代表该属性对应的权重,的值等于n;ai(xi)为属性判定函数,判定该模板中的xi属性是否符合模板中对该属性的定义,range(xi)表示被度量的运动序列中的xi属性的范围,reclose(xi,m)表示被度量运动序列中的某一关键关节点的该属性与模板t中对应的关键关节点的该属性的取值范围的重合范围;

将所述选取的两段运动序列代入统一运动模板t分别计算,得到逻辑相似性度量结果。

可选地,所述基于逻辑相似性度量结果对所述获取的两段运动序列进行逻辑相似性判定,判定两段运动序列是否属于同一类运动,具体包括:

根据逻辑相似性度量结果,判定获取的两段运动序列是否属于周期运动序列;如果t=1,表示属于周期运动,如果t=-1表示属于非周期运动;

根据逻辑相似性度量结果,判定获取的两段运动序列是否与统一运动模板属于同类运动;如果逻辑相似性度量结果的绝对值接近1,则判定获取的两段运动序列与统一运动模板属于同类运动;如果逻辑相似性度量结果的绝对值为0,则判定获取的两段运动序列与统一运动模板不属于同类运动;

如果获取的两段运动序列与统一运动模板属于同类运动,则对其模型文件打上该统一运动模板的标签;如果获取的两段运动序列与统一运动模板不属于同类运动,则对其模型文件打上周期运动或非周期运动的标签。

可选地,如果希望为某种运动单独定义运动模板,则利用上述公式t针对具体情况再次定义单独运动模板。

可选地,所述获取的两段运动序列进行数值相似性度量,得到所述获取的两段运动序列中相似度最大的片段,具体包括:

采用动态时间归整法,对获取的两段运动序列进行时间对齐操作;

通过帧间欧氏距离计算时间对齐后的两段运动序列的数值相似度值,进而得到所述获取的两段运动序列中相似度最大的片段。

可选地,所述对判定出的属于同一类运动的两段运动序列,利用插值技术进行合成,形成合成后的运动序列,具体包括:

对获取的两段运动序列采用动态时间归整法进行时间对齐操作;

对经过时间对齐操作后的两段运动序列对应帧的根关节点位置进行两两加权插值;

对待合成的两段运动序列对应帧的除根关节点外的其他相同关节点的空间位置进行球面线性插值,获得合成后的运动序列。

可选地,所述对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行合成,形成合成后的运动序列,具体包括:

在选取的两段运动序列中分别选取一个帧,其中一个帧作为凭空生成过渡段的开始帧,另一个帧作为过渡段的结束帧,所述开始帧和结束帧即为过渡帧,对所述两段运动序列进行空间位置及方向对齐;

如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡帧;如果所述获取的两段运动序列都是非周期运动序列,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡帧;

对过渡帧的根关节点进行空间位置对齐操作;

确定过渡段的过渡运动长度;

依据过段帧和过渡运动长度计算过渡段中每一帧下所有关节点的空间位置,也即生成过渡段中每一帧的姿态,完成过渡段的生成;

过渡段的前部接上第一段运动序列的最后一帧,过渡段的尾部接上第二段运动序列的首帧,完成两段运动序列的合成;

将合成后的运动序列转换成为运动序列的单位文件,存入该虚拟人的依赖运动库中。

可选地,所述确定过渡段的过渡运动长度,具体包括:

1)计算平均帧间过渡消耗:

其中d为用于合成的第一段运动序列的平均帧间过渡消耗,m为该序列的帧数;

2)计算过渡运动长度l:

其中,cost(a,b)为选取的两段运动序列的过渡帧之间的帧间距离。

可选地,所述生成过渡段中的每一帧的姿态,具体包括以下步骤;

a)确定两帧过渡帧中根关节点位移;

b)选定根关节点作为处理节点;

c)计算处理节点的全部子节点与下一个子节点构成的骨骼向量,将对应的骨骼向量相减求出该骨骼节点的偏移向量;

d)根据剩余过渡帧数对每一个偏移向量进行平均计算;

e)根据骨骼长度对骨骼向量进行长度归整,将计算得到的骨骼末节点坐标替换对应的原骨骼节点坐标;

f)该节点与其下个子节点构成的骨骼向量的计算在新坐标位置的基础上进行,将其作为新的处理节点,迭代重复步骤c)、d)、e),直至所有骨骼节点在过渡运动中的每一帧的新位置被求出。

可选地,所述运动模板包括跑步、跳跃、爬行、站立、招手、摆手、握拳。

可选地,所述关键关节点用骨骼向量表示。

可选地,所述关键关节点用骨骼向量表示;关键属性包括:关节点朝向、关节点夹角、根关节点位置、整体运动速度、运动周期。

可选地,所述方法应用于vr或ar场景。

下面通过示例对上述实施例进一步进行描述和说明。

在本示例中,如图1、2所示,在运动合成之前,首先需要获取两段运动序列作为合成材料;而为了对用户选取的两段运动序列进行合理的合成操作以保证合成效果,需要对合成材料进行相似方面的度量。运动的相似可分为数值上的相似以及逻辑上的相似,所以为了更好地度量两段运动的相似性,需要把数值和逻辑这两方面都考虑进去,分析和计算出明确的相似性度量数值和性质。

其主要包括以下步骤:

(1)进行降维操作,提取关键关节点;

①因为提供给用户选取的运动序列来自于同一虚拟人依赖库,故处理模型采用相同的骨架层次结构,但是该虚拟人的骨架结构不尽相同,所以需要对骨骼层次结构进行降维操作,通过降维来确定对一段运动序列影响较大的关节点,用这些关节点作为关键关节点,从而进行该虚拟人的特征数据的统计。主要体现人体运动姿态的人体部位由躯干、四肢组成,接下来根据人体关节的特点,可以大致判断出躯干、四肢的运动范围。所以如图3所示,对本发明所采用的人体骨架关节进行命名,并对各骨骼运动区域进行划分,考虑四肢的左右之分,可基本将标准人体骨架分为5个区域。

②经过分析,在上肢部分,肩关节会大幅影响到手臂朝向,其次是肘关节,影响前臂的运动;下肢部分大腿根部关节影响腿部整体朝向,其次是膝关节;在躯干部分,根关节的位置对整体的运动轨迹影响最大,肩关节、大腿根部与躯干的距离及角度变化有限,所以对整体姿态影响不大。通过下表,为虚拟人拥有的每一条对运动影响较大的特征骨骼进行了定义,如表所示关节的定义和骨骼中文名称:

这些用向量来定义的骨骼可以体现骨骼的朝向,为了更好地描述人物的姿态和运动变化,还需增加骨骼间夹角这一属性,定义如下:θ1是b1、b2的夹角,θ2是b2、b3的夹角,θ3是b4、b5的夹角,θ4是b5、b6的夹角,θ5是b7、b8的夹角,θ6是b8、b9的夹角,θ7是b10、b11的夹角,θ8是b11、b12的夹角。

(2)关键的属性进行提取。

①提取特征骨骼朝向,通过定义过的特征骨骼向量来获取。由于朝向是个相对的概念,所以统一将人体骨骼的根关节点(hips)作为空间中的原点,特征骨骼向量bn表示如公式所示,start(bn)是bn起点坐标,end(bn)是bn终点坐标;

bn=end(bn)-start(bn)

②特征骨骼夹角,用以表示人体运动的幅度大小,bi与bj号骨骼的夹角θij通过所示公式利用特征骨骼向量来求出;其中θ1,θ2,θ3,θ4,θ5,θ6,θ7,θ8是这个集合θij中比较特殊的几个角,故而单独列出)

③根关节点位置,根关节点位置变化体现了运动的整体轨迹,其它关节点由于存在互相之间的父子关系、相对位置,它们的位置会随着根关节点的位移而变化,记录下根关节点的位置变化可体现运动的方向性;

④整体运动速度,运动的速度分为两类,一类是人物移动的速度,另一类是人物姿态变化的频率。读取模型中定义每两帧的时间间隔,通过根关节点移动距离和角度变化的幅度去除以时间可以得到这两种速度的值;

⑤运动周期,采取基于数值的方式进行判断,在一段运动序列中逐帧与序列的第一帧计算数值相似度。选取一段运动序列中逐帧zj与序列的第一帧z1,作为一组对比帧bj(z1,zj),并组成对比集合b1;对对比集合b1中的每一组对比进行帧间数值相似性度量,两个关键帧之间的相似性的数值为帧间欧氏距离,最基本的公式如下所示,其中f1和f2表示用来进行比较的具有相同骨骼结构的两帧,f1i、f2i是这两帧中第i个关节点的坐标,n是两帧中包含的关节点个数。当数值相似度d值越小时,表示两帧间相似度越高。

运动序列中逐帧与序列的第一帧计算数值相似度d进行周期分析,判断其是否为周期运动序列,如果是周期运动序列则根据数值周期变化得出周期t;

(3)通过足够的运动数据,归类训练出通用的某个运功类型的运动模板。

在判断合成材料属于哪个运动类型之前,需要进行大量的训练得出相应运动类型的运动模板,使得准备完毕的运动模板类型基本包含跑步、跳跃、爬行等基本类型运动,方便运动合成材料代入所有运动模板进行验证后,有很大概率能够判断出该合成材料属于哪种运动。由于人体不同关节对运动的姿态变化的影响不同,在对一段运动进行模板定义时,要根据关节及关节的夹角在某段运动序列中的重要性分别考虑,因此采取权值分配的方式,为不同关节点赋予不同的权重系数,因为在不同种类的运动中,关节对运动的影响大小会变化;利用信息熵公式计算关节对运动的影响度大小,据此可以得到关节影响度计算公式,其定义如下公式所示,其中p为某关节运动序列,pi是某关节在某一帧中的数据信息,n是序列帧数。

而计算过程可具体分为符合正态分布和不符合正态分布两种情况:

第一种情况:当某一关节在一段运动序列中的波动符合正态分布时,如该正态分布的方差为σ2,则关节影响度可以转化为如下公式求得;

第二种情况:如不符合正态分布,由于方差也可表示数据的波动程度,所以定义f(pi)为对方差的计算;

而后对各关节影响度进行集合,之后按降序排列,如下公式,降序排列后的集合设为t:

t=desc(h(pi))

从集合t中取前m个元素,认为是对运动影响比较大的关节,由于是通过多组运动数据进行统计,会得出多个t集合,统计在不同t集合中取出的m个元素中,各关节出现的次数,次数多的自然对运动影响大,应当分配较高的权值,最终的关节权值按关节统计出现次数的比例进行分配,权值总和为1。如下表举例,利用大量数据对不同运动类型下关键关节点进行统计结果和分析:

由于左右对称的缘故,当前只列出身体一侧关节数据,另一侧同理。未列出的关节权值视为0;

②将前一步根据定义过的模板属性,为全部运动定义一个统一的模板比对公式,后期如果希望为某种运动单独定义模板,可利用该公式针对具体情况再次定义,本步骤后面有在跳跃和行走两种运动类型情况下运动模板对应公式的举例和说明;模板统一公式如下所示,其中t代表具有n个属性的统一模板,c代表运动周期,取值范围是1或2,1指非周期运动,2指周期运动,ai(xi)为属性判定函数,判定该模板中的xi属性是否符合模板中对该属性的定义,只有0和1两个值之间的值域可取,具体的计算方式针对不同的属性可以分别定义,ωi代表该属性对应的权重,的值等于n。

t=(-1)c,n=0

而对于属性判定函数a(x)的选取,由于本发明一般情况下统计的数据为关节或角度出现的范围,判定函数一般用来判定属性的匹配度,计算公式如下所示,其中,分母表示被度量的运动中的x属性的范围,分母表示这个运动中的该属性与模板m中该属性的重合范围大小,它们的比值即作为该属性与模板的匹配值。

以一些人们日常的运动为代表,带有一定常规性的运动包括行走、跳跃等,为了让运动模板的比对更准确,可通过对模板的比对公式中的具体参数进行更改的方式,为这些运动单独定制模板比对公式。某类单独运动的模板,由数据的输入到定义好模板加入模板库的流程,如图4所示。

首先,需要定义行走运动。判断一段运动是否属于行走运动,主要取决于人体下肢的姿态,所以根据之前的特征骨骼定义,可以主要考察这几个骨骼及夹角的数据变化:b7,b8,b9,b10,b11,b12及θ5、θ6、θ7、θ8。根据行走运动的特点,行走属于周期运动,所以c值可以取2。θ5、θ6、θ7、θ8在行走运动过程中均有一个最大值、一个最小值,b7,b8,b9,b10,b11,b12之间的夹角同样属于一定的范围,如果目标运动的各个属性处于这些范围之间,则可认为该运动在这个属性上与模板符合,ai(xi)的具体计算方法也需要根据这些范围进行定义,行走运动模板公式如下所示。

其中twalk是运动模板t行走运动情况下的特殊化,其中,b78、b89、b1011、b1112分别是指b7和b8的朝向的夹角、b8和b9的朝向的夹角、将b10和b11的朝向的夹角、b11和b12的朝向的夹角,而后如果需要,还可以再对跳跃运动定义模板。判断运动序列是否属于跳跃运动不仅取决于人体下肢的姿态,还取决于人体整体在竖直空间上的位移,这一点可由根关节点的运动轨迹来判断,还有足部的节点也一定会有向上的位移,而其他部分骨骼和节点的空间变换不具有周期性,且对整体运动的确定也不具有决定性,所以通过几组跳跃的运动在竖直方向上的位移数据作为关键属性进行记录。如下公式所示,hips代表根关节点位置,lfoot代表左脚位置,rfoot代表右脚位置,tjump代表跳跃运动的自定义模板。

(4)模板对比公式获值分析

①将用户选取的运动合成材料的数据逐一代入事先训练好的运动模板公式t得出结果为-1到1的数值。如果某运动完全符合某模板,由运动模板公式t中求出的值应该为1或-1,1表示该运动是周期运动,-1表示该运动是非周期运动。

②计算结果的绝对值的大小主要取决于运动属性的选取以及计算方式的选取,计算结果越接近这两个值表示这个运动越符合某运动模板,可以看做与这个模板是同类运动,计算结果为0时,则这个运动与模板完全不符。如代入一段运动合成材料入行走和跳跃模板公式,所得值为分别接近于0和-1,表示该段运动合成材料不是行走运动,而是跳跃的非周期运动。

③如认定该运动序列与模板相似,则对其模型文件打上该模板的标签;如不相似,则对其模型文件打上标明该运动为周期或非周期运动的标签。通过标签,就可以明白该运动合成的材料是属于哪种运动或一些基本性质。

(5)采用动态时间归整法计算两段运动序列间的数值相似度,通过设定选取的帧数大小,多次变更起始帧结束帧的方式,找出这些序列中相似度最大的片段,得出两段运动序列的相似度的数值大小,后续步骤中会对这些片段进行操作,这样可以增加处理的精确度;

①采用动态时间归整法,对两段运动序列的材料进行时间对齐操作;

用户选取的合成材料即使取自同一虚拟人依赖库,但可能整体的长度是不同的,如一段为30帧,另一段为40帧,这时候就不方便于两个材料之间数值相似性的计算了,所以需要进行时间对齐操作。假设有两组运动序列q=q1,q2,q3,…,qn和c=c1,c2,c3,…,cm,n和m是它们对应的帧数,然后根据这两组序列的数据构造一个n*m的矩阵m,用来表示两个运动序列在时间上的映射关系,矩阵中的元素代表qi和cj之间的距离,i和j是对应帧的编号,这个元素记为mi,j,距离的计算方式一般采用欧氏距离法,本步骤中④说明如何进行两帧间欧氏距离计算。对矩阵m进行归整处理,也就是在矩阵m中找到最优的匹配路径,使序列q和c的总匹配距离值最小,如下公式所示:

以图5为例,在该矩阵中定义w=<w1,w2,…,wk,…,wk>为归整后的路径,wk为路径中的第k个元素,其中k代表路径长度,k的值可变,用以消除因长度不同对结果造成的影响,可以得知路径的长度范围是m+n-1>k≥max(m,n)。

同时,路径w要满足以矩阵左下角为起点,右上角为终点,并且相连的两点是相邻的条件;

首先计算起点到任意点的最近距离值,从w1=(1,1)开始,以迭代的方式,循环计算路径距离r(i,j)。由于在计算wk=(i,j)k之前的前一项需满足r(i-1,j-1)或r(i-1,j)或r(i,j-1),在三者中选出值最小的一个min{r(i-1,j-1),r(i-1,j),r(i,j-1)}。加上当前距离d(i,j)即为路径最小距离,如下公式所示:

r(i,j)=d(i,j)+min{r(i-1,j-1),r(i-1,j),r(i,j-1)}

则k即为距离k=r(i,j)。将k值带入dtw公式中,对矩阵m进行归整处理,在矩阵m中找到最优的匹配路径;

②通过动态时间归整的思路对序列进行一次对齐操作之后得到新的需要进行度量的运动序列f1和f2,通过类似帧间欧氏距离计算的方式,计算两段帧序列的相似性。如下公式所示,f1和f2表示两段时间序列等长、具有相同骨骼结构的运动序列,f1i,i和f1i,i表示在这两段运动中的第i帧中的第i个关节点坐标,这两段运动中均包含n个帧,n个关节点,所得d(f1,f2)即为两段运动序列的相似值大小;

③选取新运动序列f1中第k帧zk与序列f2的第j帧zj,作为一组对比帧bkj(zk,zj),并组成对比集合b2,含有元素n*n个;

④对对比集合中的每一组对比进行帧间数值相似性度量,两个关键帧之间的相似性的数值为帧间欧氏距离,最基本的公式如下所示,其中f1和f2表示用来进行比较的具有相同骨骼结构的两帧,f1i、f2i是这两帧中第i个关节点的坐标,n是两帧中包含的关节点个数。当d值越小时,表示两帧间相似度越高。经过这几步的计算,用户选取的合成材料间的数值相似性分析所需的结果依据就得到了。

判定两段运动序列的相似性;

利用逻辑相似性度量结果和数值相似性度量结果,综合判定获取的两段运动序列的相似性,是否属于同一类运动;

对判定出的属于同一类运动的两段运动序列,利用插值技术进行合成,形成合成后的运动序列;

(1)两段运动序列之间的整体长度是不一定相同的,如前面进行数值相似性分析之前所做的一样,采用动态时间归整法,对两段运动序列进行时间对齐操作,保证两个材料处理后的时间长度相同,其具体操作过程与前文所提的动态时间规整相同。

(2)整体运动轨迹合成

①人体的根关节的位移体现的是这段运动序列的整体运动轨迹,所以需从根关节点开始进行运动的位移处理,使得逻辑相似运动的运动模板中的整体运动轨迹得到了合成。将待合成的两组运动序列的根关节点位置集合设为p1和p2,其中p1={p1,p2,...,pm},p2={p′1,p′2,...,p′n},两个集合中包含的元素就是在这两段序列中各帧的根关节位置。

②根据对应关系两两插值得到一个新的集合p即为合成后的运动的根关节运动轨迹。如下公式所示,对运动的两帧间可以进行加权插值。其中,p1(x1,y1,z1)是起始帧坐标,p2(x2,y2,z2)是结束帧的坐标,u代表权值,取值范围为0到1,通过人工设定不同的权值来控制插值过渡的速度;

pi(xi,yi,zi)=up1(x1,y1,z1)+(1-u)p2(x2,y2,z2)

(3)局部的姿态融合

①对于合成后的运动在每一帧当中的姿态,对对应姿态进行进一步合成,在待合成序列中进行确定,从而完成这套骨骼树在每一帧的姿态确定;设j1={j1,j2,...,jn}为第一段待合成序列的除根关节点外全部关节点坐标集合,j2={j′1,j′2,...,j′n}为第二段待合成序列的除根关节点外全部关节点坐标集合;

②对每一个对应节点进行球面线性插值,如下公式所示,j1和j2分别是两帧中的对应关节,length表示该关节与其父节点所表示的骨骼长度,将骨骼长度作为球面线性插值的系数,得到的结果j即为生成的节点坐标。

j=slerp(j1,j2,length)

对这套骨骼树在每一帧的姿态进行数据的转换,转换成为运动序列的单位文件,存入该虚拟人的依赖运动库中,可以用于该虚拟人以后的使用。

对判定出的不属于同一类运动的两段运动序列,采用生成过渡运动连接方式进行合成,形成合成后的运动序列;其中如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡段进行连接合成;如果所述两段运动序列都不是周期运动序列时,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡段的过渡帧进行连接合成。

(1)位置对齐

①寻找和处理过渡帧:找到合适的用于连接的过渡帧,在两段运动序列中分别选取一个帧,一个作为凭空生成过渡段的开始帧,一个作为过渡段的结束帧,并且在空间位置以及方向上将两组序列对齐,以保证完成平滑的过渡。在过渡帧的选取上,采用两种不同的处理方式。第一种是当待合成序列其中一组是周期运动或两组都是周期运动时,通过前文中计算两帧的欧氏距离处理,选择距离最小的一组对应帧,作为进行运动连接的过渡帧。第二种是两组序列都是非周期运动,由于两个运动均并没有体现任何规律性,则使用第一个运动的最后一帧与下一个运动的首帧,通过运动连接的方式进行合成。

②因为用于合成的两组运动序列材料在空间中的坐标系不一定一致,在根关节点的位置等方面都不能统一,所以在选取了过渡帧之后要对这两帧前一步取出的开始帧和结束帧进行空间位置对齐操作,主要是将第二段用于合成的过渡帧进行位置上的调整,使其与第一段的过渡帧保持一致,所以需要对根关节点的位置进行一次对齐操作;

(2)过渡段作为补充在两段材料间的又一段运动序列,需要确定过渡运动长度

①求出用于合成的第一个序列材料的平均帧间过渡消耗,也就是对这个序列中每两个相邻帧的距离求平均值,公式如下所示,设该序列一共有m帧。

②为了使过渡运动平滑,通过过渡帧a过渡到过渡帧b间消耗除以合成前第一个序列的平均帧间过渡消耗,求出过渡运动长度l,单位为帧,结果向上取整,如公式下所示,对于过渡长度可以认为进行限制,限定不可以超过10帧,cost(a,b)为选定好的两个序列的过渡帧之间的帧间距离;

生成后续全部过渡运动中的每一帧的姿态

①设过渡运动中的某帧为第k帧,k≤l。首先确定两帧过渡帧中的根关节点位移,位移通过第一个过渡帧在序列中的前n帧的平均根关节点位移求出,限定n小于等于原序列长度的1/5,平均位移乘以过渡运动长度即为过渡运动的总位移l。在过渡帧中的各帧根关节点位置在过渡位移范围内线性变化,第k帧的根关节点位置如公式下所示,其中r为第一个过渡帧的根关节点坐标。

②选定根关节点作为处理节点。

③之前确定的两帧过渡帧开始,求出处理节点的全部子节点与下一个子节点构成的骨骼向量,将对应的骨骼向量相减求出该骨骼的偏移向量,统一用后面运动序列的帧b减去前面运动序列的过渡帧a。

④随后根据剩余过渡运动的帧数对每一个偏移向量进行平均计算,比如新生成的过渡运动中的第一个帧对应的该骨骼向量就由处于前一段运动的过渡帧的骨骼向量加上平均分成的第一段偏移向量构成,如图6所示。

⑤计算出新的骨骼向量后,根据骨骼长度对该向量进行长度上的归整,将计算得到的骨骼末节点坐标替换对应的原骨骼点坐标;

⑥于是该节点与其下个子节点构成的骨骼向量的计算在新坐标位置的基础上进行,将其作为新的处理节点,迭代重复步骤③④⑤,直至所有骨骼节点在过渡运动中的每一帧的新位置被求出。

(4)确定生成后续全部过渡运动中的每一帧的姿态后,转换成为运动序列的单位文件,存入该虚拟人的依赖运动库中,可以用于该虚拟人以后的使用。

另外,还可以将合成后的运动序列数据写入对应的骨骼节点依赖库中,完成运动合成序列的输出。

综上,通过本示例,可实现三维人体模型运动合成。

本发明提出的三维人体模型运动合成方法,提高了选取相似运动片段的相似率,提升了运动合成的成功率,避免了运动失真现象。

在本发明一个实施例中还提供了一种三维人体模型运动合成装置。该装置用于实现上述三维人体模型合成方法。图7示出了本实施例的运动合成装置的结构框图。该三维人体模型运动合成装置包括:

获取模块,用于获取两段运动序列作为合成材料;

度量模块,用于对所述获取的两段运动序列进行数值相似性度量,得到所述获取的两段运动序列中相似度最大的片段以及用于对所述获取的两段运动序列进行逻辑相似性度量;

相似性判定模块,用于根据逻辑相似性度量结果对所述获取的两段运动序列进行逻辑相似性判定,判定两段运动序列是否属于同一类运动;

逻辑不相似合成模块,用于对判定出的不属于同一类运动的两段运动序列,采用生成过渡段的运动连接方式进行合成,形成合成后的运动序列;其中,如果所述两段运动序列中的一段或两段是周期运动序列,则将所述获取的两段运动序列中相似度最大的片段作为过渡段进行连接合成;如果所述两段运动序列都不是周期运动序列时,则使用第一段运动序列的最后一帧与第二段运动序列的首帧作为过渡段的过渡帧进行连接合成。

可选地,所述装置还包括逻辑相似合成模块,用于对判定出的属于同一类运动的两段运动序列,利用插值技术进行合成,形成合成后的运动序列。

通过上述装置,解决了现有技术中基于数值的相似性度量不易判断运动逻辑相似性的问题,提高了选取相似运动片段的相似率,提升了运动合成的成功率和运动效果,避免了运动合成过程的失真现象。

另外,本发明实施例的三维人体模型运动合成的方法可以由三维人体性运动合成的设备来实现。图8示出了本发明另一实施例提供的运动合成设备的硬件结构示意图。

三维人体模型运动合成设备可以包括处理器51以及存储有计算机程序指令的存储器52。具体地,上述处理器51可以包括中央处理器(cpu),或者特定集成电路(asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。存储器52可以包括用于数据或指令的大容量存储器。处理器51通过读取并执行存储器52中存储的计算机程序指令,以实现上述实施例中的任意一种三维人体模型运动合成方法。在一个示例中,单位人体模型运动合成设备还可包括通信接口53和总线50。其中,如图9所示,处理器51、存储器52、通信接口53通过总线50连接并完成相互间的通信。通信接口53,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。总线50包括硬件、软件或两者,将三维人体模型运动合成设备的部件彼此耦接在一起。

另外,结合上述实施例中的三维人体模型运动合成方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种三维人体模型运动合成方法。

本发明提供的运动合成方法、装置、设备及介质应用于vr或ar场景下,不论是在智慧旅游场景下为虚拟人导游添加合适的动作行为或是三维动漫制作为虚拟人物编辑合适的动画效果,虚拟人物配套使用的基础运动数据库中一般只包含有基本类型的运动序列,如单纯的走动或直接地招手等。其并不能满足大多数对虚拟人物运动特征的需求,如需要一个人行走时同时有运动特征1和运动特征2,而基础运动数据库中只有行走时只包含运动特征1和行走时只包含运动特征2的两种运动序列。又或是走完一段距离后招手时,基础运动数据库中又没有相应的运动序列。这种这两种特殊的需求就可以通过本提案的基于运动逻辑的三维人体模型运动合成方法来满足。

如图9所示,假设由用户选择行走类的基本运动数据的素材1和招手类的基本运动数据的素材2作为合成处理的素材,但是一般的运动合成方法无法判定其素材1和2分别属于哪种运动。将素材1和2分别代入许多事先训练完成的运动模板的公式(如跑步、行走、跳跃等),从代入模板公式后所得结果分析得出,素材1属于行走类运动,素材2属于站立打手势类运动,从而完成逻辑判定。判定素材1和2分属于两种不同种类的运动,从而采取运动连接的方式对于逻辑不相似的两组运动序列合成。运动合成得到开始行走然后站定抬手最后对前方招手的运动动作序列,并将其运用于虚拟人物。像是这种合成结果就可应用于智慧旅游项目中虚拟导游出现并同游客打招呼的特殊会话场景。

假设由用户选择行走类的基本运动数据的素材1和同样行走类的基本运动数据的素材2作为合成处理的素材,素材1和2在行走过程中分别用左手和右手握拳举起,而用户有让虚拟人行走时双手同时举起并握拳的需求。一般的运动合成方法无法判定其素材1和2分别是属于同一种运动类型。将素材1和2分别代入许多事先训练完成的运动模板的公式(如跑步、行走、跳跃等),从代入模板公式后所得结果分析得出,素材1属于行走类运动,素材2也属于行走类动,从而完成逻辑判定。判定素材1和2分属于两种同种类的运动,从而采取利用插值技术来进行逻辑相似运动之间的合成。运动合成得到行走时双手举起欢呼的运动动作序列,并将其运用于虚拟人物。

综上所述,上述的本发明实施例、优选实施例或者实施方式,能够获得下列有益效果中的至少一个。本发明利用插值技术来进行逻辑相似运动之间的合成时,相同逻辑的运动之间相似度会大大提高。本发明合成结果更加平滑,且保留更多原素材所拥有的运动特征。而当采取运动连接的方式对于逻辑不相似的两组运动序列合成时,运动逻辑不相同的运动之间相似度会大大提高。本发明的数据来源不是运动捕捉文件,而是将基于目前通用的模型文件collada文件实现运动合成,也可以很大程度上提升其运动数据的可复用性。利用该格式文件进行的研究具有较强的应用性。

本发明是基于骨骼动画类型,它同时具备了关节动画的灵活性和顶点动画的真实性,并且因为不需要像关键帧动画一样存储太多数据,骨骼动画数据占用的空间很小,这是因为它只需存储一次骨骼的结构信息、位置信息,之后只需记录骨骼变化数据,这些数据显然要比全部记录每一帧每一个皮肤顶点的数据少得多。

本发明研究的运动合成技术,是涉及多个学科的技术,如计算机图形学、人体运动学等,有很高的算法理论基础要求以及很强的应用价值。该技术不但具有重大的理论研究价值,而且还有广阔的商业价值,例如动画制作、游戏开发和影视特效制作等。

在提供基本类型动作库的基础上,由用户选择合成序列材料,可以大大提高了在特定场景下虚拟人需要特殊行为时,对基础运动数据库的应用灵活度。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

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