基于虚拟现实的全身动作捕捉方法和系统与流程

文档序号:17739337发布日期:2019-05-22 03:35阅读:639来源:国知局
基于虚拟现实的全身动作捕捉方法和系统与流程

本发明涉及虚拟现实领域,特别涉及一种基于虚拟现实的全身动作捕捉方法和系统。



背景技术:

全身动作捕捉一直是vr(virtualreality,虚拟现实)领域研究的热点,也是实现虚拟现实完全沉浸性的第一步,目前行业中也有很多种全身动作捕捉的解决方案,比如ikinema,optitrack等等,一套全身动作捕捉设备下来至少要数万甚至数百万元,成本过高。

目前还没有万元以下的虚拟现实全身动作捕捉解决方案,最常见即是通过控制器控制的方式与虚拟世界进行交互,这种交互方式限制双手,无法通过手指或者自然手势来触发交互效果。同时常见的能够捕捉到的人体部位,也就只有带着虚拟现实眼镜的头部,拿着控制器的双手,其余部分都没办法跟踪,也就出现了体验中只能看到双手而不能看到身体与双腿的问题,而人的身体和双腿却也是可以用来与虚拟世界进行交互的重要部分。



技术实现要素:

本发明的实施方式旨在至少解决现有技术中存在的技术问题之一。为此,本发明的实施方式需要提供一种基于虚拟现实的全身动作捕捉方法和系统。

本发明实施方式的一种基于虚拟现实的全身动作捕捉方法,其特征在于,包括:

通过kinect获得包括各个关节点原始坐标在内的人体姿态数据;

进行空间坐标计算出各个关节的旋转角度;

将各个关节的旋转角度映射到人物模型上;

通过leapmotion获取手掌及各个手指的位置数据;

将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据;

将leapmotion手掌位置重置于kinect识别空间下的手掌位置,计算手指关节旋转角度;

将手指关节旋转角度映射到人物模型的手指;

将场景摄像机放置于人物模型眼睛部位的位置,通过虚拟现实头显来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

一种实施方式中,进行空间坐标计算出各个关节的旋转角度包括:

根据以下坐标换算公式将各个关节点原始坐标从kinect空间坐标系转换为unity世界空间坐标系:

pworld=mk2wpkinect

其中,pworld表示unity世界空间下的坐标,mk2w表示从kinect空间到unity世界空间的转换矩阵,pkinect表示kinect空间下的坐标,h表示kinect传感器的高度,a表示kinect传感器的角度;

对获得的关节点在unity世界的世界坐标,按以下公式通过相邻关节点之间相减获得关节方向:

dir=pj-pjparent

其中,dir表示方向,pj表示关节点的世界坐标,pjparent表示父关节点的世界坐标;

根据关节方向计算获得用于将关节的旋转角度运用于人体模型的关节四元数。

一种实施方式中,将各个关节的旋转角度映射到人物模型上包括:

将关节四元数赋予人物模型的关节角度完成关节的旋转角度到人物模型的映射。

一种实施方式中,将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据包括:

根据以下公式将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据:

pworld=ml2wpleapmotion

其中,ml2w表示从leapmotion空间到kinect正前方向世界空间的转换矩阵,pleapmotion表示leapmotion空间下的坐标。

一种实施方式中,将场景摄像机放置于人物模型眼睛部位的位置,通过虚拟现实头显来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉包括:

在初始化阶段,将场景摄像机放置于人物模型眼睛部位的位置,将摄像机的位置与人物模型眼睛部位的位置进行相减,得到偏移值;

按照以下公式确定摄像机位置:

摄像机位置=人物模型眼睛部位的位置+偏移值

通过虚拟现实头显根据摄像机位置来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

本发明还提出一种基于虚拟现实的全身动作捕捉系统,其特征在于,包括:

第一数据获得模块,用于通过kinect获得包括各个关节点原始坐标在内的人体姿态数据;

第一计算模块,用于进行空间坐标计算出各个关节的旋转角度;

第一映射模块,用于将各个关节的旋转角度映射到人物模型上;

第二数据获得模块,用于通过leapmotion获取手掌及各个手指的位置数据;

空间坐标转换模块,用于将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据;

第二计算模块,用于将leapmotion手掌位置重置于kinect识别空间下的手掌位置,计算手指关节旋转角度;

第二映射模块,用于将手指关节旋转角度映射到人物模型的手指;

执行模块,用于将场景摄像机放置于人物模型眼睛部位的位置,通过虚拟现实头显来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

一种实施方式中,第一计算模块具体用于根据以下坐标换算公式将各个关节点原始坐标从kinect空间坐标系转换为unity世界空间坐标系:

pworld=mk2wpkinect

其中,pworld表示unity世界空间下的坐标,mk2w表示从kinect空间到unity世界空间的转换矩阵,pkinect表示kinect空间下的坐标,h表示kinect传感器的高度,a表示kinect传感器的角度;

对获得的关节点在unity世界的世界坐标,按以下公式通过相邻关节点之间相减获得关节方向:

dir=pj-pjparent

其中,dir表示方向,pj表示关节点的世界坐标,pjparent表示父关节点的世界坐标;

