【苉雅篇】Leap Motion 向左走,Processing 向右走

本文主要回答以下问题:

  • Leap Motion 是什么
  • Leap Motion 怎么玩
  • 开发 Leap Motion 要掌握的常识
  • Processing 怎么结合 Leap Motion
  • 如何动手开发两者结合的第一个程序

周末,邻居罗斯带给苉雅一件很奇怪的小物件。
这里写图片描述
罗斯神秘兮兮地说道,这是可以触摸到未来的魔法!

The Future is in Your Hands

苉雅看着罗斯正对着电脑胡乱地挥动着双手,感觉十分滑稽。罗斯说,他只不过是在用 Leap Motion 操控电脑。

苉雅:Leap Motion?

罗斯:Leap Motion 是现在世界上最强的虚拟和增强现实运动控制技术的创造者!该系统可以在高精确度和高跟踪帧率下,检测并跟踪手、手指和类似手指的工具。

苉雅:……

罗斯:The future is in your hands.

Play It

罗斯:要想玩转 Leap Motion,我们首先需要在电脑上安装 Leap Motion 的 SDK。

苉雅:那要怎么做呢?

Leap Motion 的安装步骤:

Leap Motion 的官网开发者界面上注册一个账号,然后下载 SDK。解压,安装。

最后运行 Leap Motion App Home,程序将会自动进入新手教程,另外还有一些 APP 等你尝试。

那么接下来,舞动你的双手,让我们一起摇!

注意:Leap Motion的可视范围是一个倒金字塔,塔尖在设备中心。

基础知识

很快,苉雅就迷上了这个小巧而强大的方块。罗斯告诉苉雅,Leap Motion 和 Processing 是能够结合起来的,但在正式开发前,她可能需要了解一些小知识(参看文章,点击这里):

Coordinate system

Leap Motion 的坐标系原点位于 Leap Motion 控制器镜面的中心。以这个中心平行设备向右,为 X 轴的正方向;垂直 X 轴指向玩家,为 Z 轴的正方向;垂直镜面向上,为 Y 轴的正方向,如下图所示:
这里写图片描述
也就是右手坐标系,下图方便大家记忆:


这里写图片描述

Leap Motion API 用以下单位测量物理量:
距离: 毫米
时间: 微秒(除非另有说明)
速度: 毫米/秒
角度: 弧度

Motion tracking data

倘若 Leap Motion 设备在其视野中追踪手、手指和工具,它将提供一组数据集(或者是帧,或者是数据)进行更新。每帧数据包含一个基本追踪数据列表,如手、手指和工具,也包括识别出的手势和描述场景中的运动因素。
【注释:帧是 Leap Motion 最根本的数据模型,可以把它理解为一个集合,其他的实体数据都存放在这个集合里,比如手、手指、手势等。】

当检测到手、手指、工具或手势时,Leap Motion 将为它分配一个唯一的 ID 指示符。只要这个实体一直存在于设备的可视范围内,这个 ID 指示符就保持不变【和 Kinect 的骨骼追踪的 ID 是一致的】。如果追踪目标丢失或者失而复得,Leap Motion 会分配一个新的 ID 指示符(软件无法知道手、手指是否和之前看到的一样)【也就是说,不包含手指识别啦,和 Kinect 的骨骼追踪在丢失后情况完全一致】。

这里写图片描述
图片:XBOX 360 Kinect Sensor

Hands

手模型提供关于手,或者其他被检测出来的手指或工具的坐标、特征和运动。
Leap Motion 使用人手的内部模型来提供预测性追踪,即使手部分不可见时也是如此。手模型总是提供五个手指的位置,但是当手的轮廓和其手指清晰可见时,其跟踪效果是最佳的。
这里写图片描述
Leap Motion 的接口函数尽可能多地提供关于一个手的信息。也就是说,Leap Motion 可能无法计算出在每帧下的所有手部信息。例如,当一个手握成一个拳头,它的手指则无法被 Leap Motion 看到,所以手指的信息就为空。
如果一个人的手或其他手状物体出现在视野范围内,则手部列表中可能会出现多于两只手的情况。但是,我建议在 Leap Motion 的视野中至多保留两只手,以获得最佳运动跟踪质量。

Arms

一个臂是骨状物体。数据集提供了一个臂的取向、长度、宽度和结束点。当肘部不在视野内时,Leap Motion 控制器根据过去的观察结果以及典型的人体比例来估计其位置。

Fingers

Leap Motion 可以提供手的每个手指的信息。如果全部或部分手指不可见,则基于最近的观察和手的解剖模型来估计手指特征。每个手指由类型名称标识。
手指由 Finger 类表示。
这里写图片描述
指尖位置和方向矢量提供指尖的位置和手指指向的大致方向

一个 Finger 对象提供了描述每个解剖手指骨的位置和定向的 Bone 对象。所有的手指都包含从基座到尖端排列的四根骨头。

这里写图片描述
骨骼被识别为:

  • 掌骨 - 将手指连接到手腕上的骨头(拇指除外)
  • 近节指骨 - 手指根部的骨骼,与手掌相连
  • 中节指骨 - 指尖和基部之间的手指中间骨
  • 远节指骨 - 手指末端的终端骨骼

