leap motion

来源:互联网 发布:python 时间戳相减 编辑:程序博客网 时间:2024/04/24 12:16

坐标系统

  1. Leap遵循右手坐标系,坐标系中单位与世界中一毫米相对应,坐标原点是设备的中心。
    XZ轴组成水平的一个平面,X轴指向设备的长边,Y轴竖直,向上为正方向!Z轴相对屏幕向外是正方向![4]

动作绑定数据

Leap通过绑定视野范围能的手,手指或者工具来提供实时数据,这些数据多数是通过集合或者圳数据提供!每一帧都包含了一系列的基本绑定数据,比如手,手指或者工具的数据,当然,他也能实时的识别场景中的手势和自定义数据!
  当设备检测到手、手指、工具或者是手势的话,设备会赋予它一个唯一的ID号码作为标记,只要这个实体不出设备的可视区域,这个ID号就会一直不变,如果设备丢失这个实体之后又出现了,Leap 就会赋予它一个新的ID号码,但是软件不会知道这个和以前的那个实体有什么关系。
  注意:我们计划在发布给消费者能够提高为你程序提供的动画步骤的数据。在将来发布的SDK中,我们计划使用骨骼手指模型来提供更加详细的数据绑定和连续性的实时数据。
  2.1 帧
  A Frame object provides lists of the tracking data, gestures, and factors describing the overall motion observed in the Leap field of view.
  一个Frame的对象提供了绑定数据,手势和元素的列表,这些数据用来描述设备视野内观察到整体的动作。[4]

数据绑定的列表


  Hands——所有的手
  Pointables——所有作为 Pointables的手指和工具
  Fingers——所有的手指
  Tools——所有的工具
  Gestures——所有的手势包括开始、结束或者在进行中的
  这三个 可指向物体的列表(可指向物体、手指、工具)包含每一个在每一种里被检测到的可指向的物体。你可以使用一个手来访问这些可指向的物体,这个手对象是通过Hands在手列表中的对象。需要注意的是:手指或者工具可能不会被手对象所关联,愿意是这些可指向的物体只有一部分在Leap的可视区域里面。
  如果你绑定了一个单独的物体,比如一个手指头,每一帧中,你都可以通过ID和那个物体关联起来,并在新的帧里面找到它。使用以下的方法来找到相应的类型物体。
  Frame.Hand()
  Frame.Finger()
  Frame.Tool()
  Frame.Pointable()
  Frame.Gesture()
  这些方法函数返回相应的对象的引用,如果在当前的帧里面存在的话。如果这个对象不再存在了,一个特殊的无效对象就会被返回。无效对象被很好的定义供你使用,但是不存在有效的绑定数据。这项技术帮助我们减少了空对象检测的工作。[4]
  2.3 帧动画
  Leap 能够分析在场景中较早的帧中的整体的动画,并且综合典型的移动旋转和缩放因素。比如,如果你将两只手同时向左移动,并保证在Leap的视野里面,在帧中包含了移动的信息。如果你弯曲你的手就像旋转一个球,在帧里面就包含旋转的信息。如果你移动两只手相对或者相向移动,那么在帧中就包含了缩放的信息。Leap设备对于动画的分析基于在视野中的所有物体,如果有一个手在其中的话,那么就会基于这一个手的因素来分析,如果两个手的话,分析动画就会基于两个手的因素。你也可以为每一个手获得独立的动画因素,需要从Hand对象里面获得。
  帧动画的产生是通过当前的帧与更早的帧的比较获得的。描述动画合成的属性包括以下:
  RotationAxis — 旋转轴的方向.
  RotationAngle —顺时针旋转的角度
  RotationMatrix — 描述旋转的矩阵.
  ScaleFactor — 表达碰撞或者收缩的因素
  Translation — 线性移动的因素
  你可以直接添加动画因素来操作这些物体,而不需要绑定个人的数据。[4]

手模型


  这个 手模型 提供了被绑定的手的位置信息、特点以及运动方式。并且还包括了手指或者手上的工具的所有和手关联的东西的信息。
  LeapAPI尽可能多的提供关于手的信息。但是,Leap不能够确定每一帧所有属性。比如当你的手突然攥成了拳头,这个时候,它上面的所有的手指是不能用了,手指的list就成了空。所以你的程序需要对这种情况做一个检测。
  Leap设备不能确定某一个手是左手还是右手,多于两个手出现都可以放到list里面去,如果不止一个人将手放进来,或者有一个像手的物体。然而还是建议最多两个手来保证动作步骤的质量

原创粉丝点击