一种基于计算机的虚拟滑雪实现方法及***
技术领域
本发明涉及计算机应用领域,更具体地说,涉及一种基于计算机的虚拟滑雪实现方法及***。
背景技术
随着科学技术的飞速发展,计算机在运动健身方面的应用越来越广,比如说利用计算机进行虚拟滑雪运动,就可以不受任何天气气候等自然因素的影响。目前在计算机上进行虚拟滑雪运动或游戏的实现方式有以下几种:
使用计算机键盘操作角色动作。键盘上某些键用来控制角色移动方向,某些键用来控制滑雪加速动作。
使用带有重力传感器、陀螺仪、及少数按键的手柄。重力传感器用于判断动作的力度,陀螺仪用于判断动作的方向,少数按键用于菜单选择等。手柄的动作力度、方向、按键信息通过蓝牙功能传入到终端计算机,供滑雪运动项目软件使用。
现有技术中存在诸多缺点。
使用计算机键盘操作角色动作。这种方法本身只是使用了人的手,而且只能用键盘进行操作,相对于真实滑雪运动来说,相差甚远,如果按这种方式来实现运动项目,那么所有的运动项目毫无差异。所以,这种实现方式,只能算是一种滑雪游戏的实现方式。
使用带有重力传感器、陀螺仪、及少数按键的手柄。这种方法虽然得到了动作的力度,方向和类型,但是这里面有几个很大的缺陷:一、没有用户的准确位置信息。虽然在这种滑雪项目中也实现了角色移动,但是其移动是由两个手柄同时向一个方向运动来实现,而不是人身体本身的移动。这样很可能人身体并没有动,而滑雪项目中的角色却进行了左右移动,这是不合理的,而且也没达到通过身体的躲闪来进行锻炼身体的目的。二、将手柄放在蓝牙信号覆盖范围的任何地方做动作,甚至人背对着显示器都可以进行游戏,这明显是有悖常理的。所以从运动健身的角度来说,使用重力传感器、陀螺仪,以及少数按键实现的滑雪项目,并不是真正的滑雪运动健身项目,也只能算是个游戏项目。
发明内容
本发明要解决的技术问题在于,针对现有技术不能真实地反映出用户在整个滑雪过程中的位置和动作,无法让用户真正地锻炼身体,无法提高用户的运动能力和反应能力的缺陷,提供一种基于计算机的虚拟滑雪实现方法及***。
本发明解决其技术问题所采用的技术方案是:构造一种基于计算机的虚拟滑雪实现方法,其特征在于,包括以下步骤:
1)在用户身上设置跟踪点,第一类跟踪点代表所述用户的头部或躯干的空间位置信息,第二类跟踪点代表所述用户的左右手的空间位置信息,并且分别采集所述第一类跟踪点和第二类跟踪点的位置数据;
2)将所述第一类跟踪点和第二类跟踪点的位置数据映射到虚拟坐标系中,分别作为代表虚拟人身体和左右手的位置数据;
3)分别计算所述虚拟人左右手的速度数据、加速度数据和力度数据;
4)判断所述虚拟人左右手是否有划线动作,若有则判断所述划线动作是否为滑雪动作,若为滑雪动作则分别计算所述虚拟人滑雪的加速度数据和速度数据;
5)根据上述计算结果显示所述虚拟人滑雪的过程。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述步骤1)中所述第一类跟踪点设置在所述用户头戴的帽子上,所述第二类跟踪点分别设置在所述用户手持的左右手柄上。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述步骤2)包括:
21)建立所述虚拟坐标系以及所述虚拟坐标系中所述代表用户的虚拟人;
22)将所述第一类跟踪点的位置数据映射到所述虚拟坐标系中,作为所述虚拟人身体的位置数据,并实时显示所述虚拟坐标系中所述虚拟人身体的位置;
23)将所述第二类跟踪点的位置数据映射到所述虚拟坐标系中,作为所述虚拟人左右手的位置数据,并实时显示所述虚拟坐标系中所述虚拟人左右手的位置。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述步骤3)包括:
31)根据所述虚拟人左右手的位置数据计算所述虚拟人左右手的速度数据;
32)根据所述虚拟人左右手的速度数据计算所述虚拟人左右手的加速度数据;
33)根据所述虚拟人左右手的加速度数据计算所述虚拟人左右手的力度数据。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述步骤4)中判断所述虚拟人左右手有划线动作,需要满足以下三个条件:
a1)所述虚拟人左右手在起止点间的速度大小超过一个阀值;
a2)所述虚拟人左右手在所述起止点间的速度方向不变;
a3)所述起止点间的距离超过一个阀值,
判断所述划线动作为滑雪动作,需要满足以下三个条件:
b1)所述虚拟人左右手均做直线运动;
b2)所述直线运动方向向下;
b3)所述虚拟人左右手同时运动。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述步骤5)包括:
51)根据所述虚拟人左右手的力度数据计算所述虚拟人滑雪的加速度数据;
52)根据所述虚拟人滑雪的加速度数据速度数据计算所述虚拟人滑雪的速度数据。
在本发明所述的基于计算机的虚拟滑雪实现方法中,所述方法还包括在滑雪过程中增设道具和以下步骤:
61)判断所述虚拟人身体的位置数据是否在所述道具的范围之内,若是则转入62);
62)判断所述道具为何种道具,若为障碍物则所述虚拟人摔倒,若为能量物则所述虚拟人加速。
本发明还提供一种基于计算机的虚拟滑雪实现***,包括识别模块、数据处理模块和显示模块,其中,
所述识别模块用于不断采集所述第一类跟踪点和第二类跟踪点的位置数据,其中,所述第一类跟踪点代表用户的头部或躯干的空间位置信息,所述第二类跟踪点代表用户的左右手的空间位置信息;
所述数据处理模块与所述识别模块相连,用于将所述第一类跟踪点和第二类跟踪点的位置数据分别映射到虚拟坐标系中,分别作为代表虚拟人身体和左右手的位置数据,并分别计算所述虚拟人左右手的速度数据、加速度数据和力度数据,以及判断所述虚拟人左右手是否有划线动作,若有则继续判断所述划线动作是否为滑雪动作;
所述显示模块与所述数据处理模块相连,用于实时显示所述虚拟坐标系中所述虚拟人身体和左右手的位置,以及显示所述虚拟人的滑雪过程。
实施本发明的基于计算机的虚拟滑雪实现方法及***中,具有以下有益效果:
能够对帽子和手柄进行实时跟踪,根据代表用户的虚拟人身体和左右手的位置数据,计算判定滑雪动作,使虚拟人更真实地反映出用户在整个滑雪过程中的位置和动作;
本发明接近真实的运动健身,让用户足不出户就可以享受虚拟滑雪运动,真正地锻炼身体,提高用户手臂和身体的运动能力;
本发明还增设了滑雪过程中的道具,让运动更具有趣味性和娱乐性,提高用户的反应能力。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明优选实施例基于计算机的虚拟滑雪实现方法的流程图;
图2是本发明优选实施例基于计算机的虚拟滑雪实现方法中虚拟坐标系示意图;
图3是本发明优选实施例基于计算机的虚拟滑雪实现方法中划线动作的方向示意图;
图4是本发明优选实施例基于计算机的虚拟滑雪实现***的结构示意图。
具体实施方式
下面结合附图来说明具体实施方式。
请参阅图1,为本发明优选实施例基于计算机的虚拟滑雪实现方法的流程图。如图1所示,基于计算机的虚拟滑雪实现方法,包括以下步骤1)至步骤6)。
1)在用户身上设置跟踪点,第一类跟踪点代表用户的头部或躯干的空间位置信息,第二类跟踪点代表用户的左右手的空间位置信息,并且分别采集第一类跟踪点和第二类跟踪点的位置数据。其中:
第一类跟踪点设置在用户头戴的帽子上,第二类跟踪点分别设置在用户手持的左右手柄上,利用识别模块分别采集第一类跟踪点和第二类跟踪点的位置数据,识别模块将采集到的第一类跟踪点和第二类跟踪点的位置数据传送给数据处理模块,采集频率可以为30HZ。
设置第一类跟踪点和第二类跟踪点的物品不限于上述的帽子和手柄。第一类跟踪点也可以设置在用户能够在头部或者躯干部佩戴的其他物品上,比如头箍或者腰带。第二类跟踪点也可以设置在用户能够在手部佩戴的其他物品上,比如手套。
2)将第一类跟踪点和第二类跟踪点的位置数据分别映射到虚拟坐标系中,分别作为代表用户的虚拟人身体和左右手的位置数据。具体方法如下:
利用数据处理模块建立虚拟坐标系以及虚拟坐标系中代表用户的虚拟人。请参阅图2,为本发明优选实施例基于计算机的虚拟滑雪实现方法中虚拟坐标系示意图。如图2所示,向右x变大,向左x变小;向上y变大,向下y变小;向前z变大,向后z变小,坐标原点与视频摄像头的位置重合。
利用数据处理模块将帽子的位置数据映射到虚拟坐标系中,作为虚拟人身体的位置数据,并实时显示虚拟坐标系中虚拟人身体的位置。为表述方便,将虚拟人身体记作A点,A点的位置数据为(xA1,yA1,zA1),(xA2,yA2,zA2),……,(xAi,yAi,zAi),……,其中(xAi,yAi,zAi)代表着A点在第i时刻的位置数据。
利用数据处理模块将左右手柄的位置数据映射到虚拟坐标系中,作为虚拟人左右手的位置数据,并实时显示虚拟坐标系中虚拟人左右手的位置。由于左手和右手的处理方法一致,所以只讨论一个手,此处以左手为例。为表述方便,将左手记作B点,B点的位置数据为(xB1,yB1,zB1),(xB2,yB2,zB2),……,(xBi,yBi,zBi),……,其中(xBi,yBi,zBi)代表着B点在第i时刻的位置数据。
3)分别计算虚拟人左右手的速度数据、加速度数据和力度数据。此处仍以左手为例,具体方法如下:
为了描述上的方便,将B点的位置数据重新改写为:(x1,y1,z1),(x2,y2,z2),……,(xi,yi,zi),……,其中(xi,yi,zi)代表着第i时刻B点的位置数据。有了B点在各个时刻的位置数据,可以进一步求出B点的运动数据,如速度,加速度,力度等。具体计算各个运动数据的公式如下:
第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,加速度是三个方向上各个方向上的加速度。
第i时刻的力度公式:fix=aix×k、fiy=aiy×k、fiz=aiz×k,k是一个比例系数。
4)判断虚拟人左右手是否有划线动作,若有则继续判断划线动作是否为滑雪动作。具体方法如下:
请结合参阅图3,为本发明优选实施例基于计算机的虚拟滑雪实现方法中划线动作的方向示意图。如图3所示,本发明中手柄划线动作被划分为如八个方向,并且按时钟的刻度来表达,分别是0点方向、1Half方向、3点方向、4Half方向、6点方向、7Half方向、9点方向、10Half方向。以0点方向为例,图3中R点为起始点,B点为结束点。
判断虚拟人左右手有划线动作,需要满足以下三个条件:
a1)虚拟人左右手在起止点间的速度大小超过一个阀值;
a2)虚拟人左右手在起止点间的速度方向不变;
a3)起止点间的距离超过一个阀值。
若有则继续判断划线动作是否为滑雪动作,否则将该运动视为用户无意识的随意移动。
判断划线动作为滑雪动作,需要满足以下三个条件:
b1)虚拟人左右手均做直线运动;
b2)直线运动方向向下,比如可以为图3中的6点方向;
b3)虚拟人左右手同时运动。
5)分别计算虚拟人滑雪的加速度数据和速度数据。具体方法如下:
根据虚拟人左右手的力度数据计算虚拟人滑雪的加速度数据,再根据虚拟人滑雪的加速度数据速度数据计算虚拟人滑雪的速度数据。
6)在滑雪过程中增设道具并判断虚拟人身体是否碰到道具。具体方法如下:
通过比较虚拟人身体的位置数据和道具的位置数据,判断虚拟人身体的位置数据是否在道具的范围之内,若是则进行下一步判断,再判断道具为何种道具,若为障碍物则判定并显示虚拟人摔倒,若为能量物则判定并显示虚拟人加速。摔倒时,虚拟人在一定时间内无法运动,加速时,虚拟人在一定时间内获得额外的加速度,该时间和加速度可预先设定。
以上步骤1)至步骤6)构成了本发明优选实施例的流程,其中,虚拟人滑雪的速度数据以及由虚拟人碰到道具带来的反应构成虚拟人完整的滑雪过程。
请参阅图4,为本发明优选实施例基于计算机的虚拟滑雪实现***的结构示意图。如图4所示,该***包括识别模块、数据处理模块和显示模块。
识别模块用于不断采集帽子和左右手柄的位置数据,并且将采集到的帽子和左右手柄的位置数据传送给数据处理模块,识别模块和数据处理模块之间可以用USB数据线连接。
数据处理模块与识别模块相连,用于将帽子和左右手柄的位置数据映射到虚拟坐标系中,分别作为代表用户的虚拟人身体和左右手的位置数据,并分别计算虚拟人左右手的速度数据、加速度数据和力度数据,以及判断虚拟人左右手是否有划线动作,若有则继续判断划线动作是否为滑雪动作,判断虚拟人身体是否碰到道具,比如障碍物和能量物,若碰到则判定虚拟人相应的反应,比如摔倒和获得额外加速度。
显示模块与数据处理模块相连,用于实时显示虚拟坐标系中虚拟人身体和左右手的位置,以及显示虚拟人完整的滑雪过程。
该识别模块可以是视频摄像头,该数据处理模块可以是计算机处理器,该显示模块可以是计算机显示器,且识别模块和数据处理模块之间可以通过USB数据线连接。
下面详细地描述如何利用本发明提供的方法及***实现虚拟滑雪运动。
开启终端计算机、显示器屏幕上显示一个健身项目大厅,进入虚拟健身大厅,在这个大厅里可以选择具体的运动健身项目,这里选择虚拟滑雪项目。进入虚拟滑雪项目后,在显示器上会看到一个虚拟滑雪赛道场景,有一个代表用户的虚拟人站在赛道上,画面以第三人称视角从角色背后显示整个滑雪过程,让用户身临其境。
用户头上戴一个帽子,左右手各拿一个手柄,这样就可以通过帽子的跟踪点表明用户的左右方向的运动,通过手柄的跟踪点判断手的位置和手的动作。开始滑雪后,用户左右手各握住一个手柄模拟握住滑雪杖的动作,虚拟人则会依据用户左右手的动作做出滑雪动作,当用户在现实中做双手的上下往复动作时,场景中虚拟人的下滑速度会随用户左右手运动速度而增加。用户戴着帽子左右移动,虚拟人则会在赛道中左右移动,当虚拟滑雪赛道上有道具,比如障碍物或者能量物出现,用户可通过自己身体的左右移动操纵虚拟人在赛道中左右驰骋,以便躲避障碍物或者获取能量物。
现实中的用户的各种动作都会被视频摄像头拍下来,然后通过软件实时分析这些动作,判断动作的标准性,判定出动作的种类,之后传递相应的动作命令给滑雪项目,滑雪项目会显示相关的动画。
每一段赛道都有一个限定完成时间,用户必须尽量躲避障碍物并且双手上下往复动作才可顺利到达终点。滑雪游戏不仅锻炼用户的手臂和跑动,还通过躲避障碍物和获取能量物锻炼用户的反应能力。
至此,完整地描述了如何利用本发明提供的方法及***实现虚拟滑雪运动项目。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。