如何利用Leap Motionipad创建手势有什么用支持手势操控的Web游戏

Leap Motion的秘密武器可以让你用手操纵VR
[摘要]Orion是专门针对VR头盔设计的,可以让我们用手移动数字物体,不需要操作复杂的控制器,而且它让VR中的手势控制变得更自然了。
Engadget中文站 2月18日报道创业公司Leap Motion昨天推出一款新产品Orion,它是专门针对VR用户的全新硬件软件解决方案。一直以来,Leap Motion的动作跟踪设备饱受人们的批评:创意很好但不实用。有了Orion情况很可能会改变。Orion配有软件,可以和Lep Motion一起整合到VR环境中去。几年来Leap Motion努力将手势带到VR中去,它的技术可以让我们用手移动数字物体,不需要操作复杂的控制器。要做到这点,用户必须在VR头盔前安装Leap Motion的动作传感器附件,使用时有些笨重。还有一点也不好,传感器运行的软件与台式PC上的软件是一样的,以前Leap Motion的重点就是研发PC配件。现在公司朝前迈了一大步,它推出了Orion。Orion是专门针对VR头盔设计的,Leap Motion希望更多的硬件制造商可以在自己的VR/AR头盔中植入Leap Motion 3D动作传感器。Orion硬件更薄、更小,与头盔的兼容性也更好。Leap Motion CEO马丁·巴克沃德(Martin Buckwald)说,公司正在与其它主要VR制造商合作将Orion设备整合到头盔中去,最快在今年早期就会有产品上市。目前用户只能将新设备附着在头盔上使用。比起硬件更强大的是软件。新的Orion软件是Leap Motion Interaction的延伸,它让VR中的手势控制变得更自然了。Leap Motion CTO说手势追踪变得更好了,好了不只一点半点。新设备的追踪速度更快、更流畅、更敏感。(Databoy)
正在加载...
【美国Engadget作品的中文相关权益归腾讯公司所有,未经授权,不得转载、摘编等。】
探索Engadget中国版
[责任编辑:linasun]
还能输入140字
Copyright & 1998 - 2017 Tencent. All Rights Reserved新型交互设备Leap Motion:让你用手势操作电脑
来源:搜狐数码
  【搜狐数码消息】Leap公司近期推出其新型交互设备Leap Motion,让用户可以用手势操作电脑,目前开发者已开始进行应用程序的开发。让我们来仔细研究下Leap Motion:
  初见Leap以及安装过程
  测试版Leap Motion采用光滑黑盒包装,除在其包装上手贴贴纸处注明为Leap Motion外再无其它标记,显然Leap从苹果简约包装中获得了不少启示,打开其包装盒,在盒内除Leap Motion外还有一封来自其CEO的简短信件,信中表示开发者对于Leap的成功至关重要,在盒内还配有迷你USB-USB缆线,将缆线插入Leap,在线下载Leap SDK(目前版本0.7.1)成功安装后就可发现自己手势运动的过程在屏幕上成功显现。
  界面简洁
  Leap软件下载后界面简洁,使用时不用打开应用程序,其本该出现在任务栏处的图标由一个下拉菜单代替。只要打开可视化界面并点击测试选项就可以让Leap Motion开始工作,可视化界面在显示屏上以3D网格的模式显示,在手势移动过程中会在显示屏上产生彩色的拖尾,每个手指用不同颜色进行表示,但是目前Leap Motion尚不能准确分别五根手指,所以在测试过程中发现同一根手指往往用不同颜色进行表示。
  Leap Motion主要缺陷
  在测试过程中发现Leap在同时捕捉一根两根手指时没有太大问题,三根手指时也可以精确捕捉,当使用4根手指进行操作时Leap已经很难在同一时刻捕捉到它们,这也是Leap测试过程中最为不足的地方,在Leap提供的广告宣传视频中,使用五根手指同时进行操作Leap依旧可以精确捕捉,但是在实际测试中发现Leap基本上不能同时捕捉到五根手指同时的运动,这个问题现在看起来并不严重,但如果应用程序开发者在设计应用时,如果设计应用五根手指同时进行的操作就会遇到不小的麻烦。
  此外,当两根手指靠的比较近时,Leap也不能很好的进行识别,测试过程中将无名指靠近中指时,Leap应该识别其为两个分开的手指,但是令人失望的是Leap将其识别为同一根手指,相信这个缺点将在正式发布时得以修正,与此同时,输入选项无效。
  Leap的另一个缺陷就是其识别输入的能力范围,Leap宣称其可识别8立方英尺范围内的输入,但当将手向后移动超过一英尺后,Leap就不再能够采集到输入手势,一英尺的限制同样适用于其左边和右边,当手在其左边移动两英尺的距离时,可视化界面无法显示手部运动,右边也是同样的情况。
  Leap Motion主要优点
  Leap当然也并非总是缺点,在测试过程中Leap所表现的一些关键特性让其具有不小的竞争力,Leap的可视化软件包含3D图形功能,由坐标系中X,Y,Z三个轴显示,这意味着Leap能够显示你距离该设备的远近,这个功能特性可以给开发者们带来不少的应用程序设计创意,也颇具实际意义。
  Leap的另一大优点在于设备体型较小,在Microsoft推出其Kinect后,普遍认为针对电脑的手势以及运动设备体积与电脑本身相差不多亦或是稍微小于电脑本身。Leap打破了这些假设并且通过常规尺寸USB接口就可以进行使用,第一代Leap制作如此之小,很难想象其推出第二代第三代时尺寸将会怎样缩小,可以想到在将来的设计中会将Leap直接集成到电脑或者是键盘/麦克风上,目前华硕已在CES2013上宣布其所有新款PC电脑将采用该技术,随着科技的进步和发展,也许将看到所有品牌的PC电脑都将采用该技术,苹果电脑在将来也有可能使用该技术。
  在线推广视频中Leap是一款极具发展潜力的的产品,开发者需要的产品与消费者所需要的并不相同,此次测试采用的是公测产品,但其表现出的问题却像正在内测阶段的产品。其功能整体还是不错但测试的Leap并非母版产品,所以在并没有得到此前承诺的相关功能(在视频中展示以及在网站上叙述的相关特性),其在软件方面的设计从1.0版本开始还有很长的路要走,究竟能有多大提高目前尚不确定。
  Leap是一款非常不错的创新设备,但若想走的更远首先要在硬件以及软件方面加以提高。
