Leapmotion开发笔记1- API Overview 综述(翻译)

哈哈哈劳资触摸屏的做完了,终于可以做下一个内容。。仿佛又是挖了一个坑。自己挖的坑哭着也要填完,否则毕业堪忧啊。。

看了下leapmotion官网提供两种API,一种是Orion,一种是V2。 看了一下介绍,查了些资料,Orion主要是为虚拟现实开发的,并且对手势的追踪更加的准确。也是比较新推出来。可以看看A站的一个视频,对比这两种软件的效果。硬件都是采用的一样的。http://www.acfun.cn/v/ac2543720

一个就是Orion,无论手的姿势是什么,其位置会马上被初始化,但V2就看起来没有那么快。进行非常稳定的追踪。可以保证足够远的距离让手完全伸展开来。并让跟踪仍然进行。在有手指被遮挡的情况下,引擎还是可以推测出被遮挡手指的位置。追踪非常流畅。所以在虚拟现实环境下比较适合Orion。甚至在进行与其他物体的物理接触时也能识别到手势。

Leapmotion的坐标系:使用右手笛卡尔坐标系,直接上图吧。和OSG的坐标反着来的。。

Leapmotion开发笔记1- API Overview 综述(翻译)_第1张图片

Leapmotion系统测量的物理量的单位是:距离(毫米mm).时间(微秒ms),速度(mm/s 毫米每秒),角度(弧度值)

运动更新的数据是由Frame对象来保存的,代表了每一帧中被追踪到的手,和一些细节特征的数据。 Frame对象是Leap Motion数据模型的基类。

Hands: hand model 提供包含ID、位置和被检测到手的其他特征,与手相连的手臂,以及一组与手相连的手指。

Hand类

Leapmotion开发笔记1- API Overview 综述(翻译)_第2张图片

手的方向是由Hand::palmNormal()手掌的法向和手掌到手指的方向Hand::direction()来确定的。

Leapmotion内置人的手的模型,即使部分的手被遮挡,追踪器也是可以推测出来的。hand model提供五根手指的位置,当一个手的骨架和所有手指都在追踪器可见范围时,追踪是最准确的。系统将会用可追踪到手的可见范围和系统内置的人手模型来推测计算出被遮挡部分的位置。但被遮挡部分手指的微小动作是不能被检测到的。

Hand::confidence()可以评价被观察模型和内置模型的匹配程度。

虽然他们说可以支持多个手,但还是推荐最多两个手,毕竟leap motion可以检测的范围有限,手太多了也会影响速度和效率。

Arms: 是一个像骨头的对象,应该就是连接手和手腕那一部分的手臂。Arm类提供了一根arm的方向,长度,宽度和最后一个点(大概就是和手连接在一起的点?)当手肘不在视线范围内时,Leap motion将会估计它的位置。

Fingers: Leapmotion 提供一个手上的每根手指的信息。当部分或全部手指不可见时,手指的特征会基于最近的一次观察以及内置的手模型来做出估计。

Leapmotion开发笔记1- API Overview 综述(翻译)_第3张图片

手指是由他们的名字来识别的。thumb大拇指, index食指, middle中指, ring无名指,pinky小拇指。 Finger类是用来保存手指信息的。

Leapmotion开发笔记1- API Overview 综述(翻译)_第4张图片

其中Finger::tipPosition()和Finger::direction()向量提供了指尖的位置和手指的大致方向。Finger对象提供Bone对象来描述每根手指的每个关节的位置和朝向。每根手指包含四个骨头。

Sensor images:

传感器捕捉到的raw image可以被获取到。可以用来做AR的应用。


你可能感兴趣的:(Leapmotion)