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 –英文原版描述不清,就是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,并重新开始。
Kinect帮助文档翻译之二 手势的更多相关文章
- kinect学习笔记(二)—— Sdk平台的搭建~、
一.资源下载 由于我们使用的kinect v1.0,所以我们只需要使用1.8版本的sdk就好了,然后资源包,在QQ群的共享里面已经有啦,所以大家可以直接下载. 二.软件安装 ...
- Kinect帮助文档翻译之一 入门
最近在玩Kinect,使用的是Unity,发现网上好像没有什么教程.自己就只有抱着英文版帮助文档啃,真是苦逼 本人英语也不好,大家将就着看吧 Kinect入门帮助 如何运行示例 1 下载并 ...
- Kinect开发笔记之二Kinect for Windows 2.0新功能
这是本博客翻译文档的第一篇文章.笔者已经苦逼的竭尽全力的在翻译了.但无奈英语水平也是非常有限.不正确或者不妥当不准确的地方必定会有,还恳请大家留言或者邮件我以批评指正.我会虚心接受. 谢谢大家. ...
- 【Unity/Kinect】获取预制的手势信息KinectInterop.HandState
Kinect使用了枚举KinectInterop.HandState来描述手势. 该手势指的是手掌的状态(张开/握拳),而不是说整个手臂的肢体动作(Gesture). 同样是需要嵌套在Kinect获取 ...
- Unity Networking API文档翻译(二):The High Level API
高级API (HLAPI) 是用来提供给Unity 创建多人在线游戏的组件.它是在底层传输层的基础上构建的, 对多人在线游戏提供了很多通用的功能.当传输层支持各种网络拓扑结构的时候,HLAPI是一个功 ...
- Kinect帮助文档翻译之三 多场景
在多个Sense中使用KinectManager 为了在多个场景下都能使用KinectManager这个组件,它必须被附在一个只生成一次.不会被销毁且在所有场景中都能访问的游戏物体上,显然把它附在Ma ...
- Pilosa文档翻译(二)入门指南
目录 开始 Pilosa 简单项目 创建架构(Create the Schema) 从CVS文件导入数据 做一些查询(Queries) 接下来做什么? Pilosa支持默认使用JSON的HTTP接口. ...
- NServiceBus官方文档翻译(二)NServiceBus 入门
在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server 和 Messages,我们将按照以下步骤来完成这个任务. 创建 Clie ...
- Orchard Core 文档翻译 (二)代码生成模板 Code Generation Templates
Code Generation Templates 翻译原文:https://www.cnblogs.com/Qbit/p/9746457.html转载请注明出处 Orchard Core Templ ...
随机推荐
- CSS3文字描边 CSS3字体外部描边
给需要实现文字描边的元素添加如下CSS3的属性 text-shadow:#000 1px 0 0,#000 0 1px 0,#000 -1px 0 0,#000 0 -1px 0; -webkit-t ...
- Windows USN Journal Parsing
What is "USN Journal"? It is "Update Sequence Number Journal". It records change ...
- javaSE第三天
第三天 12 1:运算符(掌握) 12 (1)算术运算符 12 (2)赋值运算符 12 (3)比较运算符 13 (4)逻辑运算符 13 (5)位运算符(了解) ...
- 使用HTML5构建下一代的Web Form
HTML语言作为如今编程最为广泛的语言,具有易用.快捷.多浏览平台兼容等特点,但是随着时代的进步,HTML的标准却停滞不前,这一次还在不断开发中的[color=#444444 !important]H ...
- dnw-linux的安装及使用
<Tiny6410刷机指南>介绍了如何用USB线下载uboot,kernel,filesystem到开发板的nand flash,USB下载文件用到工具dnw.遗憾的是该教程提供的是win ...
- win7如何设置某个软件不弹出用户账户控制
手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...
- 第一部分 CLR基础:第1章 CLR的执行模型
1.1将源代码编译成托管模块
- 别不拿里程碑当石头---------IT项目管理之项目计划(转)
如果说做项目不需要计划,恐怕没人会认同.是否每个项目计划都起到了作用呢?却不尽然.知道要做计划,但不知道为什么做计划,如何做计划的还是大有人在.所以很多计划沦为依样画葫芦,成了摆设. IT项目计划的用 ...
- Operation is not valid due to the current state of the object.
今天遇到一个asp.net的草郁闷的问题,看下截图 狂晕啊,在google上狂搜了一下,好在已经有大侠也遇到过这个问题了,先看下别人的解决办法吧 Operation is not valid due ...
- 删除linux系统服务
#删除服务的命令,[ServiceName]需要替换为实际的服务名称 sudo update-rc.d [ServiceName] remove 有时候安装sysv-rc-conf进行服务控制,但是在 ...