(责任编辑:宋朝)
&&&&&&</div
配备麒麟970处理器第三代徕卡双摄...
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:不错过任何一个新产品
find intriguing things on next
微信扫一扫:分享
41人觉得很赞:
Pink Ocean
每天发个新产品,腰也不酸了,腿不疼了
ACM - Testing
让你在社区里活跃最大的动力是什么?
无组织 - 自由职业
眼望远方傻想
粗粮食业 - 产品研究员
一句话不够简介
NEXT 负责人
simplicity and order for all
NEXT - 客服
有问题请联系
WeChat:Bullshit_Johnny
万物生长JasmineLeap Motion作为一款手势识别设备,相比于Kniect,长处在于准确度。
在我的毕业设计《场景漫游器》的开发中。Leap Motion的手势控制作为重要的一个环节。以此,谈谈开发中使用Leap Motion进行手势识别的实现方式以及须要注意的地方。
一、对Leap Motion的能力进行评估
在设定手势之前。我们必须知道Leap Motion能做到哪种程度,以免在设定方案之后发现非常难实现。这个评估依靠实际对设备的使用体验。主要从三个方面:
1.Leap Motion提供的可视化的手势识别界面
2.SDK文档说明
3.Leap商店中的APP
基本能够的得出:
1.Leap Motion的识别对于水平方向或者以水平方向为基础手势可以较好的识别。
2.对于握拳或者垂直的行为识别会出现误差。这样的误差和详细的手势行为有关。
3.不应该过分依赖高准确度,Leap Motion能检測到毫米级别是没错的,可是有时候会把你伸直的手指识别成弯曲的。所以要做好最坏的打算。
二、实际的须要
移动、旋转、点击button、缩放和旋转物体、关闭程序、暂停,主要的功能需求是这样。
有一些原则:
1.同样环境下的手势应该接近和方便的转换。旋转和移动的之间的转换应该设计的非常自然。
2.手势避免冲突,手势过于相&#20284;不是什么好事。比方三个伸直的手指和四个伸直的手指不应该被设计成两个手势。当然这不是绝对的。假设你进行一个缓慢的动作而且动作是面向Leap Motion的摄像头,这时候应该相信它。至少要针对这个手势做一个单独的測试。
三、考虑主要的数据结构和算法的轮廓
Leap Motion的SDK在第一部分的时候已经浏览过。最起码能知道Leap Motion能够包括的信息。从SDK看来这是非常丰富的,既然设计自己的手势,那么最好不要依赖于SKD开发包的炫酷的手势。非常可能,这些手势仅仅是官方用来演示或者炫耀的。自己设计手势的基本数据结构也有另外的优点,比方更换了体感设备,可是功能是相&#20284;的。这时候仅仅须要更改获取数据的方式就能够了(从一个SDK更换到还有一个SDK),而不要改动算法。
算法的轮廓与基本数据有非常大的关系。所以数据结构一定要尽量的精简而且同意改动(可能某个算法占领了决定性因素,可是開始没考虑到)。
public class HandAndFingersPoint : MonoBehaviour
const int BUFFER_MAX=5;
Controller m_LeapC
&span style=&white-space:pre&& &/span&public E_HandInAboveView m_AboveView = E_HandInAboveView.N
//手指-数据 ,[0]表示左手,[1]表示右手
private Dictionary&Finger.FingerType,FingerData&[] m_FingerDatas = new Dictionary&Finger.FingerType, FingerData&[2];
//buffer,[0]表示左手,[1]表示右手,[,n](n属于0,3。表示第n次缓存)
private Dictionary&Finger.FingerType,FingerData&[,] m_FingerDatasBuffer=new Dictionary&Finger.FingerType, FingerData&[2,BUFFER_MAX];
private int m_CurBufIndex=0;
//palm 0:左手 和1:右手
private PointData[] m_PalmDatas = new PointData[2];
private readonly PointData m_DefaultPointData = new PointData(Vector.Zero, Vector.Zero);
private readonly FingerData m_DefaultFingerData = new FingerData(Vector.Zero,Vector.Zero,Vector.Zero);HandAndFingersPoint类中剩下的部分是对数据的填充、清除、刷新等方法。E_HandInAboveView记录哪仅仅手先进入Leap Motion的视野。用于设定优先级。
另外两个主要的数据结构PointData和FingerData:
//一个手指的数据包括一个指尖点数据和手指根骨的位置数据
public struct FingerData
public PointData m_P//指尖的位置和指向
public Vector m_P//手指根骨的位置,对于拇指来说是Proximal phalanges近端指骨的位置
public FingerData(PointData pointData, Vector pos)
m_Point = pointD
m_Position =
public FingerData(Vector pointPos, Vector pointDir, Vector pos)
m_Point.m_Position = pointP
m_Point.m_Direction = pointD
m_Position =
public void Set(FingerData fd)
m_Point = fd.m_P
m_Position = fd.m_P
//一个点的数据,包括方向和位置
public struct PointData
public Vector m_P//位置
public Vector m_D//方向
public PointData(Vector pos,Vector dir)
m_Position =
m_Direction =
public void Set(PointData pd)
m_Position = pd.m_P
m_Direction = pd.m_D
public void Set(Vector pos,Vector dir)
m_Position =
m_Direction =
//先被看到的手
public enum E_HandInAboveView
基本数据定义好之后,最好确认数据的填充是没问题的。实际通过Frame frame = Leap.Controller.Frame();来获取最新的数据。这时候并不急着写完和基本数据相关的方法。如今终于要的是手势算法的合理性。要推断是否合理,最好先写一个算法。
最简单的是伸掌手势,在控制中水平的伸掌用于漫游,垂直的伸掌用于暂停。我发现手掌依赖于手指,而手指包含两个状态——伸直和弯曲。另外,其它的手势,也都是手指的伸直或者弯曲,外加方向的判定累积出各种效果。理所当然的,应该单独写出手指的弯曲和伸直判定算法:
/// &summary&
/// 该方法提供对于单个手指匹配的算法,如伸直。弯曲
/// 以后可能的改变:对于不同的场景可能要求有所不同。这里的阈值或许会随之改变
/// &/summary&
public class FingerMatch
//弯曲状态的角度阈值
static readonly float FingerBendState_Radian = Mathf.PI*4f / 18 ;//40度
//伸直状态的角度阈值
static readonly float FingerStrightState_Radian = Mathf.PI/12;//15度
/// &summary&
/// 手指伸直的状态,当根骨-指尖的方向和指向的偏差小于阀值时,判定手指为伸直状态。
/// 注意无效的方向为零向量。先判定是零向量
/// &/summary&
/// &param name=&adjustBorder&&对阈值做的微调&/param&
/// &returns&&/returns&
public static bool StrightState(FingerData fingerData, float adjustBorder=0f)
bool isStright =
Vector disalDir = fingerData.m_Point.m_D
//假设指尖方向为0向量,表示无效的数据
if (!disalDir.Equals(Vector.Zero))
Vector fingerDir = fingerData.m_Point.m_Position - fingerData.m_P//指尖位置减去指根位置,由指根指向指尖的向量
float radian = fingerDir.AngleTo(disalDir);
if (radian & FingerStrightState_Radian + adjustBorder)
isStright =
return isS
/// &summary&
/// 推断一根手指是否处于弯曲状态
/// &/summary&
/// &param name=&fingerData&&须要判定的手指数据&/param&
/// &param name=&bandBorder&&弯曲的阈值&/param&
/// &returns&&/returns&
public static bool BendState(FingerData fingerData, float adjustBorder=0f)//,out float eulerAugle)
bool isBend =
//eulerAugle = -1f;
Vector disalDir = fingerData.m_Point.m_D
if( !disalDir.Equals(Vector.Zero) )
Vector fingerDir = fingerData.m_Point.m_Position - fingerData.m_P//指尖位置减去指根位置,指跟到指尖的向量
float radian = fingerDir.AngleTo(disalDir);
//eulerAugle = radian*180/Mathf.PI;
//夹角超过定义的阈值时,认定为弯曲状态
if (radian & FingerBendState_Radian + adjustBorder)
return isB
上面包括了一个重要的概念——阈&#20540;。它是描写叙述究竟何种程度算是伸直,何种程度算是弯曲。阈&#20540;的确定是须要实际測试来决定的。写到这里也是时候进行一次简单的測试了,毕竟算法的轮廓已经确定。我甚至没写出手掌伸直的判定算法。就确定是可行的。
基本数据结构相关的操作——HandAndFingersPoint类:
该类使用基本数据。在Unity Editor中执行会展示了一个手掌的轮廓,蓝色表示手指的方向。红色表示手指骨根到掌心和指尖的连线,黄色表示掌心到指尖的连线:
四、手势实现中简要的概括
其它代码都能够在我的获取。在手势的实现中,也包括了一些小的技巧。比方对于动作的匹配要防止手指的颤抖引起的误差。採用离散的数据取样——每隔一定时间做一次取样。
使用和观察这些脚本的方式:能够把这些脚本放在一个GameObject中。通过Leap Motion会看到脚本的属性在匹配成功时会发生变化。另外,脚本中包括了事件的注冊功能,换句话说。外部能够向随意的手势注冊一个事件,以便手势完毕匹配或者到达某种匹配状态时做一些额外的处理。这些脚本如今并不能直接完毕我们的需求,如暂停。我们须要在这些手势状态或者动作上做进一步的限定,如依据掌心的方向设定垂直向前的手掌为暂停,水平的手掌为平移之类的。
阅读(...) 评论()

我要回帖

更多关于 ipad创建手势 的文章

 

随机推荐