根据关节方向计算获得用于将关节的旋转角度运用于人体模型的关节四元数。

一种实施方式中,第一映射模块具体用于将关节四元数赋予人物模型的关节角度完成关节的旋转角度到人物模型的映射。

一种实施方式中,空间坐标转换模块具体用于根据以下公式将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据:

pworld=ml2wpleapmotion

其中,ml2w表示从leapmotion空间到kinect正前方向世界空间的转换矩阵,pleapmotion表示leapmotion空间下的坐标。

一种实施方式中,执行模块具体用于在初始化阶段,将场景摄像机放置于人物模型眼睛部位的位置,将摄像机的位置与人物模型眼睛部位的位置进行相减,得到偏移值;

按照以下公式确定摄像机位置:

摄像机位置=人物模型眼睛部位的位置+偏移值

通过虚拟现实头显根据摄像机位置来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

本发明实施方式的基于虚拟现实的全身动作捕捉方法和系统,使用kinect和leapmotion结合的消费级硬件组合方式来解决全身动捕设备成本过高的问题,并且通过坐标转换和基于关节的人物模型映射能够便捷地进行捕捉,而且包括身体和双腿都能进行交互,提高虚拟现实的沉浸感体验,进而扩展低成本虚拟现实设备的交互方式。

本发明的附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的实施方式的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:

图1是本发明实施方式的基于虚拟现实的全身动作捕捉方法的流程示意图;

图2是本发明实施方式的基于虚拟现实的全身动作捕捉系统的组成示意图;

图3是本发明实施方式的人体关节点示意图;

图4是本发明实施方式的kinect摆放时的视野示意图。

具体实施方式

下面详细描述本发明的实施方式,实施方式的示例在附图中示出,其中相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅可用于解释本发明的实施方式,而不能理解为对本发明的实施方式的限制。

请参阅图1,本发明实施方式的基于虚拟现实的全身动作捕捉方法,包括:

步骤1,通过kinect获得包括各个关节点原始坐标在内的人体姿态数据;

步骤2,进行空间坐标计算出各个关节的旋转角度;

步骤3,将各个关节的旋转角度映射到人物模型上;

步骤4,通过leapmotion获取手掌及各个手指的位置数据;

步骤5,将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据;

步骤6,将leapmotion手掌位置重置于kinect识别空间下的手掌位置,计算手指关节旋转角度;

步骤7,将手指关节旋转角度映射到人物模型的手指;

步骤8,将场景摄像机放置于人物模型眼睛部位的位置,通过虚拟现实头显来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

请参阅图2,本发明实施方式的基于虚拟现实的全身动作捕捉系统,包括:

第一数据获得模块,用于通过kinect获得包括各个关节点原始坐标在内的人体姿态数据;

第一计算模块,用于进行空间坐标计算出各个关节的旋转角度;

第一映射模块,用于将各个关节的旋转角度映射到人物模型上;

第二数据获得模块,用于通过leapmotion获取手掌及各个手指的位置数据;

空间坐标转换模块,用于将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据;

第二计算模块,用于将leapmotion手掌位置重置于kinect识别空间下的手掌位置,计算手指关节旋转角度;

第二映射模块,用于将手指关节旋转角度映射到人物模型的手指;

执行模块,用于将场景摄像机放置于人物模型眼睛部位的位置,通过虚拟现实头显来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

在该实施方式中,基于虚拟现实的全身动作捕捉方法以基于虚拟现实的全身动作捕捉系统作为步骤的执行对象,或者以系统内的各个模块作为步骤的执行对象。具体地,步骤1以第一数据获取模块作为步骤的执行对象,步骤2以第一计算模块作为步骤的执行对象,步骤3以第一映射模块作为步骤的执行对象,步骤4以第二数据获取模块作为步骤的执行对象,步骤5以空间坐标转换模块作为步骤的执行对象,步骤6以第二计算模块作为步骤的执行对象,步骤7以第二映射模块作为步骤的执行对象,步骤8以执行模块作为步骤的执行对象。

步骤1中,第一数据获得模块通过kinect获得包括各个关节点原始坐标在内的人体姿态数据。如图3所示,图示中①至⑧分别表示头、颈、肩部脊椎、脊椎中部、脊椎底部、右肩、左肩、臀部右侧、臀部左侧,分别表示右手臂的肘部、腕部、手部、手指尖和拇指,分别表示左手臂的肘部、腕部、手部、手指尖和拇指,分别表示右腿的膝盖、踝关节和脚部,分别表示左腿的膝盖、踝关节和脚部。在kinect里面,是用如图3的一系列关节点来表示人体骨架的。如图4所示,人体的各关节点位置用(x,y,z)坐标表示,这些坐标单位是米。坐标轴x、y、z是深度感应器实体的空间x、yz坐标轴。这个坐标系是右手螺旋的,kinect感应器处于原点上,z坐标轴则与kinect感应的朝向一致。y轴正半轴向上延伸,x轴正半轴(从kinect感应器的视角来看)向左延伸。利用kinect的sdk,告诉kinect需要人体姿态数据,然后创建一个骨骼事件,在打开骨骼跟踪功能。当骨架追踪启用后,运行时,库将处理一幅图像和深度数据来传递包含骨架数据的帧。可以在处理过程中的任何时候打开或关闭骨架追踪。这样有人体姿态数据后,系统就会通知,进而通过调用相应函数拿到包括各个关节点原始坐标在内的人体姿态数据。

