分享

Kinect帮助文档翻译之二 手势

 鸿蛟家平 2017-09-19

使用或创建手势

         有两种方法可以将手势识别添加到你的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 –英文原版描述不清,就是ZoomOut/In的手势,只不过在动的时候是前后而非左右。

◎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,并重新开始。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多