这种拇指模型与标准解剖命名系统不太匹配。真正的拇指比其他手指少一根骨头。然而,为了便于编程,Leap Motion 拇指模型包括零长度的掌骨,以便拇指具有与其他手指相同索引的相同数量的骨骼。因此,拇指的解剖掌骨被标记为近节指骨并且解剖近侧指骨被标记为 Leap Motion 手指骨模型中的中节节骨。

Tool

Leap Motion 会把细长笔直的圆柱形物体当作工具,比如铅笔。
相关类:Tool,Tool 是 Pointable 类的子类。

Gesture

在 Leap Motion 的世界,除了记录我们手的坐标、方向的数据,还能根据我们每一个手指和工具的运动,识别出我们的某些手势,比如:画圆、挥手、按键、点击屏幕。
相关类:Gesture以及Gesture的子类:CircleGesture、SwipeGesture、KeyTapGesture、ScreenTapGesture。

这里写图片描述

Sensor Images

随着计算出的跟踪数据,您可以从 Leap Motion 相机中获取原始传感器图像。
这里写图片描述
具有叠加校准点的原始传感器图像

Leap Motion For Processing

Leap Motion for Processing 是一个用于结合 Processing 和 Leap Motion 的库,由 Darius Morawiec 开发,倘若对遇到的问题已然束手无策,你可以发邮件给他。

Installation

  • 方法一:自动安装——

Sketch > Import library … > Add library … > Filter: “Leap Motion”

在使用这个库编程时,请保证 Leap Motion 已经可以在你的电脑上运行且处于开启状态。至于版本匹配问题,请到这里查看。

Usage

(1)Basics

以下示例展示了基本数据访问:

import de.voidplus.leapmotion.*;  //导入库

// ======================================================
// 目录:
// ├─ 1. 回调</
  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Leap Motion是一种手势识别设备,可以通过手势控制电脑,而Processing是一种编程语言和开发环境,可以用来创建交互式的图形和动画。两者可以结合使用,通过Leap Motion识别手势并将其与Processing中的图形和动画进行交互,从而实现更加生动、直观的用户体验。 ### 回答2: Leap Motion 是一种手势识别设备,可以通过识别手部运动轨迹和手势的方式与电脑进行交互,而 Processing 是一种开源的编程语言和开发环境,主要用于创作图像、动画和交互性设计等领域。 在使用 Leap Motion 进行交互的过程中,Processing 提供了非常丰富而又方便的数据处理和显示功能,可以帮助我们快速地开发交互性较强的应用程序。比如,我们可以使用 Processing 中的 PShape 来创建具有立体感的渲染图形,同时通过使用 Leap Motion 识别手势,来控制和移动这些图形,从而创造出非常奇特的视觉效果。除此之外,还可以使用 Processing 中的 PGraphics 来生成实时图像,并结合 Leap Motion 的手势识别功能来实现即时绘制和创作。 另外,Leap MotionProcessing 还可以结合使用来开发虚拟现实应用,比如 VR 游戏或体验。通过将 Leap MotionProcessing 结合使用,我们可以在 VR 环境中实现高度交互性的应用程序,使用户能够更加直接地感受和操作虚拟世界。比如,我们可以使用 Processing 创建一个 VR 环境,通过 Leap Motion 来识别用户的手势,这样用户可以通过手势来移动、旋转和控制虚拟世界中的对象,从而实现非常流畅的虚拟现实交互体验。 总之,Leap MotionProcessing 的结合使用,可以为交互设计、视觉创作、虚拟现实等领域带来非常丰富而有趣的创新应用,帮助我们更好地探索和实现人机交互技术的未来发展。 ### 回答3: Leap Motion是一种基于手势识别技术的控制器,它可以将用户的手势动作转换为电脑中相应的操作。在具体的操作上,它可以用于在电脑屏幕上进行手势控制,例如滑动、缩放、旋转等。同时,它还可以用于配合其他控制器,如头戴式虚拟现实设备,来提供更多的交互体验。Leap Motion的这些特性意味着它能够广泛地应用于游戏、娱乐、艺术和演示等领域。而在实现Leap Motion的各种功能中,则涉及了许多不同的技术,如手势识别算法、光学传感器、图像处理等等。 而相较之下,Processing则是一种编程语言和开发环境,主要用于图像、动画、交互设计等领域的开发。Processing的主要特点在于它非常易于入门,同时又可以灵活地应用于各种不同的项目。对于初学者来说,Processing提供了许多有用的函数库和示例代码,可以帮助他们快速掌握相关知识。而对于专业人士来说,Processing则提供了更多自由和创造性,他们可以根据自己的需求开发出各种不同的应用程序。另外,Processing还具有很高的可视化性,可以直观地展示出不同应用程序的运行效果。 在使用Leap MotionProcessing的过程中,它们两者之间也可以相互配合,以实现更多有趣且实用的应用程序。例如,我们可以通过手势识别技术,将用户的手势转换为不同的控制信号,再通过Processing来进行相应的应用程序开发。这种配合方式不仅可以提升交互体验,还可以扩展应用程序的功能。总之,Leap MotionProcessing都是非常有实用价值的技术,在不同的领域中都能发挥重要的作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值