本发明涉及虚拟现实领域,具体而言,涉及一种虚拟现实中人体的模拟方法和装置。
背景技术:
随着虚拟现实的技术被一点点的突破,民用家庭设备逐渐出现,成为娱乐生活重要的组成部分,让人们体验到前所未有的感觉。为了让人们更加好的在场景里面更好的交互,已经更加接近真实的感觉,在虚拟环境中的人与人的真实交互就显得尤为重要,而真实交互的第一步就是要求形象动作与人类接近。
现有的虚拟现实交互游戏中,大多用非真实的人类来表示人物形象,但模拟出的人物形象要么是身体不能动,要么是通过播放动画的形式以假乱真,还有一些直接取消掉胳膊和腿部,只有头部、身体和手,无法真实的模拟出人物动作,影响用户体验。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种虚拟现实中人体的模拟方法和装置,以至少解决虚拟现实中无法对人体动作进行真实模拟的技术问题。
根据本发明实施例的一个方面,提供了一种虚拟现实中人体的模拟方法,包括:获取在虚拟现实中显示的人体模型,其中,所述人体模型用于对真实环境中的目标人体进行模拟;获取所述目标人体的追踪器集合中所有追踪器的位置信息,其中,所述追踪器集合包括至少一个设置在所述目标人体的预定身体部分上的追踪器;根据获取到的位置信息控制虚拟现实中的所述人体模型进行移动,以使所述人体模型模拟所述目标人体的动作。
根据本发明实施例的另一方面,还提供了一种虚拟现实中人体的模拟装置,包括:第一获取单元,用于获取在虚拟现实中显示的人体模型,其中,所述人体模型用于对真实环境中的目标人体进行模拟;第二获取单元,用于获取所述目标人体的追踪器集合中所有追踪器的位置信息,其中,所述追踪器集合包括至少一个设置在所述目标人体的预定身体部分上的追踪器;控制单元,用于根据获取到的位置信息控制虚拟现实中的所述人体模型进行移动,以使所述人体模型模拟所述目标人体的动作。
在本发明实施例中,采用获取在虚拟现实中显示的人体模型,其中,所述人体模型用于对真实环境中的目标人体进行模拟;获取所述目标人体的追踪器集合中所有追踪器的位置信息,其中,所述追踪器集合包括至少一个设置在所述目标人体的预定身体部位上的追踪器;根据获取到的位置信息控制虚拟现实中的所述人体模型进行移动,以使所述人体模型模拟所述目标人体的动作,通过根据目标人体的预定身体部位上的追踪器的位置信息,控制虚拟现实中的人体模型进行移动,达到了控制人体模型模拟目标人体动作的目的,从而实现了根据目标人体的预定身体部位的位置信息,控制人体模型对目标人体的动作进行模拟的技术效果,进而解决了虚拟现实中无法对人体动作进行真实模拟的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的虚拟现实中人体的模拟方法的场景布局的示意图;
图2是根据本发明实施例的一种可选的虚拟现实中人体的模拟方法的流程图;
图3是标准人体骨架的示意图;
图4是根据本发明实施例的控制目标节点与目标节点的父节点进行移动的过程示意图;
图5是包括头部、身体和双腿的部分骨架示意图;
图6是包括双手和双臂的部分骨架示意图;
图7是根据本发明实施例的对腿部骨架进行简化后的部分骨架示意图;
图8是根据本发明实施例的一种可选的虚拟现实中人体的模拟装置的示意图;
图9是根据本发明实施例的终端的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种虚拟现实中人体的模拟方法。
该方法可以应用于各种虚拟现实设备上,通过在目标人体上设置追踪器,以获取目标人体的预定身体部位的位置信息,并根据获取到的位置信息,控制虚拟现实中人体模型进行移动,以使人体模型对目标人体的各种动作进行模拟。图1是根据本发明实施例的一种可选的虚拟现实中人体的模拟方法的场景布局的示意图,如图1所示,目标人体的预定身体部位上配置有追踪器,其中,目标人体的头部佩带有可视头盔(相当于头部追踪器),目标人体的左手和右手分别持有一个手柄(相当于手部追踪器),当目标人体在预定的区域内做出任意动作时,图1中示出的虚拟现实设备通过位置信息接收装置获取可视头盔和两个手柄的位置信息,进而获取目标人体头部和手部的位置信息,并根据获取到的位置信息,控制虚拟现实中的人体模型进行相应的移动,以对目标人体做出的各种动作进行模拟,从而实现了根据目标人体的预定身体部位的位置信息,控制人体模型对目标人体的动作进行模拟的技术效果,进而解决了虚拟现实中无法对人体动作进行真实模拟的技术问题,使人们在虚拟现实中的交互更加接近真实的感觉。
需要说明的是,本发明实施例所提供的虚拟现实中人体的模拟方法在应用于各种虚拟现实设备时,该虚拟现实设备应当包括有必要的追踪器,以获取目标人体预定身体部位的位置信息,如:头部追踪器、手部追踪器、脚部追踪器等,其中,头部追踪器主要用于获取目标人体的头部位置信息,进而根据头部位置信息,控制人体模型对目标人体的头部、颈部以及躯干的动作进行模拟,手部追踪器用于获取目标人体的双手的位置信息,进而根据双手的位置信息,控制人体模型对目标人体的双手及手臂动作进行模拟,脚部追踪器用于获了以目标人体的双脚的位置信息,进而根据双脚的位置信息,控制人体模型对目标人体的双脚及双腿动作进行模拟。虚拟现实设备所包括的追踪器应当至少包括头部追踪器,以至少通过目标人体的头部位置信息控制人体模型对目标人体的身体动作进行模拟。如图1示出的虚拟现实设备则包括头部追踪器和手部追踪器,则该虚拟现实设备可以通过手部追踪器对目标人体的双手及手臂动作进行模拟,从而使人体模型对目标人体的模拟更加接近真实。同样的,虚拟现实设备可以同时包括头部追踪器、手部追踪器和脚部追踪器,以控制人体模型模拟目标人体的身体动作,双手和双臂动作以及双脚和双腿动作。
图2是根据本发明实施例的一种可选的虚拟现实中人体的模拟方法的流程图,以下结合图2对本发明实施例所提供的虚拟现实中人体的模拟方法做具体介绍,如图2所示,该虚拟现实中人体的模拟方法主要包括如下步骤s202至步骤s206:
步骤s202,获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟。
虚拟现实技术是一种可以创建虚拟世界的计算机仿真系统,它利用计算机生成一种多源信息融合的、交互式的三维动态视景的模拟环境,通过在该环境中对用户的实体行为进行仿真使用户沉浸到该环境中。在虚拟现实中显示的人体模型用于对用户的实体行为进行模拟,通过控制人体模型对用户进行的模拟,并使人体模型模拟出的动作更加接近用户的实体行为,从而使用户在虚拟现实中的交互更加真实,提高用户体验。
步骤s204,获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部分上的追踪器。
在本发明实施例中,追踪器配置在目标人体的预定身体部位上,在目标人体的预定身体部位做出动作时,追踪器的位置也相应的发生变化,因此,追踪器的位置信息即目标人体的预定身体部位的位置信息。如图1所示,当目标人体转头时,目标人体所佩带的头盔(相当于头部追踪器)的朝向也发生变化,而根据头盔的朝向,即可获取目标人体的头部朝向;当目标人体抬高手臂时,目标人体所持的手柄(相当于手部追踪器)的位置也会发生变化,而根据目标人体所持的手柄的位置,即可获取目标人体的手部及手臂的位置。
步骤s206,根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作。
根据逆向动力学的原理,可以通过先确定子骨骼的位置,然后反求推导出其所在的骨骼链上n级父骨骼的位置,从而确定整条骨骼链的位置。在本发明实施例中,在控制人体模型对目标人体进行模拟时,根据获取到的追踪器的位置信息,确定人体模型各部位的位置信息,进而根据逆向动力学反求推导出其他部位的位置信息,从而确定出整个人体模型的所有部位的位置信息,以使人体模型对目标人体的动作进行真实的模拟。
在本发明实施例中,采用获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟;获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部位上的追踪器;根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作,通过根据目标人体的预定身体部位上的追踪器的位置信息,控制虚拟现实中的人体模型进行移动,达到了控制人体模型模拟目标人体动作的目的,从而实现了根据目标人体的预定身体部位的位置信息,控制人体模型对目标人体的动作进行模拟的技术效果,进而解决了虚拟现实中无法对人体动作进行真实模拟的技术问题。
可选地,位置信息包括追踪器的位置,根据获取到的位置信息控制虚拟现实中的人体模型进行移动包括:将获取到的位置信息中的任意一个位置信息所表示的位置作为目标位置;判断人体模型的目标节点的当前位置与目标位置之间的距离是否大于第一预设阈值,其中,目标节点与目标位置对应的目标人体的预定身体部位相关联;如果目标节点的当前位置与目标位置之间的距离大于第一预设阈值,则控制目标节点和目标节点的所有父节点进行移动,其中,目标节点与父节点用于模拟目标人体中一个骨骼链的多个骨骼。
作为本发明实施例的一种可选的实施方式,追踪器的位置信息包括追踪器的位置,将追踪器位置为作目标位置,将用于对目标人体进行模拟的人体模型的相应部位作为目标节点,则控制人体模型对目标人体进行模拟需要控制目标节点移动到目标位置。在本发明实施例中,设置一个预设阈值,如果目标节点与目标位置的距离大于该预设阈值,则需要控制目标节点移动到目标位置,在控制目标节点移动到目标位置是过程中,还要同时控制目标节点的父节点随目标节点为的移动而移动,从而达到对目标人体进行真实模拟的目的。如果目标节点与目标位置的距离小于或者等于预设阈值,则认为目标节点近似位于目标位置,无需再移动目标节点。在本发明实施例中,目标节点为处于目标位置的目标人体的预定身体部位所对应的人体模型节点。目标节点的父节点同样对应的目标人体身体部位,该身体部位为与目标人体的预定身体部位处于同一骨骼链上,且为目标人体的预定身体部位的父骨骼。
图3是标准人体骨架的示意图,如图3所示,图3中每一个骨骼对应于人体模型中的一个节点,其中,颈骨和脊柱为头骨的父骨骼,颈骨和脊柱在人体模型中对应的节点为头骨骼所对应的节点的父节点。同样地,胳膊和锁骨为手的父骨骼,上腿骨和腿骨为脚的父骨骼,则胳膊和锁骨在人体模型中对应的节点为手对应的节点的父节点,上腿骨和腿骨在人体模型中对应的节点为脚对应的节点的父节点。
可选地,控制目标节点和目标节点的所有父节点进行移动包括:获取目标节点的所有父节点与目标位置的位置关系;根据位置关系选择与目标节点相邻的父节点作为旋转节点;保持旋转节点与旋转节点的所有子节点的距离不变,旋转该旋转节点的所有子节点,以使目标节点移动到旋转节点与目标位置的连线上;重新选择与旋转节点相邻的父节点作为旋转节点,直到目标节点的所有父节点全部选择完毕。
作为本发明实施例的一种可选的实施方式,在目标节点与目标位置的距离大于预设阈值时,控制目标节点和目标节点的父节点进行移动,以使人体模型对目标人体进行模拟,具体的控制移动方式如图4所示,在图4中,n1,n2,n3,n4为人体模型中的4个节点,n1,n2,n3,n4对应的目标人体的身体部位处于同一骨骼链上,且n1,n2,n3对应的身体部位为n4对应的身体部位的父骨骼,则n1,n2,n3为n4的父节点。在控制人体模型对目标人体进行模拟时,n4为目标节点,n4对应的目标人体的预定身体部位上配置有追踪器,t为获取到的追踪器的位置,即目标位置。在控制目标节点n4和目标节点n4的所有父节点移动之前,首先获取目标节点n4的所有父节点n1,n2,n3与目标位置t的位置关系,可选的,可以通过将父节点n1,n2,n3与目标位置t进行连线以确定其位置关系。首次移动,首先选择与目标节点n4相邻的父节点n3作为旋转节点,保持旋转节点n3与其所有子节点(节点n4)的距离不变,即保持n3n4长度不变,旋转移动节点n4,将n4移动至节点n3和目标位置t的连线上。可选的,在旋转移动过程中,节点n4所移动的角度为可能移动的最小角度,在上述首次移动过程中,节点n4移动的角度为a1。第二次移动,选择当前旋转节点n3相邻的父节点(n2)作为新的旋转节点,保持旋转节点n2与其所有子节点(节点n3,n4)的距离不变,即保持n2n3、n2n4和n3n4的长度不变,旋转移动节点n3和节点n4,将n4移动至节点n2和目标位置t的连线上,在上述第二次移动过程中,节点n3和节点n4移动的角度为a2。按上述移动方法,直到目标节点n4的所有父节点全部被选择完毕。在图4中,第三次移动过程选择目标节点n4的父节点n1作为旋转节点,并保持节点n1,n2,n3,n4之间的距离不变,旋转移动节点n2,n3,n4,使节点n4移动到节点n1与目标位置的连线上。至此,完成一次人体模型对目标人体动作的模拟。需要说明的是,如果在完成上述移动之后,目标节点n4与目标位置t之间的距离小于等于预设阈值,则人体模型对目标人体的模拟完毕,如果目标节点n4与目标位置t之前的距离大于预设阈值,则需要再一次控制人体模型按上述移动过程进行移动,直到目标节点n4与目标位置t之间的距离小于等于预设阈值。
可选地,位置信息包括追踪器的朝向,根据获取到的位置信息控制虚拟现实中的人体模型进行移动包括:将获取到的位置信息中的任意一个位置信息所表示的朝向作为目标朝向;判断人体模型的目标节点的当前朝向与目标朝向之间的目标角度是否大于第二预设阈值;如果目标角度大于第二预设阈值,则控制目标节点和目标节点的所有父节点按照第一预设角度进行旋转,其中,目标节点旋转的角度等于第二预设阈值,目标节点的所有父节点的旋转角度小于或者等于目标节点的旋转角度;如果目标角度小于或者等于第二预设阈值,则控制目标节点按照目标角度进行旋转,并控制目标节点的父节点按照第二预设角度进行旋转,其中,第二预设角度小于或者等于目标角度。
作为本发明实施例的一种可选的实施方式,根据获取到的追踪器的角度,控制人体模型的身体部位进行转动,以对目标人体进行模拟。由于目标人体身体部位的转动角度是有限制的,在控制人体模型模拟目标人体进行转动时,设置第二阈值,在根据获取到的追踪器的角度信息确定的需要转动的目标角度大于第二阈值时,控制目标节点与目标节点的父节点按照第一预设角度进行旋转,可选地,控制目标节点与目标节点的父节点按照第一预设角度进行旋转时,控制目标节点按照第二阈值进行转动,同时控制目标节点的父节点按照小于等于第二阈值的角度进行旋转,如果根据获取到的追踪器的角度信息确定的需要转动的目标角度小于或者等于第二阈值时,控制目标节点与目标节点的父节点按照第二预设角度进行旋转,具体地,控制目标节点按照目标角度进行旋转,控制目标节点的父节点按照小于等于目标角度的旋转角度进行旋转。可选地,在目标节点有多个父节点时,目标节点的多个父节点转动的角度均小于等于目标节点的转动角度,并且所有节点中,父节点的转动角度小于等于其子节点的转动角度。
例如:目标节点为头部节点,第二预设阈值为90度,则在人体模型对目标人体进行模拟时,当根据追踪器的角度信息确定的需要转动的目标角度大于90度时,控制人体模型按照90度转动头部,可选地,可以控制颈部按同一方向转动70度,控制脊柱按同一方向转动50度。如果根据追踪器的角度信息确定的需要转动的目标角度为60度时,控制人体模型按照60度转动头部,可选地,可以控制颈部按同一方向转动30度,控制脊柱按同一方向转动15度。
可选地,追踪器集合至少包括头部追踪器,获取目标人体的追踪器集合中所有追踪器的位置信息包括:获取头部追踪器的头部位置信息;根据获取到的位置信息控制虚拟现实中的人体模型进行移动包括:根据头部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲和身体移动。
在本发明实施例中,追踪器集合中至少包括头部追踪器,根据头部追踪器的位置信息,控制人体模型对目标人体的动作进行模拟,其中,人体模型可以对目标人体的头部转动、身体弯曲和身体移动进行模拟。
可选地,在根据获取到的位置信息控制虚拟现实中的人体模型进行移动之前,方法包括:将人体模型的左手节点和右手节点合并为手部节点;和/或将人体模型的左腿节点和右腿节点合并为腿部节点,其中,合并得到的手部节点和腿部节点为人体模型头部节点的父节点。
作为本发明实施例的一种可选的实施方式,获取头部追踪器的位置信息,并根据该位置信息控制人体模型对目标人体的动作进行模拟之前,可以将人体模型的节点进行简化,并以头部节点作为目标节点,控制头部节点和头部节点的父节点进行移动,以使人体模型对目标人体的动作进行模拟。具体地,可以将左手节点和右手节点合并为手部节点,将左腿节点和右腿节点合并为腿部节点,将合并得到的手部节点和/或腿部节点作为头部节点的父节点,在头部节点移动时,控制手部节点和/或腿部节点进行相应的移动。
以追踪器集合包括头部追踪器和手部追踪器为例,控制人体模型模拟目标人体时,通过头部节点模拟目标人体的头部及身体动作,通过手部节点模拟目标人体的双手和双臂动作,图3所示的人体骨架可以拆分为图5和图6所示的两个部分,其中,图5示出了头部、身体、双腿的骨架部分,图6示出了双手和双臂的骨架部分,如图7所示,可以对图6所示的骨架部分进行简化。将左腿骨与右腿骨进行合并,以左腿骨和右腿骨的中点作为合并后腿骨,将左脚与右脚进行合并,以左脚和右脚的中点作为合并后的脚,合并得到的腿骨与脚作为头部的父节点。
可选地,追踪器集合至少包括头部追踪器和手部追踪器,获取目标人体的追踪器集合中所有追踪器的位置信息包括:获取头部追踪器的头部位置信息和手部追踪器的手部位置信息;根据获取到的位置信息控制虚拟现实中的人体模型进行移动包括:根据头部位置信息和手部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲和手臂旋转。
作为本发明实施例的一种可选的实施方式,追踪器集合包括头部追踪器和手部追踪器时,通过头部追踪器获取目标人体的头部位置信息,通过手部追踪器获取目标人体的手部位置信息,根据头部位置信息对目标人体的头部及身体动作进行模拟,根据手部位置信息对目标人体的手部及手臂动作进行模拟。
可选地,追踪器集合至少包括头部追踪器、手部追踪器和脚部追踪器,获取目标人体的追踪器集合中所有追踪器的位置信息包括:获取头部追踪器的头部位置信息、手部追踪器的手部位置信息和脚部追踪器的脚部位置信息;根据获取到的位置信息控制虚拟现实中的人体模型进行移动包括:根据头部位置信息、手部位置信息和脚部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲、手臂旋转、腿部移动、腿部弯曲和腿部旋转。
作为本发明实施例的一种可选的实施方式,追踪器集合包括头部追踪器、手部追踪器和脚部追踪器时,通过头部追踪器获取目标人体的头部位置信息,通过手部追踪器获取目标人体的手部位置信息,通过脚部追踪器获取目标人体的脚部位置信息,根据头部位置信息对目标人体的头部及身体动作进行模拟,根据手部位置信息对目标人体的手部及手臂动作进行模拟,根据脚部位置信息对目标人体的双脚及双腿动作进行模拟。
可选地,在获取在虚拟现实中显示的人体模型之前,方法还包括:建立具有预设身体比例的人体模型;根据追踪器的位置信息获取目标人体的实际身体比例;根据实际身体比例缩放人体模型,以使人体模型的身体比例与目标人体的身体比例一致。
作为本发明实施例的一种可选的实施方式,为了提高人体模型与目标人体的相似度,建立一个与目标人体的实际身体比例一致的人体模型。具体地,先建立一个具有标准身体比例的人体模型,然后根据配置在目标人体上的追踪器的位置信息,获取目标人体的实际身体比例关系,如:根据目标人体头部追踪器的位置信息可以得知目标人体的身高,再根据目标人体的手部的位置信息,得知目标人体的手臂长度。最后,按照目标人体的实际身体比例关系,对上述具有标准身体比例的人体模型进行缩放,以使人体模型的身体比例关系与目标人体的实际身体比例一致。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述虚拟现实中人体的模拟方法的虚拟现实中人体的模拟装置,该虚拟现实中人体的模拟装置主要用于执行本发明实施例上述内容所提供的虚拟现实中人体的模拟方法,以下对本发明实施例所提供的虚拟现实中人体的模拟装置做具体介绍:
图8是根据本发明实施例的一种可选的虚拟现实中人体的模拟装置的示意图,如图8所示,该虚拟现实中人体的模拟装置主要包括:
第一获取单元810,用于获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟。
虚拟现实技术是一种可以创建虚拟世界的计算机仿真系统,它利用计算机生成一种多源信息融合的、交互式的三维动态视景的模拟环境,通过在该环境中对用户的实体行为进行仿真使用户沉浸到该环境中。在虚拟现实中显示的人体模型用于对用户的实体行为进行模拟,通过控制人体模型对用户进行的模拟,并使人体模型模拟出的动作更加接近用户的实体行为,从而使用户在虚拟现实中的交互更加真实,提高用户体验。
第二获取单元820,用于获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部分上的追踪器。
在本发明实施例中,追踪器配置在目标人体的预定身体部位上,在目标人体的预定身体部位做出动作时,追踪器的位置也相应的发生变化,因此,追踪器的位置信息即目标人体的预定身体部位的位置信息。如图1所示,当目标人体转头时,目标人体所佩带的头盔(相当于头部追踪器)的朝向也发生变化,而根据头盔的朝向,即可获取目标人体的头部朝向;当目标人体抬高手臂时,目标人体所持的手柄(相当于手部追踪器)的位置也会发生变化,而根据目标人体所持的手柄的位置,即可获取目标人体的手部及手臂的位置。
控制单元830,用于根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作。
根据逆向动力学的原理,可以通过先确定子骨骼的位置,然后反求推导出其所在的骨骼链上n级父骨骼的位置,从而确定整条骨骼链的位置。在本发明实施例中,在控制人体模型对目标人体进行模拟时,根据获取到的追踪器的位置信息,确定人体模型各部位的位置信息,进而根据逆向动力学反求推导出其他部位的位置信息,从而确定出整个人体模型的所有部位的位置信息,以使人体模型对目标人体的动作进行真实的模拟。
在本发明实施例中,采用获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟;获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部位上的追踪器;根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作,通过根据目标人体的预定身体部位上的追踪器的位置信息,控制虚拟现实中的人体模型进行移动,达到了控制人体模型模拟目标人体动作的目的,从而实现了根据目标人体的预定身体部位的位置信息,控制人体模型对目标人体的动作进行模拟的技术效果,进而解决了虚拟现实中无法对人体动作进行真实模拟的技术问题。
可选地,位置信息包括追踪器的位置,控制单元包括:位置模块,用于将获取到的位置信息中的任意一个位置信息所表示的位置作为目标位置;第一判断模块,用于判断人体模型的目标节点的当前位置与目标位置之间的距离是否大于第一预设阈值,其中,目标节点与目标位置对应的目标人体的预定身体部位相关联;第一控制模块,用于在如果目标节点的当前位置与目标位置之间的距离大于第一预设阈值时,控制目标节点和目标节点的所有父节点进行移动,其中,目标节点与父节点用于模拟目标人体中一个骨骼链的多个骨骼。
作为本发明实施例的一种可选的实施方式,追踪器的位置信息包括追踪器的位置,将追踪器位置为作目标位置,将用于对目标人体进行模拟的人体模型的相应部位作为目标节点,则控制人体模型对目标人体进行模拟需要控制目标节点移动到目标位置。在本发明实施例中,设置一个预设阈值,如果目标节点与目标位置的距离大于该预设阈值,则需要控制目标节点移动到目标位置,在控制目标节点移动到目标位置是过程中,还要同时控制目标节点的父节点随目标节点为的移动而移动,从而达到对目标人体进行真实模拟的目的。如果目标节点与目标位置的距离小于或者等于预设阈值,则认为目标节点近似位于目标位置,无需再移动目标节点。在本发明实施例中,目标节点为处于目标位置的目标人体的预定身体部位所对应的人体模型节点。目标节点的父节点同样对应的目标人体身体部位,该身体部位为与目标人体的预定身体部位处于同一骨骼链上,且为目标人体的预定身体部位的父骨骼。
图3是标准人体骨架的示意图,如图3所示,图3中每一个骨骼对应于人体模型中的一个节点,其中,颈骨和脊柱为头骨的父骨骼,颈骨和脊柱在人体模型中对应的节点为头骨骼所对应的节点的父节点。同样地,胳膊和锁骨为手的父骨骼,上腿骨和腿骨为脚的父骨骼,则胳膊和锁骨在人体模型中对应的节点为手对应的节点的父节点,上腿骨和腿骨在人体模型中对应的节点为脚对应的节点的父节点。
可选地,第一控制模块包括:获取子模块,用于获取目标节点的所有父节点与目标位置的位置关系;旋转节点子模块,用于根据位置关系选择与目标节点相邻的父节点作为旋转节点;旋转子模块,用于保持旋转节点与旋转节点的所有子节点的距离不变,旋转该旋转节点的所有子节点,以使目标节点移动到旋转节点与目标位置的连线上;重复子模块,用于重新选择与旋转节点相邻的父节点作为旋转节点,直到目标节点的所有父节点全部选择完毕。
作为本发明实施例的一种可选的实施方式,在目标节点与目标位置的距离大于预设阈值时,控制目标节点和目标节点的父节点进行移动,以使人体模型对目标人体进行模拟,具体的控制移动方式如图4所示,在图4中,n1,n2,n3,n4为人体模型中的4个节点,n1,n2,n3,n4对应的目标人体的身体部位处于同一骨骼链上,且n1,n2,n3对应的身体部位为n4对应的身体部位的父骨骼,则n1,n2,n3为n4的父节点。在控制人体模型对目标人体进行模拟时,n4为目标节点,n4对应的目标人体的预定身体部位上配置有追踪器,t为获取到的追踪器的位置,即目标位置。在控制目标节点n4和目标节点n4的所有父节点移动之前,首先获取目标节点n4的所有父节点n1,n2,n3与目标位置t的位置关系,可选的,可以通过将父节点n1,n2,n3与目标位置t进行连线以确定其位置关系。首次移动,首先选择与目标节点n4相邻的父节点n3作为旋转节点,保持旋转节点n3与其所有子节点(节点n4)的距离不变,即保持n3n4长度不变,旋转移动节点n4,将n4移动至节点n3和目标位置t的连线上。可选的,在旋转移动过程中,节点n4所移动的角度为可能移动的最小角度,在上述首次移动过程中,节点n4移动的角度为a1。第二次移动,选择当前旋转节点n3相邻的父节点(n2)作为新的旋转节点,保持旋转节点n2与其所有子节点(节点n3,n4)的距离不变,即保持n2n3、n2n4和n3n4的长度不变,旋转移动节点n3和节点n4,将n4移动至节点n2和目标位置t的连线上,在上述第二次移动过程中,节点n3和节点n4移动的角度为a2。按上述移动方法,直到目标节点n4的所有父节点全部被选择完毕。在图4中,第三次移动过程选择目标节点n4的父节点n1作为旋转节点,并保持节点n1,n2,n3,n4之间的距离不变,旋转移动节点n2,n3,n4,使节点n4移动到节点n1与目标位置的连线上。至此,完成一次人体模型对目标人体动作的模拟。需要说明的是,如果在完成上述移动之后,目标节点n4与目标位置t之间的距离小于等于预设阈值,则人体模型对目标人体的模拟完毕,如果目标节点n4与目标位置t之前的距离大于预设阈值,则需要再一次控制人体模型按上述移动过程进行移动,直到目标节点n4与目标位置t之间的距离小于等于预设阈值。
可选地,位置信息包括追踪器的朝向,控制单元包括:朝向模块,用于将获取到的位置信息中的任意一个位置信息所表示的朝向作为目标朝向;第二判断模块,用于判断人体模型的目标节点的当前朝向与目标朝向之间的目标角度是否大于第二预设阈值;第二控制模块,用于在目标角度大于第二预设阈值时,控制目标节点和目标节点的所有父节点按照第一预设角度进行旋转,其中,目标节点旋转的角度等于第二预设阈值,目标节点的所有父节点的旋转角度小于或者等于目标节点的旋转角度;第三控制模块,用于在目标角度小于或者等于第二预设阈值时,控制目标节点按照目标角度进行旋转,并控制目标节点的父节点按照第二预设角度进行旋转,其中,第二预设角度小于或者等于目标角度。
作为本发明实施例的一种可选的实施方式,根据获取到的追踪器的角度,控制人体模型的身体部位进行转动,以对目标人体进行模拟。由于目标人体身体部位的转动角度是有限制的,在控制人体模型模拟目标人体进行转动时,设置第二阈值,在根据获取到的追踪器的角度信息确定的需要转动的目标角度大于第二阈值时,控制目标节点与目标节点的父节点按照第一预设角度进行旋转,可选地,控制目标节点与目标节点的父节点按照第一预设角度进行旋转时,控制目标节点按照第二阈值进行转动,同时控制目标节点的父节点按照小于等于第二阈值的角度进行旋转,如果根据获取到的追踪器的角度信息确定的需要转动的目标角度小于或者等于第二阈值时,控制目标节点与目标节点的父节点按照第二预设角度进行旋转,具体地,控制目标节点按照目标角度进行旋转,控制目标节点的父节点按照小于等于目标角度的旋转角度进行旋转。可选地,在目标节点有多个父节点时,目标节点的多个父节点转动的角度均小于等于目标节点的转动角度,并且所有节点中,父节点的转动角度小于等于其子节点的转动角度。
例如:目标节点为头部节点,第二预设阈值为90度,则在人体模型对目标人体进行模拟时,当根据追踪器的角度信息确定的需要转动的目标角度大于90度时,控制人体模型按照90度转动头部,可选地,可以控制颈部按同一方向转动70度,控制脊柱按同一方向转动50度。如果根据追踪器的角度信息确定的需要转动的目标角度为60度时,控制人体模型按照60度转动头部,可选地,可以控制颈部按同一方向转动30度,控制脊柱按同一方向转动15度。
可选地,追踪器集合至少包括头部追踪器,第二获取单元包括:第一获取模块,用于获取头部追踪器的头部位置信息;控制单元包括:第四控制模块,用于根据头部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲和身体移动。
在本发明实施例中,追踪器集合中至少包括头部追踪器,根据头部追踪器的位置信息,控制人体模型对目标人体的动作进行模拟,其中,人体模型可以对目标人体的头部转动、身体弯曲和身体移动进行模拟。
可选地,装置包括:第一合并单元,用于在根据获取到的位置信息控制虚拟现实中的人体模型进行移动之前,将人体模型的左手节点和右手节点合并为手部节点;和/或第二合并单元,用于在根据获取到的位置信息控制虚拟现实中的人体模型进行移动之前,将人体模型的左腿节点和右腿节点合并为腿部节点,其中,合并得到的手部节点和腿部节点为人体模型头部节点的父节点。
作为本发明实施例的一种可选的实施方式,获取头部追踪器的位置信息,并根据该位置信息控制人体模型对目标人体的动作进行模拟之前,可以将人体模型的节点进行简化,并以头部节点作为目标节点,控制头部节点和头部节点的父节点进行移动,以使人体模型对目标人体的动作进行模拟。具体地,可以将左手节点和右手节点合并为手部节点,将左腿节点和右腿节点合并为腿部节点,将合并得到的手部节点和/或腿部节点作为头部节点的父节点,在头部节点移动时,控制手部节点和/或腿部节点进行相应的移动。
以追踪器集合包括头部追踪器和手部追踪器为例,控制人体模型模拟目标人体时,通过头部节点模拟目标人体的头部及身体动作,通过手部节点模拟目标人体的双手和双臂动作,图3所示的人体骨架可以拆分为图5和图6所示的两个部分,其中,图5示出了头部、身体、双腿的骨架部分,图6示出了双手和双臂的骨架部分,如图7所示,可以对图6所示的骨架部分进行简化。将左腿骨与右腿骨进行合并,以左腿骨和右腿骨的中点作为合并后腿骨,将左脚与右脚进行合并,以左脚和右脚的中点作为合并后的脚,合并得到的腿骨与脚作为头部的父节点。
可选地,追踪器集合至少包括头部追踪器和手部追踪器,第二获取单元包括:第二获取模块,用于获取头部追踪器的头部位置信息和手部追踪器的手部位置信息;控制单元包括:第五控制模块,用于根据头部位置信息和手部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲和手臂旋转。
作为本发明实施例的一种可选的实施方式,追踪器集合包括头部追踪器和手部追踪器时,通过头部追踪器获取目标人体的头部位置信息,通过手部追踪器获取目标人体的手部位置信息,根据头部位置信息对目标人体的头部及身体动作进行模拟,根据手部位置信息对目标人体的手部及手臂动作进行模拟。
可选地,追踪器集合至少包括头部追踪器、手部追踪器和脚部追踪器,第二获取单元包括:第三获取模块,用于获取头部追踪器的头部位置信息、手部追踪器的手部位置信息和脚部追踪器的脚部位置信息;控制单元包括:第六控制模块,用于根据头部位置信息、手部位置信息和脚部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲、手臂旋转、腿部移动、腿部弯曲和腿部旋转。
作为本发明实施例的一种可选的实施方式,追踪器集合包括头部追踪器、手部追踪器和脚部追踪器时,通过头部追踪器获取目标人体的头部位置信息,通过手部追踪器获取目标人体的手部位置信息,通过脚部追踪器获取目标人体的脚部位置信息,根据头部位置信息对目标人体的头部及身体动作进行模拟,根据手部位置信息对目标人体的手部及手臂动作进行模拟,根据脚部位置信息对目标人体的双脚及双腿动作进行模拟。
可选地,装置还包括:建立单元,用于在获取在虚拟现实中显示的人体模型之前,建立具有预设身体比例的人体模型;第三获取单元,用于根据追踪器的位置信息获取目标人体的实际身体比例;缩放单元,用于根据实际身体比例缩放人体模型,以使人体模型的身体比例与目标人体的身体比例一致。
作为本发明实施例的一种可选的实施方式,为了提高人体模型与目标人体的相似度,建立一个与目标人体的实际身体比例一致的人体模型。具体地,先建立一个具有标准身体比例的人体模型,然后根据配置在目标人体上的追踪器的位置信息,获取目标人体的实际身体比例关系,如:根据目标人体头部追踪器的位置信息可以得知目标人体的身高,再根据目标人体的手部的位置信息,得知目标人体的手臂长度。最后,按照目标人体的实际身体比例关系,对上述具有标准身体比例的人体模型进行缩放,以使人体模型的身体比例关系与目标人体的实际身体比例一致。
实施例3
根据本发明实施例,还提供了一种用于实施上述虚拟现实中人体的模拟方法的终端,如图9所示,该终端主要包括处理器901、显示器902和网络接口903,其中:
网络接口903主要用于与追踪器进行网络通信,以获取追踪器的位置信息。
显示器902主要用于显示用于模拟目标人体的人体模型。
处理器901主要用于执行如下操作:
获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟;获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部分上的追踪器;根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作。
处理器901还用于将获取到的位置信息中的任意一个位置信息所表示的位置作为目标位置;判断人体模型的目标节点的当前位置与目标位置之间的距离是否大于第一预设阈值,其中,目标节点与目标位置对应的目标人体的预定身体部位相关联;如果目标节点的当前位置与目标位置之间的距离大于第一预设阈值,则控制目标节点和目标节点的所有父节点进行移动,其中,目标节点与父节点用于模拟目标人体中一个骨骼链的多个骨骼。
处理器901还用于获取目标节点的所有父节点与目标位置的位置关系;根据位置关系选择与目标节点相邻的父节点作为旋转节点;保持旋转节点与旋转节点的所有子节点的距离不变,旋转该旋转节点的所有子节点,以使目标节点移动到旋转节点与目标位置的连线上;重新选择与旋转节点相邻的父节点作为旋转节点,直到目标节点的所有父节点全部选择完毕。
处理器901还用于将获取到的位置信息中的任意一个位置信息所表示的朝向作为目标朝向;判断人体模型的目标节点的当前朝向与目标朝向之间的目标角度是否大于第二预设阈值;如果目标角度大于第二预设阈值,则控制目标节点和目标节点的所有父节点按照第一预设角度进行旋转,其中,目标节点旋转的角度等于第二预设阈值,目标节点的所有父节点的旋转角度小于或者等于目标节点的旋转角度;如果目标角度小于或者等于第二预设阈值,则控制目标节点按照目标角度进行旋转,并控制目标节点的父节点按照第二预设角度进行旋转,其中,第二预设角度小于或者等于目标角度。
处理器901还用于获取头部追踪器的头部位置信息;根据头部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲和身体移动。
处理器901还用于将人体模型的左手节点和右手节点合并为手部节点;和/或将人体模型的左腿节点和右腿节点合并为腿部节点,其中,合并得到的手部节点和腿部节点为人体模型头部节点的父节点。
处理器901还用于获取头部追踪器的头部位置信息和手部追踪器的手部位置信息;根据头部位置信息和手部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲和手臂旋转。
处理器901还用于获取头部追踪器的头部位置信息、手部追踪器的手部位置信息和脚部追踪器的脚部位置信息;根据头部位置信息、手部位置信息和脚部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲、手臂旋转、腿部移动、腿部弯曲和腿部旋转。
处理器901还用于建立具有预设身体比例的人体模型;根据追踪器的位置信息获取目标人体的实际身体比例;根据实际身体比例缩放人体模型,以使人体模型的身体比例与目标人体的身体比例一致。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的虚拟现实中人体的模拟方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
s1,获取在虚拟现实中显示的人体模型,其中,人体模型用于对真实环境中的目标人体进行模拟;
s2,获取目标人体的追踪器集合中所有追踪器的位置信息,其中,追踪器集合包括至少一个设置在目标人体的预定身体部分上的追踪器;
s3,根据获取到的位置信息控制虚拟现实中的人体模型进行移动,以使人体模型模拟目标人体的动作。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行将获取到的位置信息中的任意一个位置信息所表示的位置作为目标位置;判断人体模型的目标节点的当前位置与目标位置之间的距离是否大于第一预设阈值,其中,目标节点与目标位置对应的目标人体的预定身体部位相关联;如果目标节点的当前位置与目标位置之间的距离大于第一预设阈值,则控制目标节点和目标节点的所有父节点进行移动,其中,目标节点与父节点用于模拟目标人体中一个骨骼链的多个骨骼。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行获取目标节点的所有父节点与目标位置的位置关系;根据位置关系选择与目标节点相邻的父节点作为旋转节点;保持旋转节点与旋转节点的所有子节点的距离不变,旋转节点的所有子节点,以使目标节点移动到旋转节点与目标位置的连线上;重新选择与旋转节点相邻的父节点作为旋转节点,直到目标节点的所有父节点全部选择完毕。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行将获取到的位置信息中的任意一个位置信息所表示的朝向作为目标朝向;判断人体模型的目标节点的当前朝向与目标朝向之间的目标角度是否大于第二预设阈值;如果目标角度大于第二预设阈值,则控制目标节点和目标节点的所有父节点按照第一预设角度进行旋转,其中,目标节点旋转的角度等于第二预设阈值,目标节点的所有父节点的旋转角度小于或者等于目标节点的旋转角度;如果目标角度小于或者等于第二预设阈值,则控制目标节点按照目标角度进行旋转,并控制目标节点的父节点按照第二预设角度进行旋转,其中,第二预设角度小于或者等于目标角度。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行获取头部追踪器的头部位置信息;根据头部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲和身体移动。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行将人体模型的左手节点和右手节点合并为手部节点;和/或将人体模型的左腿节点和右腿节点合并为腿部节点,其中,合并得到的手部节点和腿部节点为人体模型头部节点的父节点。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行获取头部追踪器的头部位置信息和手部追踪器的手部位置信息;根据头部位置信息和手部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲和手臂旋转。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行获取头部追踪器的头部位置信息、手部追踪器的手部位置信息和脚部追踪器的脚部位置信息;根据头部位置信息、手部位置信息和脚部位置信息控制人体模型进行以下至少一个动作:头部转动、身体弯曲、身体移动、手臂移动、手臂弯曲、手臂旋转、腿部移动、腿部弯曲和腿部旋转。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行建立具有预设身体比例的人体模型;根据追踪器的位置信息获取目标人体的实际身体比例;根据实际身体比例缩放人体模型,以使人体模型的身体比例与目标人体的身体比例一致。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。