zoukankan      html  css  js  c++  java
  • Kinect帮助文档翻译之二 手势

    使用或创建手势

             有两种方法可以将手势识别添加到你的unity项目中。第一种:找到KinectManager组件,在例子中它被附在MainCamera上。在组件中有两个列表的属性“Player1 Gestures”(来自player 1 的手势)“Player2 Gestures”(来自player2的手势)。这两个列表所带的手势,整个游戏运行过程中都可以检测识别。第二种是以编程的方式去实现用户特定的手势。你需要实现KinectGestures.GestureListenerInterface接口来添加手势或者处理任何指定的手势。这里有一个例子:KinectScripts/Extras/SimpleGestureListener。简单的描述如下:

    UserDetected()用于启动手势检测;

    UserLost()用于清理变量或者占用的资源。你并不需要移除UserDetected()中添加的手势。这些将会在调用UserLost()前自动清除。

    GestureInProgress()在一个手势开始但是还没有被结束或者取消时调用。

    GestureCompleted()在一个手势结束时调用。你可以在这里添加自己的代码来处理手势

    GestureCancelled()手势被取消时调用

    识别手势

    以下手势能被流畅的识别:

    ◎RaiseRightHand / RaiseLeftHand – 左手或右手举起过肩并保持至少一秒

    ◎Psi –双手举起过肩并保持至少一秒

    ◎Stop – 双手下垂.

    ◎Wave –左手或右手举起来回摆动

    ◎SwipeLeft – 右手向左挥.

    ◎SwipeRight – 左手向右挥.

    ◎SwipeUp / SwipeDown – 左手或者右手向上/下挥

    ◎ Click – 左手或右手在适当的位置停留至少2.5秒.

    ◎RightHandCursor / LeftHandCursor – 假手势,用来使光标随着手移动

    ◎ZoomOut – 手肘向下,左右手掌合在一起(求佛的手势),然后慢慢分开.

    ◎ZoomIn – 手肘向下,两手掌相聚至少0.7米,然后慢慢合在一起

    ◎Wheel –想象一下你双手握着方向盘,然后左右转动。

    ◎Jump –在1.5秒内髋关节中心至少上升10厘米

    ◎Squat -在1.5秒内髋关节中心至少下降10厘米

    ◎Push – 在1.5秒内将左手或右手向外推

    ◎Pull -在1.5秒内将左手或右手向里拉

    添加你的手势

    这里提供一下关于在Kinect添加手势识别的过程,你需要有一点C#的基本知识并且了解一点关于Kinect传感器的基本工作流程。在Kinect的坐标系统中,它提供的是被追踪对象的三维坐标,以米为单位。

    添加一个用户自定义的识别手势,首先你需要打开Assets/KinectScripts/KinectGestures.cs脚本文件,然后:

    1、  找到Gestures的枚举,并在这个枚举的后面添加上你要定义的手势的名称

    2、  找到CheckForGesture()函数,这里有一个非常长的switch()语句,每一个Gestures枚举里的手势都需要在这里使用case语句进行处理。因此,你需要在这里添加一个case语句来处理你新添加的手势。

    3、  当然,你可以看看RaiseLeftHand, RaiseRightHand, SwipeLeft or SwipeRight这些是如何处理的,作为学习的例子。

    4、  如你所见,每一个处理手势的内部还有一个switch语句来检测和改变手势的当前状态。每个状态用数字来表示(0,1,2,3…),它的状态根据GestureData结构体存储的数据变化而改变。这个数据结构体是为每一个在场景中的需要被识别的手势创建的。

    5、  一个手势的初始状态是0,在这个状态下,程序需要识别这个手势是否开始。要做到这一点,它需要检查并存储关节的位置,通常是左右手。如果一个关节的位置符合某个手势的开始,那么这个手势的状态值就加一。在下一个状态,它需要检查这个关节是否达到了预期的位置(或者移动了理想的距离)。这个检查需要在一定的时间内完成,我们通常设置为1-1.5秒。

    6、  如果在设置的时间内这个关节被检测到达到了预期的位置(或者移动了理想的距离),那么那个手势就被认为识别成功了;否则,视为手势被取消,状态将被置为0,并重新开始。

  • 相关阅读:
    调用控制台程序函数 RunProcess
    url传递中文的解决方案(备忘)
    Microsoft.SharePoint.SPException 安全性验证无效——错误解决
    Windows SharePoint Services 虚拟服务器没被配置为与 ASP.NET 2.0.50727.42 一起使用解决办法
    automation服务器不能创建对象
    InfoPath窗体事件列表说明和示例使用
    ORA01113:文件n需要介质恢复 (转载)
    DevExpress 第三方控件汉化的全部代码和使用方法 (转载)
    爱的感觉(转载)
    关于Oracle 01122,01110,01207的错误和解决(转载)
  • 原文地址:https://www.cnblogs.com/Zackzhang/p/5879659.html
Copyright © 2011-2022 走看看