【LeapMotion】LeapMotion学习笔记

Author:Solare @BUAA SCSE 2012

 

一、前言

最近在学习LeapMotion开发,现将学习过程保存在这里,方便查找和复习,最终整理成一份成型资料,作为BUAA SCSE资料保存。

 

二、LeapMotion介绍

Leap Motion是一个体感控制器,由Leap公司生产。售价约人民币500元。(leap:跳; motion:动作;移动;手势)

Leap Motion体感控制器(以下简称LM)支持Windows 7,Windows 8.x以及Mac OS X 10.7以上版本操作系统。

 

三、LM体感的原理

(以下资料大部分来自知乎)

大体上,LM根据内置的两个摄像头从不同角度捕捉的画面,重建出手掌在真实世界三维空间的运动信息,检测的范围大体在传感器上方25mm到600mm之间。检测的空间是一个倒四棱锥体。

首先,LM传感器建立一个直角坐标系,坐标的原点是传感器的中心,坐标的X轴平行于传感器,指向屏幕右方。Y轴指向上方。Z轴指向背离屏幕的方向。单位为真实世界的毫米。

使用过程中,LM定期发送关于手的运动信息,这样的信息称为“帧”。每一个帧包含检测到的:

  1. 所有手掌的列表及信息;
  2. 所有手指的列表及信息;
  3. 手持工具(细的,笔直的,比手指长的东西,如一支笔)的列表及信息;
  4. 所有可指向对象(Pointable对象)的列表及信息。

LM会给这些目标分配一个唯一的标识(ID),在手掌、手指、工具保持在视野范围内时,是不会改变的。根据这些ID,可以通过Frame::hand();,Frame::finger()等函数来查询每个运动对象的信息。

LM可以根据每帧和前一帧检测到的数据生成运动信息。例如,若检测到两只手,而且两只手都朝一个方向移动,就认为是平移。如果是握着手像球一样转动,则记为旋转。若两只手靠近或分开,则记为缩放。所生成的数据包含:

  1. 旋转的轴向向量;
  2. 旋转的角度(顺时针为正);
  3. 描述旋转的矩阵(--);
  4. 缩放因子;
  5. 平移向量;

对于每只手,可以检测到如下信息:

  1. 手掌中心的位置(三维向量,相对于传感器坐标原点,单位是毫米);
  2. 手掌移动的速度(毫米每秒);
  3. 手掌的法向量(垂直于手掌平面,从手心指向外);
  4. 手掌朝向的方向;
  5. 根据手掌弯曲的弧度确定的虚拟球体的中心;
  6. 根据手掌弯曲的弧度确定的虚拟球体的半径;

手掌的法向量说明图片

 对于手指和工具,统一的称为Pointable对象,每个对象包含以下信息:

  1. 长度;
  2. 宽度;
  3. 方向;
  4. 指尖位置;
  5. 指尖速度;

根据全局信息,运动变换,手掌、手指和工具的信息和交换,开发者可以靠这些来制作游戏和程序了。

转载于:https://www.cnblogs.com/solare/p/3839673.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值