本发明涉及计算机三维动画技术领域,具体为一种基于多个单独手语动作产生连续手语动作的方法。
背景技术:
随着计算机三维动作技术不断的发展,利用虚拟人物打出准确和连续的手语对打破正常人与听障人沟通障碍的需求变得非常重要。虚拟人物通常可以在虚拟场景中做出各种各样的仿真肢体动作,比如行走、跳和抓等,其中虚拟人物通过打连续的手语可以极大强化正常人与听障人的沟通交流。
目前在使用虚拟人物打手语方面,通常通过直接制作连续手语动作数据,对虚拟人物直接进行驱动,该方法虽然可以保证手语动作的准确性和连续性,但是这种模拟方式只能将手语限定在一个相对较小的范围中,无法处理不在此范围的手语需求,同时人物缺乏实时交互能力,无法真正打破正常人和听障人的交流障碍,如果不采用上述驱动方式,通常需要提前制作大量的连续手语动作数据,并限定手语范围,且无法进行实时交互,故而提出了一种基于多个单独手语动作产生连续手语动作的方法来解决上述提出的问题。
技术实现要素:
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于多个单独手语动作产生连续手语动作的方法,具备能保证动作连续性、实时性等优点,解决了目前其他连续手语方案中,数据制作量大,限定目标连续手语范围、无法实时交互的问题。
(二)技术方案
为实现上述虚拟人打手语的连续性和实时交互性,本发明提供如下技术方案:
动作数据预处理阶段:
步骤(1):制作多个单独手语动作数据。通过动作捕捉设备结合美工修正的方式制作多个单独手语动作,包含大量动作动画数据m,
m={m1,m2,...,mnum},num∈n,
其中num为一个较大的自然数,使得m能够包含足够多的单独手语动作。这些动作数据最终被抽象为虚拟人物骨骼的所有重要关节的旋转数据以及位移数据;
步骤(2):标注动作的时间戳,划分动作。目标是根据语义将每一个单独手语动作划分为抬手、动作、放手三段,并使用时间戳标记划分点:将开始的时间点标记为tstart,从开始到抬手完成的时间点标记为tready,抬手完成到手语动作完成,准备放手的时间点标记为trelax,开始放手到整个动作完成的时间点标记为tstop;
步骤(3):将经过预处理的动作数据,存储在服务器端。制作好的单独手语动作数据首先被存储在服务器端,在需要时会下载其中一部分到客户端。
实时计算阶段:
步骤(4):设定目标连续手语l,这通常是一句自然语言,如“你好,今天天气怎么样?”,即l=“你好,今天天气怎么样?”
步骤(5):使用自然语言处理程序对l进行分词,得到可用的手语动作序列seq,其由一系列有序的分词组成,即
seq={segment1,segment2,...,segmentk},
其中k≥0,segment为分词,对应一个单独手语动作。
例如:seq={“你好”,“今天”,“天气”,“怎么样”};
步骤(6):将对应的单独手语动作从服务器端下载至客户端,得到动作序列mseq:
mseq={m1,m2,...,mk}
步骤(7):计算和调整每个单独手语动作的时间戳。
动作mi的时间戳为
令第一个动作的开始时间为当前时间,即
按照下列公式递归计算出所有动作的时间戳:
其中0.2单位为秒,为经验值常数。
按照下列公式调整动作的时间戳:
步骤(8):获取当前时间tnow,计算每个单独手语动作的权重wi。
按照以下公式计算权重:
步骤(9):产生在当前时间tnow的动作数据帧
使用如下公式计算:
步骤(10):重复步骤(8)至步骤(9),直至产生连续手语动作mresult。
步骤(11):渲染。有两种渲染方案。方案1,每一帧将
(三)有益效果
与现有技术相比,本发明提供了一种基于多个单独手语动作产生连续手语动作的方法,具备以下有益效果:
1、目标连续手语可以是任意自然语言,打破了传统方法限定目标连续手语范围的缺陷。
2、只需制作多个单独手语动作而非多个连续手语,极大缩短了传统方案中数据制作的周期。
3、实时计算保证了可以立刻对连续手语目标作出反馈,确保了交互的实时性,有利于打破正常人与听障人的沟通障碍,提高沟通效率。
附图说明
图1为本发明提出的一种基于多个单独手语动作产生连续手语动作的方法的步骤流程图;
具体实施方式
下面将结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明公开了一种动作基于单个手语动作产生连续手语动作的方法,包括以下步骤:
动作数据预处理阶段:
步骤(1):制作多个单独手语动作数据。通过动作捕捉设备结合美工修正的方式制作多个单独手语动作,包含大量动作动画数据m,
m={m1,m2,...,mnum},num∈n,
其中num为一个较大的自然数,使得m能够包含足够多的单独手语动作。这些动作数据最终被抽象为虚拟人物骨骼的所有重要关节的旋转数据以及位移数据;
步骤(2):标注动作的时间戳,划分动作。目标是根据语义将每一个单独手语动作划分为抬手、动作、放手三段,并使用时间戳标记划分点:将开始的时间点标记为tstart,从开始到抬手完成的时间点标记为tready,抬手完成到手语动作完成,准备放手的时间点标记为trelax,开始放手到整个动作完成的时间点标记为tstop;
步骤(3):将经过预处理的动作数据,存储在服务器端。制作好的单独手语动作数据首先被存储在服务器端,在需要时会下载其中一部分到客户端。
实时计算阶段:
步骤(4):设定目标连续手语l,这通常是一句自然语言,如“你好,今天天气怎么样?”,即l=“你好,今天天气怎么样?”
步骤(5):使用自然语言处理程序对l进行分词,得到可用的手语动作序列seq,其由一系列有序的分词组成,即
seq={segment1,segment2,...,segmentk},
其中k≥0,segment为分词,对应一个单独手语动作。
例如:seq={“你好”,“今天”,“天气”,“怎么样”};
步骤(6):将对应的单独手语动作从服务器端下载至客户端,得到动作序列mseq:
mseq={m1,m2,...,mk}
步骤(7):计算和调整每个单独手语动作的时间戳。
动作mi的时间戳为
令第一个动作的开始时间为当前时间,即
按照下列公式递归计算出所有动作的时间戳:
其中0.2单位为秒,为经验值常数。
按照下列公式调整动作的时间戳:
步骤(8):获取当前时间tnow,计算每个单独手语动作的权重wi。
按照以下公式计算权重:
步骤(9):产生在当前时间tnow的动作数据帧
使用如下公式计算:
步骤(10):重复步骤(8)至步骤(9),直至产生连续手语动作mresult。
步骤(11):渲染。有两种渲染方案。方案1,每一帧将
本发明的有益效果是:
1、目标连续手语可以是任意自然语言,打破了传统方法限定目标连续手语范围的缺陷。
2、只需制作多个单独手语动作而非多个连续手语,极大缩短了传统方案中数据制作的周期。
3、实时计算保证了可以立刻对连续手语目标作出反馈,确保了交互的实时性,有利于打破正常人与听障人的沟通障碍,提高沟通效率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。