一种基于链表队列的数据延迟处理方法及其系统技术方案

技术编号:23445159 阅读:29 留言:0更新日期:2020-02-28 19:31
一种基于链表队列的数据延迟处理方法及其系统,该数据延迟处理方法包括:连续获取延迟对象的刚体数据,该延迟对象配置有最大延迟时间;为刚体数据配置与延迟对象关联的类信息,根据类信息将刚体数据依次加入预设的链表队列,且为刚体数据累计加入链表队列的延迟时间;利用最大延迟时间对链表队列中各个刚体数据对应的延迟时间进行逐一比较,输出各个刚体数据之中延迟时间小于最大延迟时间所对应的刚体数据,和/或输出最后一个满足延迟时间大于或等于最大延迟时间所对应的刚体数据。由于预先设置链表队列来连续接收延迟对象的刚体数据,使得捕捉对象每一帧的动捕数据都不会丢失,而且利于方便地从链表队列中取出符合延迟条件的刚体数据。

A data delay processing method and system based on linked list queue

【技术实现步骤摘要】
一种基于链表队列的数据延迟处理方法及其系统
本专利技术涉及运动捕捉技术,具体涉及一种基于链表队列的数据延迟处理方法及其系统。
技术介绍
运动捕捉技术是指在运动物体的关键部位设置跟踪部件,由动捕系统捕捉跟踪部件位置,再经过计算机处理后得到三维空间坐标的数据。当三维空间坐标数据被计算机识别后,可以应用在动画制作、步态分析、生物力学、人机工程等领域。特别是在电影特效领域,将多个摄影机捕捉到的真人影像换为数字模型,捕捉并记录演员表演时的动作,然后把这些动作同步到电脑中的虚拟角色上,使虚拟角色的动作和真人毫无差别,以达到逼真、自然的效果。光学式动捕系统在游戏和电影领域运用都比较广泛,通过对目标上特定光点(比如捕捉球或荧光贴点)的监视和跟踪来完成运动捕捉的任务,由于每一个光点都对应一个捕捉目标的特殊部位,所以光点的移动就可以映射成为目标的分段位移,甚至结构非常复杂的目标,在高光点数量、高定位精度的基础下,也能够构建出目标物每一个细致关节的移动。例如在实际应用中,通常将配置有多个反光标记点的刚体设置于运动目标(比如人体)的肢体端部,运用多个光学相机高速拍摄运动目标的动作,获取刚体的位置信息,借助生物学上的人体模型,并通过反向运动方式的求解方式模拟出该肢体上端部之间的各个关节的旋转角度,进而准确地模拟出拍摄时间间隔内运动目标的连续运动轨迹。当前技术中,光学动捕的数据都是实时地传输到应用游戏里,比如当前刚体位置旋转在什么地方,就实时地把数据传给应用游戏当中。但是,在实际应用过程中,可能会遇到需要延迟使用动捕数据的场景,比如当测试达到多少毫秒的延迟时,游戏会出现问题导致体验变差,又或者是游戏场景中需要延迟使用动捕数据以实现感官变慢,为配合操作者的差异需求还可以任意设置延时时间。例如,虚幻引擎4中的蓝图接口有一个延迟的函数Delay,但是这个函数的问题是在执行delay过程中只允许上一个延迟结束后新的延迟才能开始,由此会造成部分数据丢失的情形发生。假如动捕系统每秒传输120组数据,在执行上述delay函数的过程中,若延迟500ms则只能在1秒内接收到2组数据,若延迟50ms则只能在1秒内接收到20组数据,从而会造成接收时间间隔内的数据丢失,导致相应数据无法获得延迟效果,因此这样的延迟方式还存在缺陷,无法满足一些高要求的延迟应用需求。
技术实现思路
本专利技术主要解决的技术问题是如何利用动捕数据实现高要求的延迟效果,以及避免动捕数据的丢失情形发生。为解决上述技术问题,本申请提供一种基于链表队列的数据延迟处理方法及其系统。根据第一方面,一种实施例中提供一种基于链表队列的数据延迟处理方法,包括:连续获取延迟对象的刚体数据,所述延迟对象配置有最大延迟时间;为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,以及为所述刚体数据累计加入所述链表队列的延迟时间;利用所述最大延迟时间对所述链表队列中各个所述刚体数据对应的延迟时间进行逐一比较,输出各个所述刚体数据之中延迟时间小于所述最大延迟时间所对应的刚体数据,和/或输出最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据。为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,包括:创建与所述延迟对象关联的类信息,形成所述链表队列中的成员且分配有地址;所述类信息用于记录所述刚体数据和对应的延迟时间、延迟指针,所述延迟时间用于在所述刚体数据加入所述链表队列时开始计时,所述延迟指针用于指向下一个成员的地址;设置一个头指针且与所述类信息相对应,所述头指针用于指向所述链表队列中首端成员的地址;判断所述头指针是否为空,若是将所述头指针指向所述类信息的地址,若否则配置所述类信息;配置所述类信息时,将即将加入所述链表队列的所述刚体数据存入所述类信息中,获取所述链表队列中尾端成员的延迟指针且将所述尾端成员的延迟指针配置为所述类信息的地址,以及初始化设置所述类信息中的延迟时间;所述尾端成员的延迟指针为所述链表队列中最后加入的成员的延迟指针;根据配置的所述类信息将所述刚体数据加入所述链表队列的尾端。通过以下过程获取所述链表队列中尾端成员的延迟指针:判断所述头指针是否为空,若是则返回空指针,若否则依据所述头指针开始遍历所述链表队列;在依据所述头指针开始遍历所述链表队列时,逐一检查所述链表队列中每个成员的延迟指针是否为空,若是则将该成员作为尾端成员且获取所述尾端成员的延迟指针,若否则移向该成员的延迟指针所指向的成员且继续检查所指向的成员的延迟指针。在根据所述类信息将所述刚体数据依次加入预设的链表队列之后,为所述刚体数据累计加入所述链表队列的延迟时间,包括:设置一个过程指针和一个过程时间,所述过程指针用于指向所述类信息,所述过程时间用于表示所述刚体数据先后加入所述链表队列的间隔时间;判断所述过程指针不为空,则根据所述过程时间对所述过程指针指向的所述类信息中的延迟时间进行累计,直至遍历所述链表队列中的各个成员且对每个成员完成延迟时间的累计。所述利用所述最大延迟时间对所述链表队列中各个所述刚体数据对应的延迟时间进行逐一比较,输出各个所述刚体数据中延迟时间小于所述最大延迟时间所对应的刚体数据,和/或输出最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据,包括:设置一个检测指针且指向所述类信息;判断所述检测指针是否为空,若是则输出默认预设的刚体数据,若否则判断所述类信息中的延迟时间是否小于所述最大延迟时间;若小于则输出所述类信息中记录的刚体数据,反之则递归搜寻最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据,且进行输出。所述递归搜寻最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据,包括:在所述链表队列中有一个成员的延迟时间大于或等于所述最大延迟时间时,则对该成员的延迟指针和刚体数据进行临时存储,以及将所述头指针替换为临时存储的延迟指针;若有其它成员的延迟时间大于或等于所述最大延迟时间,则更新临时存储的延迟指针和刚体数据,以及将所述头指针替换为更新的延迟指针,直至遍历完成所述链表队列;在遍历完成所述链表队列时,将临时存储的刚体数据作为最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据。根据第二方面,一种实施例中提供一种数据延迟处理系统,包括:动捕装置,用于捕捉一个或多个目标物体的运动姿态,形成所述目标物体在虚拟场景下所对应的延迟对象的刚体数据;处理装置,与所述动捕装置通信连接,用于连续获取所述延迟对象的刚体数据,以及根据上述第一方面中所述的数据延迟处理方法输出满足延迟要求的刚体数据;显示装置,与所述处理器通信连接,用于根据所述处理装置输出的满足延迟要求的刚体数据驱动所述延迟对象进行姿态显示。所述处理装置包括:数据获取单元,用于连续获取所述延迟对象的刚体数据,所述延迟对象配置有最大延迟时间;链表配置单元,用于为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,以及为所述刚体数据累计加入所述本文档来自技高网
...

