在将JavaScript与下一代技术结合使用时,Leap Motion是我最喜欢使用的设备之一。 对于Leap Motion,JavaScript并不是事后的想法。 它不是由爱好者共同使用的第三方模块,它是Leap Motion团队在开发每个新的API版本时精心开发的。 他们最新的V2.1版本(目前处于测试阶段)非常令人兴奋。 在本文中,我将概述JavaScript开发人员可以使用的新功能。
更加自信地跟踪那些手
该API为每手总手提供其他数据。 可以在frame.hands
中获得手数据,就像在以前的API中一样,但是在更新中,我们获得了精彩的新数据集合,这些数据将使Leap Motion开发人员的工作更加轻松。
手的信心
我对新API最喜欢的内容之一就是能够了解Leap Motion对数据的确定程度。 hand.confidence
提供从0到1的值,它使您知道所看到的与所理解的手的模型相匹配的确定性。 较低的值可能意味着不确定整个手部数据,也可能意味着不确定手指/骨骼的位置。 这使您可以在执行操作之前检查“跳跃运动”的确定性。 我很乐意看到这可以使交互更加顺畅,并希望鼓励用户保持清晰的手势。
手型
hand.type
Leap Motion认为自己看到的是左手还是右手。 如果您的手处于拳头状态,那么使用这种区别会有些困难。
捏力
hand.pinchStrength
是一个很棒的新属性,它的值从0到1,代表拇指和手指彼此之间的距离。 这可以为手势和控制应用程序打开一些有趣的可能性,因为捏合是一种不错的自然手势。
抓力
就像捏力一样, hand.grabStrength
返回0到1的值,但是它表示您的手是张开还是握紧拳头。 同样,这里的可能性也令人兴奋–让您的用户挤压虚拟压力球或在虚拟房间中抓取并扔东西。
新手指数据
在新的骨骼API更改中,每只手总是有五个手指,并且您可以从Leap Motion可以看到的每个手指上获得全新的数据集。
手指类型
您可以使用finger.type
以什么样的手指读取每个数据代表的finger.type
。 该对象将是一个从零到四个的值:
- 0是拇指
- 1是食指
- 2是中指
- 3是无名指
- 4是小指
每次Leap Motion读取手上的数据时,都会用所有五个手指将其读入。
手指伸出
如果某些手指没有指向Leap Motion上方,则设备会使用finger.extended = false
将其记录为未延伸。
按照名称“ Skeletal”,我们将数据深入到骨骼
我不太熟悉手的骨骼结构,因此我有机会在这里学习新知识。 我的医生将为我的丰富知识而感到骄傲。 希望有一天掌骨能随便交谈。
Leap Motion提供了每个手指上四个手指骨骼的数据,从手腕到每个手指的尖端排列:掌骨,近端指骨,中指骨和远端指骨。 这对大多数社会来说毫无意义,所以这是我在Wikipedia Commons上找到的一个可爱的图表:
指骨细节
每个骨骼都有更详细的说明(我已经将它们从手腕布置到手指尖):
-
finger.carpPosition
–掌骨底部的x,y和z位置。 -
finger.mcpPosition
–手指关节的位置–掌骨和指骨近端之间的点。 -
finger.pipPosition
–近端和中间指骨之间的光斑位置。 -
finger.dipPosition
–远端骨基部与中间指骨相连的位置。
它还具有用于每个手指骨骼的对象的更多细节finger.distal
。 finger.metacarpal
, finger.proximal
, finger.intermediate
和finger.distal
。 其中的每一个在Leap Motion API中均表示为骨骼,具有以下详细信息:
bone.type
–介于0到4之间的值,代表骨骼的类型:0 –掌骨
- 1 –近节指骨
- 2 –中指骨
- 3 –远端指骨
4 –前臂
bone.basis
–提供一个二维数组,表示骨骼的向量。 您可以对此进行一些非常疯狂的数学运算以检测特定的手指位置。 在尝试使用这些值之前,我需要适应一些数学实践,但是,潜力无限!-
bone.prevJoint
和bone.nextJoint
–分别是最靠近手腕的骨骼末端和最靠近指尖的骨骼末端的坐标。 -
bone.length
–骨头的长度,以毫米为单位。 -
bone.width
– Leap Motion在其文档中将此描述得最好的是“围绕此骨骼的肉体部分的平均宽度”。 -
bone.left
–骨骼是否在左手(如果没有,则它在右手,似乎没有bone.right
) -
bone.center
–骨骼的中点 -
bone.direction
–骨骼所在的方向向量
基本上,那里的数据量很大。
演示中包含大量数字的数据
我汇总了一个快速演示,以显示通过此API流了多少坐标数据。 以下演示显示了finger.carpPosition
, finger.mcpPosition
, finger.pipPosition
和finger.dipPosition
各自的坐标,以及为手和手指检索的基本数据。 这也只是可用数据的一小部分!
该演示看起来像这样:
您可以在此处使用Leap Motion进行尝试。
还有更多来!
V2 Leap Motion API不仅具有这些功能,还支持Oculus VR等VR头戴设备,还可以访问Leap Motion的实际图像数据。 遗憾的是,JavaScript API尚不提供这些功能,但希望我们能在API退出测试版之前尽快看到它们!
其他资源
如果您正在寻找有关这些API入门的更多详细信息,最好的去处是Leap Motion开发人员网站:
From: https://www.sitepoint.com/skeletal-tracking-javascript-leap-motion/