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 ...
随机推荐
- centos7 docker1.12 私有仓库
docker1.12私有仓库 参考:http://www.cnblogs.com/xcloudbiz/articles/5497037.html 参考:http://www.07net01.com/2 ...
- 实现MySQL的Replication
实现MySQL的Replication 实现MySQL的Replication在MySQL 3.23.15版本之后,MySQL提供了数据库复制的功能,可以实现两个数据库实时同步,增强了MySQ ...
- (function($){...})(jQuery)是什么意思
这里实际上是匿名函数 function(arg){...} 这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (fun ...
- 将base64格式的字符串生成文件
using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(stri ...
- s3c6410_时钟初始化
参考: 1)<USER'S MANUAL-S3C6410X>第三章 SYSTEM CONTROLLER 2)u-boot/board/samsumg/smdk6410/lowlevel_i ...
- java Literals
Primitive Data Types The Java programming language is statically-typed, which means that all variabl ...
- POJ C++程序设计 编程作业—类和对象 编程题 #2
编程题 #2 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序的输出 ...
- postgresql 分区表
1.普通方式建立主表 create table tbl_partition( id integer, name ), gender boolean, join_date date, dept ) ) ...
- php下使用phpmailer发送邮件
由于默认虚拟空间不支持mail()函数,客户需要留言发送邮件,找到phpmailer发送不成功,调试成功后记录一下. 最新的下载地址在github,https://github.com/Synchro ...
- phpcms后台部分修改
1.后台登陆前提示信息取消及成功后提示信息取消. (1)后台登陆前提示信息取消 phpcms\modules\admin\classes\admin.class.ph ...