【技术保护点】
1.一种基于链表队列的数据延迟处理方法,其特征在于,包括:/n连续获取延迟对象的刚体数据,所述延迟对象配置有最大延迟时间;/n为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,以及为所述刚体数据累计加入所述链表队列的延迟时间;/n利用所述最大延迟时间对所述链表队列中各个所述刚体数据对应的延迟时间进行逐一比较,输出各个所述刚体数据之中延迟时间小于所述最大延迟时间所对应的刚体数据,和/或输出最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据。/n

【技术特征摘要】
1.一种基于链表队列的数据延迟处理方法,其特征在于,包括:
连续获取延迟对象的刚体数据,所述延迟对象配置有最大延迟时间;
为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,以及为所述刚体数据累计加入所述链表队列的延迟时间;
利用所述最大延迟时间对所述链表队列中各个所述刚体数据对应的延迟时间进行逐一比较,输出各个所述刚体数据之中延迟时间小于所述最大延迟时间所对应的刚体数据,和/或输出最后一个满足延迟时间大于或等于所述最大延迟时间所对应的刚体数据。


2.如权利要求1所述的数据延迟处理方法,其特征在于,为所述刚体数据配置与所述延迟对象关联的类信息,根据所述类信息将所述刚体数据依次加入预设的链表队列,包括:
创建与所述延迟对象关联的类信息,形成所述链表队列中的成员且分配有地址;所述类信息用于记录所述刚体数据和对应的延迟时间、延迟指针,所述延迟时间用于在所述刚体数据加入所述链表队列时开始计时,所述延迟指针用于指向下一个成员的地址;
设置一个头指针且与所述类信息相对应,所述头指针用于指向所述链表队列中首端成员的地址;
判断所述头指针是否为空,若是将所述头指针指向所述类信息的地址,若否则配置所述类信息;配置所述类信息时,将即将加入所述链表队列的所述刚体数据存入所述类信息中,获取所述链表队列中尾端成员的延迟指针且将所述尾端成员的延迟指针配置为所述类信息的地址,以及初始化设置所述类信息中的延迟时间;所述尾端成员的延迟指针为所述链表队列中最后加入的成员的地址;
根据配置的所述类信息将所述刚体数据加入所述链表队列的尾端。


