布尔/浮点控制器和姿势识别系统的制作方法_3

文档序号:9932603阅读:来源:国知局
获取简单地作为布尔或浮点值的数据的游戏和其它应用W简化游戏或其 它应用开发。根据本技术,通过姿势和控制器API 204,使得运成为可能,该姿势和控制器 API处理来自捕捉设备20的数据W及有可能来自控制器100的数据,包括将数据转换为布尔 和浮点输入。
[0059] 姿势和控制器API 204(也被称为API 204)包括库226,该库226具有各骨架模型将 如何被解释并被转换为布尔或浮点输入W供在控制台202上运行的应用使用的定义。现在 将参考图5和6描述用于接收骨架模型数据并将该数据处理为布尔或浮点输入的API 204的 一个实施例。
[0060] 包括用户位置和移动的场景可被捕捉设备20每次一帖地检测。根据此数据,在步 骤350中,姿态信息300被传递至API 204。姿态信息包括用户的S维骨架模型和其它参数。 运些另外的参数可W包括捕捉设备20检测的x、y和Z最小和最大图像平面位置。参数还可包 括对离散时间间隔在每一关节的基础上对速度和加速度的测量。由此,在各实施例中,API 204接收大量数据,包括用户的身体中的所有点的位置和动力活动的全景图。
[0061] 根据本技术的各方面,API 204可将简单的身体位置和移动解释为如在预定义规 则中阐明的姿势。具体而言,API 204可在步骤354中分析所接收的姿态信息300来查看姿态 信息(或姿态信息的一部分)是否与库226内存储的任何预定义规则304相匹配。在各实施例 中,所存储的规则包括定义姿势、动作或状况W及该姿势、动作或状况的参数或元数据的信 息。所存储的规则304描述特定位置和/或动力运动,当其在姿态信息300中被检测到时将被 解释为预定义的姿势。在各实施例中,每一个姿势都可W具有不同的规则或规则集304。也 就是说,每个姿势可通过单一规则定义。
[0062] 如同上面指出的,姿态信息可提供可被使用和解释的大量数据。然而,在一个实施 例中,库226中的规则304定义姿势,该姿势为布尔型,例如真(1)或假(0)。W此方式,复杂的 姿态信息可被API 204简化来向在控制台202上运行的软件应用提供简单的布尔姿势输入。 例如,规则304可探究用户的手正在触摸(例如,真)或没有在触摸(例如,假)用户的头。运一 规则可忽略大多数位置信息300,而简单地辨别该数据是否显示用户的手在他或她的头上。 如果用户的手在头上,则API 204可提供输入"r到在控制台202上运行的软件应用308.如 果用户的手没有在头上,则API 204可提供输入"0"到在控制台202上运行的软件应用308. 在其它实施例中,运些1、0值可被反转。
[0063] 不同规则304可定义各种各样的其它姿势,从而导致来自API 204的布尔输入。例 如,规则304可针对两个关节或身体部位中的任一个彼此触摸来定义(例如,触摸=1,没有 触摸= 0);手举起(1)或手放下(0);讲话(1)或没有讲话(0);讲出特定短语/命令(1)或没有 讲出该短语/命令(0);腿提起(1)或腿在地上(0)。在其他实施例中,运些1、〇值中的每一个 可被反转。各种其它规则可被定义W辨别来自姿态信息300的真/假姿势。
[0064] 在上述实施例中,易于辨别的身体位置被API 204用作预定义姿势W向在控制台 202上运行的软件应用308提供布尔输入。然而,要理解,更复杂的身体位置可被API用作预 定义姿势W向软件应用308提供布尔输入。例如,可W想象,姿势可设及各种关节相对于彼 此W所定义的方式放置,且当那些相对位置从姿态数据中检测到时,姿势被检测且API 204 可提供输入1。如果否,该输入为0。
[0065] 除了向应用308提供简单布尔输入外,API 204还可W或替换地根据姿态信息300 辨别浮点值输入,或简单浮点输入。浮点输入可按照类似于布尔输入的方式辨别,区别在于 值的范围可W为从0到1,或在其它实施例中从-1到1。如上所述,API 204可被定义W查找规 贝1J304所定义的特定位置或移动。在浮点输入的情况下,一般位置可有资格作为预定义姿 势,且附加地采用一般位置中的变化作为输入,取决于该变化多么极端,所述变化被归一化 为从O到1(或-1到1)的值。
[0066] 作为浮点输入的一个示例,规则304可被定义为检测用户是否倾斜。可W前倾、左 倾、右倾等。当用户倾斜时,该位置可被针对倾斜定义的规则304检测到。规则304还可采用 倾斜程度作为输入,在直立的、"中立"位置和倾斜到最大程度(其可W是任意的、预定的倾 斜度)之间。从而,略微倾斜可接收靠近0的浮点值,而显著倾斜可接收靠近1的浮点值。在此 实例中,API 204可提供倾斜姿势被检测到,连同针对该倾斜的浮点值。向左倾斜可被提供 为具有在0和1之间的浮点值,而向右倾斜可被提供为具有在0和1之间的浮点值。替换地, 左/右倾斜可被提供有在-U极端左倾)和1(极端右倾)之间的浮点值。
[0067] 可存在附加的归一化过程。例如,API 204可针对不同大小的用户(如由捕捉设备 20测量的)归一化。从而,即使大用户作出的极端倾斜比较小用户作出的极端倾斜可能在绝 对值方面更夸大,但是两者都可W被归一到相同的值。归一化还可在不同软件应用308之间 进行。从而,针对给定位置指派的浮点值将跨多个软件应用相同。
[0068] 倾斜是可定义由API 204提供的浮点输入的简单测量的身体位置的一个示例,且 要理解,各种其它简单测量的身体位置可被从姿态信息300辨别作为浮点输入。一些其它的 浮点输入包括但不限于:
[0069] ?身体倾斜、身体扭转,
[0070] .因虚弱而何僕,
[0071] ?腿或手臂举起,
[0072] ?语音(其中例如音量可在预定的最小值和最大值之间被归一化为浮点值),W及
[0073] ?关于垂直的x、y和Z轴中的一个或多个的头部定向。
[0074] 还构想了其他的。
[0075] 而且,要理解,更复杂的身体位置范围可被API 204用作预定义姿势W向软件应用 308提供浮点输入。例如,可W想到,姿势可设及各个关节相对于彼此按照定义的方式被定 位,且从中立位置的变化可定义浮点值的范围。
[0076] 除了布尔和浮点输入,API 204可进一步提供关于所谓的动作姿势的输入。运些是 随着时间发生的姿势。具体而言,使用规则304,API 204可用于识别在来自捕捉设备20的多 帖数据上发生的姿势。为此目的,API 204可包括跟踪所识别的姿势和其他输入的随时间输 入Q叩ut-over-time)存档、隐马尔可夫模型实现(其中模型化系统被假定为马尔可夫过 程一一其中当前状态封装了确定将来状态所使用的任何过去状态信息,因此不必为此目的 而维护任何其他过去状态信息的过程一一该过程具有未知参数,并且隐藏参数是从可观察 数据来确定的)、W及用于求解姿势识别的特定实例所使用的其他功能。
[0077] 每个动作姿势可由规则304定义,该规则304包括属性(诸如踢或砍),该属性或者 为空(即,当前没有检测到动作)或者用将给出3D向量和肢体类型的对象填充。3D向量可指 示动作的方向或动作的主要位置。肢体类型可表示哪个肢体正在执行该动作(左手、右手、 左脚、右脚等)。
[0078] 动作姿势的示例包括但不限于:
[0079] .指向-手臂在一个方向上完全伸展。向量是手臂指向的方向。当手在用户侧面时 忽略手。
[0080] ?砍-手臂快速移动越过身体。向量是手臂移动的方向。
[0081] .刺-手臂从身体向外快速移动。向量是手臂伸展的方向。
[0082] .推-手臂按比刺慢的方式从身体向外移动。向量是推的方向。
[0083] .拉-手臂按照平均速度向内朝身体移动。向量是拉的方向。
[0084] .保持不动-手臂(可替换地为腿)保持静止达给定时间量。向量是保持不动的肢 体的位置。
[0085] ?踢-腿按照平的或向上的方式快速远离身体移动。向量是踢的方向。
[0086] ?踩-腿快速朝地面移动。向量是踩的方向。
[0087] 还构想了其他的。
[0088] 再次参考图6,在步骤356可检测布尔、浮点或动作姿势。在各实施例中,姿势可简 单地被检测为通过/失败。替换地,API 204可确定所标识的姿势和对应于用户的位置/移动 与该姿势相对应的概率的置信度水平。具体而言,除定义姿势的参数之外,规则还可W包括 在姿态信息300将被解释为姿势之前要实现的阔值置信度水平。某些姿势可能作为系统命 令或游戏指令具有更大的影响,如此,在姿态被解释为该姿势之前具有较高的置信度水平。 姿态信息与存储的规则的参数的比较导致关于姿态信息是否表示姿势的累积置信度水平。 在各实施例中,置信度水平可由游戏开发者设置或修改。
[0089] -旦确定了关于给定姿态或运动是否满足给定姿势规则的置信度水平,API 204 然后就在步骤556确定该置信度水平是否超过关于所考虑的规则的预定阔值。阔值置信度 水平可W与考虑中的规则相关联地存储。如果置信度水平低于阔值,则没有检测到姿势(步 骤360),并且不采取动作。另一方面,如果置信度水平高于阔值,则用户的运动被确定为满 足所考虑的姿势规则,且随后返回姿势类型(布尔、浮点或动作),连同与该姿势相关联的任 何输入值。如同上面指出的,在其它实施例中,在通过(步骤364)或失败(360)基础上,姿势 可不带置信度水平地被确定。
[0090] 一旦姿势已被检测,则姿势类型和输入值随后可被软件应用308用来控制或影响 游戏度量。替换地,姿势类型和输入值可被控制台202的操作系统而不是软件应用使用来影 响操作系统内的控制功能。
[0091] 在上面描述的实施例中,输入可被基于轮询的软件应用308使用。周期性地,例如 每秒30或60次,软件应用308轮询输入(控制器、键盘、骨架跟踪等)、基于所接收的输入决定 要做什么、并随后确定游戏状态并呈现图形。然而,在其它实施例中,输入可被基于事件的 软件应用308使用,诸如举例而言其中软件应用308不需要每秒更新30或60次。基于事件的 软件应用308可仅在输入事件发生时更新。
[0092] 在基于事件的实施例中,软件应用308等待控制器100或目标识别、分析和跟踪系 统200发送指示存在更新的"事件"。在该时刻,软件应用308可处理输入、更新游戏状态、并 随后返回W等待处理下一事件。
[0093] 为了知晓要处理运些事件中的哪个事件(因为可能有从操作系统事件到控制器事 件到键盘事件等等许多许多的事件),软件应用308(可能在启动时)确定它是为哪个事件被 调用的。该软件应用可通过针对期望事件注册句柄来实现运一点。句柄是当特定事件被"抛 出"时运行的软件代码。例如,当用户按下控制器100上的控制器按钮时,按钮按下事件被抛 出。
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1