步骤2中,第一计算模块根据以下坐标换算公式将各个关节点原始坐标从kinect空间坐标系转换为unity世界空间坐标系:

pworld=mk2wpkinect

其中,pworld表示unity世界空间下的坐标,mk2w表示从kinect空间到unity世界空间的转换矩阵,pkinect表示kinect空间下的坐标,h表示kinect传感器的高度,a表示kinect传感器的角度。因为人物模型与用户的身高及骨骼宽度不同,故不能直接将关节点坐标映射到人物模型上。

其中,转换矩阵的计算过程如下:

对获得的关节点在unity世界的世界坐标,按以下公式通过相邻关节点之间相减获得关节方向:

dir=pj-pjparent

其中,dir表示方向,pj表示关节点的世界坐标,pjparent表示父关节点的世界坐标;例如:左手肘方向=左手腕位置-左手肘位置,对照图3可知道各个节点及对应的父节点。

根据关节方向dir计算获得用于将关节的旋转角度运用于人体模型的关节四元数。例如:手肘(elbow)关节点旋转计算:

quaternion=quatemion.fromtorotation(basedir,jointdir);

通过quaternion.fromtorotation()函数获得从a方向到b方向的四元数。

步骤3中,第一映射模块将关节四元数赋予人物模型的关节角度完成关节的旋转角度到人物模型的映射。即将身体关节旋转角度数据映射到人物模型身上,此时人物模型可以与用户作出相同动作,具体如下:

3.1人物模型动作(动画)也是通过关节进行控制的

3.2将上一步得到的各个关节quaternion赋予人物模型的关节角度即可。需要注意的是相对/绝对角度的问题,上面计算出来的角度是相对角度,但是手肘的角度,也就是上臂和前臂的角度,并没有再加上整个上肢的角度。所以手肘最终的角度是肩膀角度+手肘角度。

步骤4,第二数据获得模块通过leapmotion获取手掌及各个手指的位置数据。同kinect类似,可以直接通过leapmotion可以获得各个关节点原始坐标。

步骤5中,空间坐标转换模块根据以下公式将leapmotion获取的手掌及各个手指的位置数据进行空间坐标转换处理,获得kinect识别空间下手掌及各个手指的位置数据:

pworld=ml2wpleapmotion

其中,ml2w表示从leapmotion空间到kinect正前方向世界空间的转换矩阵,该转换矩阵可参考步骤2的转换矩阵获得。pleapmotion表示leapmotion空间下的坐标。通过空间坐标转换,将leapmotion识别空间下的手掌位置及各个手指位置换算成kinect识别空间下,也即是世界空间(此处将kinect的识别空间坐标系认定为世界空间坐标系,因为kinect的识别空间和leapmotion识别空间是不同的,可以认为各自的坐标系不同)。

步骤6中,将leapmotion手掌位置重置于kinect识别空间下的手掌位置,也即是手的位置由kinect来控制,leapmotion只负责精确控制手指的灵活度。同样将手指各关节点位置由手掌位置的相对位置换算过来,并计算关节旋转角度,计算过程简略描述如下:

由于之前将方向调整好了,此处只需要通过与leapmotion手掌位置与人物模型原手掌位置相减,得到偏移值,然后所有手指关节点位置加上偏移值即可。手指关节旋转角度和步骤2中在kinect中计算关节旋转角度一样。

步骤7中,第二映射模块将步骤6计算获得的手指关节旋转角度映射到人物模型的手指。

步骤8中,执行模块将场景摄像机放置于人物模型眼睛部位的位置,通过相对位置固定跟随模型头部,在初始化阶段将摄像机的位置与人物模型眼睛部位的位置进行相减,得到偏移值;再按照以下公式确定摄像机位置:

摄像机位置=人物模型眼睛部位的位置+偏移值

通过虚拟现实头显根据摄像机位置来控制摄像机的旋转,进行虚拟现实环境下的全身动作捕捉。

综上所述,本发明实施方式的基于虚拟现实的全身动作捕捉方法和系统,使用kinect和leapmotion结合的消费级硬件组合方式来解决全身动捕设备成本过高的问题,并且通过坐标转换和基于关节的人物模型映射能够便捷地进行捕捉,而且包括身体和双腿都能进行交互,提高虚拟现实的沉浸感体验,进而扩展低成本虚拟现实设备的交互方式。

在本发明的实施方式的描述中,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的实施方式的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明的实施方式的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明的实施方式中的具体含义。

在本发明的实施方式中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。

下文的公开提供了许多不同的实施方式或例子用来实现本发明的实施方式的不同结构。为了简化本发明的实施方式的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明的实施方式可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明的实施方式提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。

在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理模块的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的实施方式的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本发明的各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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