游戏操作装置动作模式识别的方法 【技术领域】
本发明涉及一种游戏操作装置的动作分析方法,具体是一种基于三维加速度的模式识别方法。
背景技术
描述一个物体在空间中具有六个自由度的独立运动,至少需要六个测量元件分别测量沿三个坐标轴的直线位移和绕三个坐标轴的角位移。仅依据三个坐标轴上的加速度,无法描述物体在空间中的独立运动。
公开号为CN1919389A的中国发明专利申请公布说明书公开了一种游戏控制器和游戏系统,其具有由玩家通过游戏控制器来玩游戏的系统。
当游戏玩家挥动游戏操作装置时,游戏操作装置中的三维加速度传感器被用于测量游戏操作装置的三个坐标轴上的加速度。由于游戏操作装置中没有陀螺仪或其它可用于测量角度的部件,游戏系统无法测量游戏操作装置的三个坐标轴上的角位移,因此无法得到游戏操作装置在空间中的姿态变化。该专利申请中所公开的技术方案仅根据游戏操作装置的三个坐标轴上的加速度,不能辨别游戏操作装置的运动方向,无法描述游戏操作装置在空间中的运动。
根据三个坐标轴上的加速度,可以计算出游戏操作装置的受力大小。在仅有加速度的情况下,游戏系统只能根据游戏操作装置的加速度或其受力大小,实现游戏玩家通过操作游戏操作装置来控制游戏中的动作的目的。但是,由于加速度传感器是固定设置于游戏操作装置内部的,其测量加速度的自身坐标系是随游戏操作装置姿态的变化而发生变化的,朝不同方向挥动游戏操作装置时,如果游戏操作装置同时发生了运动姿态的变化,直接利用加速度数据对游戏玩家动作的模拟就可能会产生较大的失真,严重地,甚至会产生完全相反的错误的模拟。图1所示为游戏操作装置的正视图,图2所示为游戏操作装置的左视图,图3所示为游戏操作装置的自身坐标系及其受力的示意图。规定:游戏操作装置中具有凸起部分所在平面是游戏操作装置的正面,具有凹陷部分所在平面是游戏操作装置的背面;凸起和凹陷部分所处的位置是游戏操作装置的前端,与之相反的一端是游戏操作装置的后端。
玩家将游戏操作装置正面向上、前端向前的姿态水平握持时,从左向右移动游戏操作装置,游戏系统会正确识别出该运动轨迹的基本动作特征,但是如果玩家将水平握持的游戏操作装置上下翻转使得正面向下、前端向前,然后从右向左移动游戏操作装置,游戏系统仍然会认为游戏操作装置在从左向右移动,从而导致与真实动作完全相反的错误的模拟。或者,玩家将游戏操作装置正面向上、前端向前的姿态水平握持时,从左向右移动游戏操作装置,游戏系统会正确识别出该运动轨迹的基本动作特征,但是如果玩家将水平握持的游戏操作装置上下翻转使得正面向下、前端向前,仍然从左向右移动游戏操作装置,游戏系统则会认为游戏操作装置在从右向左移动,也导致与真实动作完全相反的错误的模拟。这就违背了游戏制作者的真实意图,不能通过游戏中的“虚拟玩家”模拟游戏玩家的真实动作以增加游戏的真实感和可玩性。
【发明内容】
本发明所要解决的技术问题是提供一种游戏操作装置动作模式识别地方法,能够准确地识别游戏操作装置的运动状态的基本动作特征,使得游戏系统对于游戏玩家动作的模拟更加逼真。
为解决上述技术问题,本发明游戏操作装置动作模式识别的方法的技术方案是,将所述游戏操作装置开始处于工作状态后的运动,连续地分成多个独立且完整的动作,在所述游戏操作装置进行每个动作的同时,进行如下步骤:
(1)参数初始化,以竖直方向为纵坐标建立三维参考坐标系;
(2)动作开始时对所述游戏操作装置的三维自身坐标系与所述参考坐标系进行比较,对当前的姿态角进行计算;
(3)动作开始后对所述游戏操作装置的加速度的方向和大小以及速度的方向和大小进行测算;
(4)动作结束时对所述游戏操作装置的自身坐标系与所述参考坐标系进行比较,对当前的姿态角进行计算;
(5)对动作开始时计算得到的姿态角和动作结束时计算得到的姿态角进行比较,得到所述游戏操作装置的旋转信息数据;
(6)结合对游戏操作装置的运动方向识别的结果和旋转方向识别的结果,将基于所述游戏操作装置自身三维坐标系的加速度的方向和大小以及速度的方向和大小转换为基于所述参考坐标系的加速度的方向和大小以及速度的方向和大小,并得到所述游戏操作装置在每个动作中运动轨迹的基本动作特征。
本发明通过对游戏操作装置的姿态角进行计算,使得游戏系统可以获取游戏操作装置的运动姿态,从而处理得到游戏操作装置正确的运动轨迹的基本动作特征,使得游戏系统对于游戏玩家动作的模拟更加逼真。
【附图说明】
下面结合附图和实施例对本发明作进一步详细的说明:
图1为游戏操作装置的主视图;
图2为游戏操作装置的左视图;
图3为现有的游戏操作装置自身的坐标系及其受力的示意图
图4为本发明游戏操作装置动作模式识别的方法的流程图;
图5为本发明的一个实施例对俯仰角定义的示意图;
图6为本发明的一个实施例对滚动角定义的示意图;
图7为本发明的一个实施例对偏航角定义的示意图;
图8为本发明的一个实施例参考坐标系和自身坐标系的示意图。
【具体实施方式】
本发明涉及一种游戏操作装置动作模式识别的方法,其流程如图4所示,将所述游戏操作装置开始处于工作状态后的运动,连续地分成多个独立且完整的动作,在所述游戏操作装置进行每个动作的同时,进行如下步骤:
(1)参数初始化,以竖直方向为纵坐标建立三维参考坐标系;
(2)动作开始时对所述游戏操作装置自身的三维坐标系与所述参考坐标系进行比较,对当前的姿态角进行计算;
(3)动作开始后对所述游戏操作装置的加速度的方向和大小以及速度的方向和大小进行测算;
(4)动作结束时对所述游戏操作装置的自身坐标系与所述参考坐标系进行比较,对当前的姿态角进行计算;
(5)对动作开始时计算得到的姿态角和动作结束时计算得到的姿态角进行比较,得到所述游戏操作装置的旋转信息数据;
(6)结合对游戏操作装置的运动方向识别的结果和旋转方向识别的结果,将基于所述游戏操作装置自身三维坐标系的加速度的方向和大小以及速度的方向和大小转换为基于所述参考坐标系的加速度的方向和大小以及速度的方向和大小,并得到所述游戏操作装置在每个动作中运动轨迹的基本动作特征。
所述游戏操作装置处于工作状态后的运动,是指从游戏操作装置开始与游戏系统进行通讯,并同时向游戏系统发送加速度信号,直到它与游戏系统的通讯结束,游戏操作装置在此期间的位移和姿态等物理状态发生变化的过程,具体地,该运动是由多个连续的独立且完整的单个动作组成。所述游戏操作装置的独立且完整的单个动作,是指游戏操作装置从静止、加速运动、减速运动,最后重新回到静止状态的过程。
所述每个动作开始时和结束时的加速度大小不大于1.2倍的重力加速度。
游戏操作装置包括一个三维加速度传感器,用于检测游戏操作装置三个坐标轴的加速度,并且输出三维加速度传感器产生的数据;
游戏操作装置的自身坐标系包括原点o、x轴、y轴和z轴。
游戏操作装置的三维加速度传感器的质心为原点o,图3给出了游戏操作装置的自身坐标系oxyz,结合图1、图2和图3所示,并且规定:游戏操作装置中具有凸起部分所在平面是游戏操作装置的正面,具有凹陷部分所在平面是游戏操作装置的背面;凸起和凹陷部分所处的位置是游戏操作装置的前端,与之相反的一端是游戏操作装置的后端。x轴是指游戏操作装置的主视图的横方向,并且x轴的正方向是从游戏操作装置的左侧指向它的右侧;y轴是指游戏操作装置的左视图的纵方向,并且y轴的正方向是从游戏操作装置的后部指向它的前部;z轴是指垂直于游戏操作装置的主视图所在平面,并且z轴的正方向是从游戏操作装置的正面指向游戏操作装置的背面。在图3中,若游戏操作装置受到外力F作用,并且游戏操作装置的质量为单位1,则外力F在游戏操作装置的自身坐标系中三个坐标轴上产生的加速度分别为:ax、ay和az。
所述姿态角包括俯仰角、滚动角和偏航角,所述俯仰角、滚动角和偏航角分别是所述游戏操作装置绕其自身坐标系的三个坐标轴转动的角度。
如图5、图6和图7所示,俯仰角α是指游戏操作装置仅绕x轴转动后,xy平面与水平面的夹角;滚动角β是指游戏操作装置仅绕y轴转动后,xy平面与水平面的夹角;偏航角γ是指游戏操作装置仅绕z轴转动后,游戏操作装置的中心线与转动前的y轴正方向的夹角。
当游戏操作装置仅受到重力作用而处于静止状态时,游戏操作装置的三个坐标轴上的加速度的矢量和等于1g(单位重力加速度),此时通过重力加速度在游戏操作装置的三个坐标轴上的加速度可以计算出游戏操作装置的俯仰角α和滚动角β,各坐标轴上的加速度与姿态角的对应关系为:
ax2+ay2+az2=1 ...............................................................(1)
axayaz=cosαsinβ-sinαcosαcosβ...(2)]]>
其中,加速度的单位:g(重力加速度)。由于游戏玩家在操作所述游戏操作装置时,手握持所述游戏操作装置的姿势会导致如果玩家的身体发生了转动,则偏航角必然也发生变化,所以偏航角发生变化不会导致对于动作模拟的失真,因此对偏航角不做进一步的描述。
为了确保反三角函数的唯一性,定义游戏操作装置的姿态角的取值范围:俯仰角滚动角β∈[-π,π]。姿态角的具体符号遵循以下规则:处于水平状态的游戏操作装置绕x轴顺时针旋转后的俯仰角为正,反之俯仰角为负;处于水平状态的游戏操作装置绕y轴顺时针旋转后的滚动角为正,反之滚动角为负。因此,游戏操作装置静止状态下的姿态角可以通过对公式(1)和(2)求反三角函数得到
α=-sin-1(ay)..................................................................(3)
β=tan-1(axaz)...(4)]]>
由于正弦函数的定义域为与俯仰角α的取值范围一致,因此通过公式(3)可以直接计算得到俯仰角α。正切函数的定义域而滚动角β的取值范围为[-π,π],因而存在象限判断的问题。如果在定义域内计算得到的反三角函数分别定义为α主和β主,则α=α主,β的计算方法如表1所示。
表1
所述游戏操作装置的旋转信息数据,是指通过计算游戏操作装置运动后的滚动角与运动前的滚动角的差值,得到游戏操作装置绕自身坐标系的y轴的旋转方向和旋转角度。
所述游戏操作装置的自身坐标系向参考坐标系的坐标转换,是指游戏操作装置的自身坐标系通过绕它的三个坐标轴依次转动俯仰角、滚动角和偏航角,实现自身坐标系的三个坐标轴与参考坐标系对应的三个坐标轴完全重合的过程。
所述对游戏操作装置进行动作模式识别,是指根据游戏操作装置在动作开始时的姿态角和三个坐标轴上的加速度,通过坐标转换的方法,将三维加速度传感器输出的加速度转换为在参考坐标系中的加速度,实现对游戏操作装置的基本动作特征进行识别和判断的过程。
所述游戏操作装置的基本动作特征,是指游戏操作装置在每个动作过程中所具备的至少一种方向特征,所述方向特征具体是指游戏操作装置在参考坐标系的动作过程中具有向左、向右、向上、向下、向左上、向左下、向右上、向右下、向前、逆时针旋转和顺时针旋转等特征。
如图8所示,以竖直方向为z′轴建立三维参考坐标系o′x′y′z′,其中两个坐标些的原点o和o′重合,游戏操作装置的自身坐标系oxyz与参考坐标系o′x′y′z′通过绕三个坐标轴依次转动三个角度可以实现坐标系的相互转换,从oxyz到ox′y′z′具体的转换过程为:oxyz先绕ox转α角到oxy1z1,再绕oy1转β角到ox1y1z′,最后绕oz′转γ角到ox′y′z′,用数学符号描述为
oxyz→ox(α)oxy1z1→oy1(β)ox1y1z′→oz′(γ)ox′y′z′...(5)]]>
在游戏玩家挥动游戏操作装置之前,游戏玩家会根据游戏中的具体场景对游戏操作装置的运动轨迹做出预先判断,并确定挥动游戏操作装置的基本运动方向。游戏操作装置的运动过程是一个按照游戏玩家的事先确定的路径上的移动过程。因而,在游戏玩家开始挥动游戏操作装置的较短的时间间隔内,即游戏操作装置从静止到开始做加速运动的过程中,游戏操作装置的基本运动方向就已经确定。
在游戏操作装置运动的过程中,游戏操作装置的轨迹和姿态角总是连续且平滑的。在游戏操作装置从相对静止到开始做加速运动的很短一段时间间隔内,其运动距离很小且可以近似为零的情况下,该运动可以看作是直线运动。游戏操作装置开始运动时刻的姿态角必定在游戏操作装置静止状态时刻的姿态角的邻域范围内,在时间间隔近似为零的情况下,游戏操作装置的姿态角保持不变。因此,在游戏操作装置从静止状态到游戏操作装置开始做加速运动的一定的时间间隔内,依据游戏操作装置的初始姿态角和三个坐标轴上的加速度,通过坐标转换,将游戏操作装置自身坐标系中的加速度转换为参考坐标系中的加速度,进而实现对游戏操作装置运动方向的模式识别过程。另外,根据物理运动学知识,根据游戏操作装置运动过程中的加速度,可以计算其受力大小和运动速度。
游戏操作装置自身坐标系中的加速度与参考坐标系中的加速度的对应关系为:
fx=cosβ×ax-sinβ×az......................................................(6)
fz=cosαsinβ×ax+cosαcosβ×az..........................................(7)
其中,fx和fz表示游戏操作装置受到外力f作用而在参考坐标系投影后得到的加速度。在参考坐标系ox′y′z′中,当fx>0时,表示游戏操作装置向ox′正方向运动(向右);当fz>0时,表示游戏操作装置向oz′正方向运动(向下);反之,则向相应坐标轴的负方向运动。这样,就可以判断游戏操作装置运动的基本动作特征:向左、向右、向上、向下、向左上、向左下、向右上、向右下、向前、逆时针旋转和顺时针旋转等。
综上所述,本发明通过对游戏操作装置的姿态角进行计算,使得游戏系统可以获取游戏操作装置的运动姿态,从而处理得到游戏操作装置正确的运动轨迹的基本动作特征,使得游戏系统对于游戏玩家动作的模拟更加逼真。