3.如权利要求2所述的数据延迟处理方法,其特征在于,通过以下过程获取所述链表队列中尾端成员的延迟指针:
判断所述头指针是否为空,若是则返回空指针,若否则依据所述头指针开始遍历所述链表队列;
在依据所述头指针开始遍历所述链表队列时,逐一检查所述链表队列中每个成员的延迟指针是否为空,若是则将该成员作为尾端成员且获取所述尾端成员的延迟指针,若否则移向该成员的延迟指针所指向的成员且继续检查所指向的成员的延迟指针。


4.如权利要求3所述的数据延迟处理方法,其特征在于,在根据所述类信息将所述刚体数据依次加入预设的链表队列之后,为所述刚体数据累计加入所述链表队列的延迟时间,包括:
设置一个过程指针和一个过程时间,所述过程指针用于指向所述类信息,所述过程时间用于表示所述刚体数据先后加入所述链表队列的间隔时间;
判断所述过程指针不为空,则根据所述过程时间对所述过程指针指向的所述类信息中的延迟时间进行累计,直至遍历所述链表队列中的各个成员且对每个成员完成延迟时间的累计。


5.如权利要求4所述的数据延迟处理方法,其特征在于,所述利用所述最大延迟时间对所述链表队列中各个所述刚体数据对...

【专利技术属性】
技术研发人员:罗威许秋子
申请(专利权)人:深圳市瑞立视多媒体科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1