发明内容
本发明的目的在于提供一种基于计算机实现虚拟拳击的方法和系统,该方法和系统提高同步性和真实感。
本发明的技术方案如下:
一种基于计算机实现虚拟拳击的方法,其特征在于,包括以下步骤:
S1、获取操作者不同时刻的头部空间位置数据和手部空间位置数据;S2、利用所述手部空间位置数据判断是否发生出拳动作及生成拳法判定参量;
S3、将拳法判定参量与预设参量进行对比,判断操作者的出拳动作的种类;
S4、在显示系统中显示虚拟人物,其中根据所述头部空间位置数据控制所述虚拟人物的显示位置,根据所述出拳动作的种类控制所述虚拟人物的出拳动作显示。
所述的基于计算机实现虚拟拳击的方法,其中,所述步骤S1包括:S11、在操作者的头部和手部分别设置跟踪点,利用双目摄像头获取所述跟踪点的图像;S12、根据该图像确定所述头部空间位置数据以及所述手部空间位置数据。
所述的基于计算机实现虚拟拳击的方法,其中,所述步骤S2包括:S21.利用所述手部空间位置数据寻找操作者出拳动作的开始点和结束点;S22.若未找到所述开始点和所述结束点则认定未发生出拳动作,若找到所述开始点和所述结束点,则判断所述开始点和所述结束点之间的速度峰值是否大于速度峰值阈值;S23.若所述速度峰值小于所述速度峰值阈值则认定未发生出拳动作,若所述速度峰值大于所述速度峰值阈值,则判断所述开始点和所述结束点之间的距离是否大于距离阈值;S24.若所述距离小于所述距离阈值则认定未发生出拳动作,若所述距离大于所述距离阈值,则认定发生出拳动作。
所述的基于计算机实现虚拟拳击的方法,其中,在所述步骤S21中,根据所述手部空间位置数据计算手部在不同时刻的运动方向及速度,若存在所述运动方向指向操作者的前方且所述速度大于速度开始阈值的第一时刻,则将所述第一时刻的手部空间位置数据作为所述开始点。
所述的基于计算机实现虚拟拳击的方法,其中,在所述步骤S21中,在判定所述开始点后,若存在所述速度小于速度停止阈值且所述手部空间位置数据相较于所述开始点位于操作者的更前方的第二时刻,则将所述第二时刻的手部空间位置数据作为所述结束点。
所述的基于计算机实现虚拟拳击的方法,其中,所述步骤S2还包括:S25、利用所述出拳动作的开始点和结束点,计算所述开始点和所述结束点的连线,并计算该连线在参考平面的投影同参考轴的夹角,并将该夹角作为所述拳法判定参量。
所述的基于计算机实现虚拟拳击的方法,其中,在所述步骤S1中,在由X轴、Y轴和Z轴构成的三维坐标系内获取所述头部空间位置数据和所述手部空间位置数据,其中X轴指向操作者的右侧,Y轴指向操作者的上方,Z轴指向操作者的前侧,在所述步骤S25中,计算该连线在X轴和Z轴所定义的XZ平面的投影同X轴负轴的夹角α、以及该连线在X轴和Y轴所定义的YZ平面的投影同Y轴正轴的夹角β,并将该夹角α和夹角β作为所述拳法判定参量。
所述的基于计算机实现虚拟拳击的方法,其中,所述步骤S3包括:若所述夹角α和所述夹角β不在所述预设参量中的任何一个范围内,则分别判断所述夹角α和所述夹角β落在所述预设参量中每个范围的概率。
本发明还提供一种基于计算机实现虚拟拳击的系统,其中,包括:位置数据获取装置,用于获取操作者不同时刻的头部空间位置数据和手部空间位置数据;出拳判定装置,用于利用所述手部空间位置数据判断是否发生出拳动作及生成拳法判定参量;出拳种类判断装置,用于将拳法判定参量与预设参量进行对比,判断操作者的出拳动作的种类;显示处理装置,用于在显示系统中显示虚拟人物,其中根据所述头部空间位置数据控制所述虚拟人物的显示位置,根据所述出拳动作的种类控制所述虚拟人物的出拳动作显示。
所述的基于计算机实现虚拟拳击的系统,其中,所述位置数据获取装置包括:标识操作者头部的头部目标件、用于标识操作者手部的手部目标件;获取头部目标件和手部目标件图像的图像获取单元;根据该图像确定头部、手部空间位置数据的图像分析单元。
本发明所提供的基于计算机实现虚拟拳击的方法和系统,由于其方法和系统是基于操作者头部空间位置数据和手部的空间位置数据进行的后续处理,使得游戏中的图像能够跟随操作者的手部实时移动,提高了同步性;由于采用了与预设参量进行对比,判断所述头部运动轨迹、手部运动轨迹的合理性和种类,使得该方法较之现有技术提高了真实感。
具体实施方式
以下结合具体实施方式和附图对本发明进行详细的说明。
本实施方式中基于计算机实现虚拟拳击的方法,如图1所示,包括:
100、获取操作者不同时刻的头部空间位置数据和手部空间位置数据;
最佳实施方式中该步骤通过以下步骤实现:
110、在操作者的头部和手部分别设置跟踪点,利用双目摄像头获取所述跟踪点的图像;
120、根据该图像确定所述头部空间位置数据以及所述手部空间位置数据。
当然获取操作者头部、手部的空间位置数据还可以通过其他方式实现,例如磁传感器方式。
在任意一时刻,一个目标的空间位置数据表现为一个三元组(x,y,z),x代表数据点在X轴位置,y代表数据点在Y轴位置,z代表数据点在Z轴位置,这个坐标系如图2所示,向右x变大,向左x变小;向上y变大,向下y变小;向前z变大,向后z变小。
例如,每秒对一个目标产生三十个标识空间位置的三元组,利用同一个目标在一段时间内的空间位置数据描述出目标的运动轨迹。
头部位置数据用于反应人的位置信息,手部位置数据反应人的左右手位置信息。由于左手和右手的处理方法一致,此处只论述一个手和头部位置数据的处理方法,首先,用A点和B点分别标识头部位置和手部位置;
A点的空间位置数据为(xA1,yA1,zA1),(xA2,yA2,zA2),……,(xAi,yAi,zAi),……,其中(xAi,yAi,zAi)代表着A点在第i时刻的空间位置;A点反应人的位置,所以A点数据的使用方式比较简单,直接取其数据值使用即可,不需要其他更多的分析;
B点的空间位置数据为(xB1,yB1,zB1),(xB2,yB2,zB2),……,(xBi,yBi,zBi),……,其中(xBi,yBi,zBi)代表着B点在第i时刻的空间位置。B点的使用方式比较复杂,这里详细阐述本实用新型中是怎么使用B点数据,也就是手的位置数据点使用方式。
为了描述方便,将B点的空间位置数据重新改写为:(x1,y1,z1),(x2,y2,z2),……,(xi,yi,zi),……,其中(xi,yi,zi)代表着第i时刻,手部空间位置坐标。
根据手部在各个时刻的空间位置坐标,可以进一步求出手部的运动信息,如速度,加速度,力度等。
具体计算各个数据的公式为:
第i时刻的速度公式:vix=(xi-xi-1)/t、viy=(vi-vi-1)/t、viz=(vi-vi-1)/t,其中t=1/30s;
速度是三个方向上各个方向上的速度。
第i时刻的加速度公式:aix=(vix-v(i-1)x)/t、aiy=(viy-v(i-1)y)/t、aiz=(viz-v(i-1)z)/t,其中t=1/30s;
加速度是三个方向上各个方向上的加速度。
有了各个时刻各个方向上的加速度,就可以对对应时刻对应方向上的用力情况作出分析,
fix=aix×k、fiy=aiy×k、fiz=aiz×k,k是一个比例系数。
同时利用头部的运动轨迹、手部的运动轨迹就能够描述出人体的运动变换,将该变化量与预设参量进行对比和关联,
200、利用所述手部空间位置数据判断是否发生出拳动作及生成拳法判定参量;
210、利用所述手部空间位置数据寻找操作者出拳动作的开始点和结束点;
I.寻找的开始点应满足两个条件:
i.轨迹的运动方向是向前的;
ii.开始点的速度必须达到一个速度开始阈值。
II.寻找一个出拳动作的结束点。结束点必须满足三个条件:
i.已经找到开始点;
ii.结束点的速度小于一个结束速度阈值;
iii.结束点必须在开始点的前方,即结束点的Z坐标必须大于开始点的Z坐标。
220、若未找到所述开始点和所述结束点则认定未发生出拳动作,若找到所述开始点和所述结束点,则判断所述开始点和所述结束点之间的速度峰值是否大于速度峰值阈值;
230.若所述速度峰值小于所述速度峰值阈值则认定未发生出拳动作,若所述速度峰值大于所述速度峰值阈值,则判断所述开始点和所述结束点之间的距离是否大于距离阈值;
240.若所述距离小于所述距离阈值则认定未发生出拳动作,若所述距离大于所述距离阈值,则认定发生出拳动作。
250、利用所述出拳动作的开始点和结束点,计算所述开始点和所述结束点的连线,并计算该连线在参考平面的投影同参考轴的夹角,并将该夹角作为所述拳法判定参量。具体可采用以下:
开始点和结束点的连线在XZ平面的投影Lxz同X轴负轴的夹角,记为α,如图3。开始点和结束点的连线在YZ平面的投影Lyz同Y轴正轴的夹角,记为β,如图4;并将该夹角α和夹角β作为所述拳法判定参量。
300、将拳法判定参量与预设参量进行对比,判断操作者的出拳动作的种类;拳法的判定是根据两个角度来进行的:
每种拳法的夹角α和夹角β是不同的,可以定义出每种拳法这两个角度的范围,而且每两种拳法的范围不相交。预设参量中每种拳法的角度范围定义可以示例为:
直拳: α[70,110] β(40,180]
左摆拳:α(110,180] β(40,180]
右摆拳:α[0,70) β(40,180]
勾拳: α[0,180] β[0,40]
在计算出每次出拳动作的夹角α和夹角β后,分别判断它们是否落在预设参量中某种拳法的角度范围内,如果在,则判定为这种拳法。如果不在任何一个范围内,则计算一个可能为某种拳法的百分比,例如某种轨迹可能介于勾拳和摆拳标准的角度范围之间,这时则不精确的给出具体的拳法,而是给出两个百分比,一个表示勾拳的概率,一个表示摆拳的概率,具体的判定由拳击项目根据需求进行判定。
400、在显示系统中显示虚拟人物,其中根据所述头部空间位置数据控制所述虚拟人物的显示位置,根据所述出拳动作的种类控制所述虚拟人物的出拳动作显示。
由于该方法是基于操作者头部空间位置数据和手部的空间位置数据进行的后续处理,使得游戏中的图像能够跟随操作者的手部实时移动,提高了同步性;由于采用了与预设参量进行对比,判断所述头部运动轨迹、手部运动轨迹的合理性和种类,使得拳击项目更真实。能够准确的根据挥拳的轨迹判定出拳法种类,不是随心所欲的通过向后的运动来模拟勾拳等。本方法使拳击游戏成为一项运动健身,可以让健身者足不出户就可以享受拳击运动,锻炼身体。
本发明还提供一种基于计算机实现虚拟拳击的系统,见图5,包括依次连接的位置数据获取装置、出拳判定装置、动作种类判断装置、显示处理装置;
位置数据获取装置,用于获取操作者不同时刻的头部空间位置数据和手部空间位置数据;位置数据获取装置包括:头部目标件、手部目标件、图像获取单元、图像分析单元;头部目标件用于标识操作者头部、手部目标件用于标识操作者手部;图像获取单元获取头部目标件和手部目标件图像;图像分析单元根据该图像确定头部、手部空间位置数据。所述头部目标件和手部目标件采用反射镜,图像获取单元是双目摄像头。
出拳判定装置,用于利用所述手部空间位置数据判断是否发生出拳动作及生成拳法判定参量;动作种类判断装置,用于将拳法判定参量与预设参量进行对比,判断操作者的出拳动作的种类;显示处理装置,用于在显示系统中显示虚拟人物,其中根据所述头部空间位置数据控制所述虚拟人物的显示位置,根据所述出拳动作的种类控制所述虚拟人物的出拳动作显示。
以下以实际应用为例,对本发明做详细描述。
本发明所使用到的硬件有:头部目标件采用帽子,手部目标件采用主手柄、副手柄,图像获取单元采用双目视频摄像头;图像分析单元、轨迹计算装置、动作判断装置和图像处理装置集成在终端计算机,视频摄像头用USB数据线和终端计算机连接。终端计算机上的软件有:计算机操作系统、虚拟健身大厅软件、虚拟拳击项目等。
开启终端计算机、显示器上会有一个健身项目大厅,进入虚拟健身大厅,在这个大厅里可以选择具体的运动健身项目,这里选择虚拟拳击项目。进入虚拟拳击项目后,显示器显示一个虚拟拳击比赛场景,有两个角色站在擂台上,一个是玩家(即操作者),另一个是对手。帽子戴在操作者头上,左右手各拿一个手柄,系统工作时,玩家的动作被视频摄像头拍下来;
图像分析单元根据这些图像确定头部、手部空间位置数据;任意一时刻,一个目标的空间位置数据表现为一个三元组(x,y,z),x代表数据点在X轴位置,y代表数据点在Y轴位置,z代表数据点在Z轴位置,这个坐标系如图(1)所示,向右x变大,向左x变小;向上y变大,向下y变小;向前z变大,向后z变小,坐标原点为双目视频摄像头中心,为了阐述上的方便,称这个坐标系为摄像头坐标系。由于每秒对一个目标产生三十个这样的三元组,因此利用同一个目标在一段时间内的空间位置数据就能描述出目标的运动状态,同时利用多个目标的空间位置数据的话,就能描述出人体运动轨迹。
出拳判定装置利用所述手部空间位置数据判断是否发生出拳动作及生成拳法判定参量;
在拳击项目中,至少使用三个目标,一个用于反应人的位置信息,一个用于反应人的左手信息,另一个用于反应人的右手信息。由于左手和右手的处理方法一致,所以只讨论一个手,统称手的标志点为一个点,于是就只有帽子和手这两个点了。为了描述上的方便,将这两个点分别标记为A点和B点。A点的空间位置数据为(xA1,yA1,zA1),(xA2,yA2,zA2),……,(xAi,yAi,zAi),……,其中(xAi,yAi,zAi)代表着A点在第i时刻的空间位置;B点的空间位置数据为(xB1,yB1,zB1),(xB2,yb2,zB2),……,(xBi,yBi,zBi),……,其中(xBi,yBi,zBi)代表着B点在第i时刻的空间位置。在本发明中,将A点用于反应人的位置,B点用于反应手的运动,所以A点数据的使用方式比较简单,直接取其数据值使用即可,不需要其他更多的分析。为了描述上的方便,我们将B点的空间位置数据重新改写为:(x1,y1,z1),(x2,y2,z2),……,(xi,yi,zi),……,其中(xi,yi,zi)代表着第i时刻,手柄的空间位置坐标。有了手柄在各个时刻的空间位置坐标,可以进一步求出手柄的运动信息,如速度,加速度,力度等。具体计算各个数据的公式为:
第i时刻的速度公式:vix=(xi-xi-1)/t、viy=(vi-vi-1)/t、viz=(vi-vi-1)/t,其中t=1/30s;
速度是三个方向上各个方向上的速度。
第i时刻的加速度公式:aix=(vix-v(i-1)x)/t、aiy=(viy-v(i-1)y)/t、aiz=(viz-v(i-1)z)/t,其中t=1/30s;
加速度是三个方向上各个方向上的加速度。
有了各个时刻各个方向上的加速度,就可以对对应时刻对应方向上的用力情况作出分析,fix=aix×x、fiy=aiy×k、fiz=viz×k,k是一个比例系数。
I.寻找一个出拳动作的开始点,该开始点应满足两个条件:
i.轨迹的运动方向是向前的;
ii.开始点的速度必须达到一个速度开始阈值。
II.寻找一个出拳动作的结束点。结束点必须满足三个条件:
i.已经找到开始点;
ii.结束点的速度小于一个结束速度阈值;
iii.结束点必须在开始点的前方,即结束点的Z坐标必须大于开始点的Z坐标。
III.记录开始点和结束点之前的所有点的速度峰值。这个峰值必须大于一个速度峰值的阈值。
IV.记录开始点和结束点之间的距离。这个距离必须大于一个距离阈值。
满足了上面所有的条规则,就可以判定出一个出拳动作。
拳法判定参量是根据两个角度来进行的:
I.开始点和结束点的连线在XZ平面的投影Lxz同X轴负轴的夹角α,如图3。
II.开始点和结束点的连线在YZ平面的投影Lyz同Y轴正轴的夹角β,如图4。
出拳种类判断装置将拳法判定参量与预设参量进行对比,判断操作者的出拳动作的种类;
每种拳法的夹角α和夹角β是不同的,可以定义出每种拳法这两个角度的范围,而且每两种拳法的范围不相交。每种拳法的角度范围定义可以示例为:
直拳: α[70,110] β(40,180]
左摆拳:α(110,180] β(40,180]
右摆拳:α[0,70) β(40,180]
勾拳: α[0,180] β[0,40]
在计算出每次出拳动作的夹角α和夹角β后,分别判断它们是否落在预设参量中某种拳法的角度范围内,如果在,则判定为这种拳法。如果不在任何一个范围内,则计算一个可能为某种拳法的百分比,例如某种轨迹可能介于勾拳和摆拳标准的角度范围之间,这时则不精确的给出具体的拳法,而是给出两个百分比,一个表示勾拳的概率,一个表示摆拳的概率,具体的判定由拳击项目根据需求进行判定。
显示处理装置用于在显示系统中显示虚拟人物,其中根据所述头部空间位置数据控制所述虚拟人物的显示位置,根据所述出拳动作的种类控制所述虚拟人物的出拳动作显示。操作者再根据需要进行出拳和闪躲,具体描述为:当玩家在现实中前、后、左、右进行移动时,拳击项目里的玩家角色也会进行相应的前、后、左、右进行移动。当玩家在现实中分别前、后、左、右、上、下移动左右手时,拳击项目里的玩家角色的左右手也会分别做前、后、左、右、上、下的移动。当玩家在现实中做出直拳、勾拳、摆拳的动作时,拳击项目中的角色也会做出相应的直拳、勾拳、摆拳的动作,让玩家得到最真实的体验。在判定玩家的击拳击中对手后,会有一些击打的效果动画触发,比如对手的挨打动画等,让玩家打得很过瘾。在对手出拳时,玩家可以进行格挡和闪躲,格挡是根据对手的拳路,玩家打一个相克的拳来进行格挡,闪躲是玩家移动身体来避开对手的击打。
本系统使用手柄和帽子等来控制拳击项目,不使用键盘鼠标等;实时跟踪手柄和帽子等多目标的位置;记录手柄的实际运动轨迹,对人体姿态进行定位,按照一个拳击动作的开始点,结束点位置关系,计算出动作的角度,根据角度判定出拳法的种类,更真实的判定人体的实际动作。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。