应用程序开发
使用LeapJS和其他一般应用程序开发主题设置项目:
1.SDK库
Leap Motion SDK包含两个基本库,用于定义Leap Motion跟踪数据的API。 一个库用C ++编写,第二个用C语言编写。这些库的Wrapper类定义了C#和Objective-C的语言绑定。 Java和Python的语言绑定使用SWIG,一个开源工具。 SWIG生成的绑定将以绑定编程语言编写的调用转换为基本C ++ Leap运动库中的调用。 每个SWIG绑定使用两个附加库。 对于JavaScript和Web应用程序开发,Leap Motion提供了一个WebSocket服务器和一个客户端JavaScript库。
所有库,代码和开发LEAP启用的应用程序和插件所需的头文件包含在leapmotion运动SDK,除了leap.js客户端JavaScript库。 您可以从Leap Motion开发人员门户下载Leap Motion SDK。 每个受支持的操作系统都提供SDK软件包。 JavaScript客户端库分开发布,可以从下载LeapJS GitHub的信息库 。
Unity 5和虚幻引擎4的插件与主SDK分开提供。 虚幻插件包含在虚幻引擎4,Unity插件可在https://developer.leapmotion.com/downloads/unity 。
支持的编译器和IDE
- C ++在Windows上:Visual Studio 2008,2010,2012和2013
- Mac上的C ++:Xcode 3.0+,clang 3.0+和gcc
- Objective-C:Mac OS 10.7+,Xcode 4.2+和clang 3.0+
- .NET Framework版本3.5+的C#
- 单版2.10
- Unity Pro和个人版本5.3+
- Java版本6和7
- Python版本2.7.3
- UnrealEngine 4.9+
JavaScript
Leap Motion JavaScript支持有两个主要组件。 第一个组件是Leap Motion服务提供的WebSocket服务。 此服务器允许Web应用程序(或任何可连接到WebSocket的应用程序)以JSON格式的消息访问Leap Motion跟踪数据。 第二个组件是JavaScript客户端库Leap.js. Leap.js是一个开源的JavaScript API,它使用WebSocket JSON输出,并以与本地Leap Motion API的哲学和结构一致的形式呈现它。
C ++
要在C ++中开发Leap Motion控制器,请在程序中包含API头文件,并根据平台与Leap Motion库(libLeap.dylib,Leap.dll或libLeap.so)链接。
在Windows上,为32位与64位体系结构以及调试版本与发行版本提供单独的库(每个组件共有4个版本)。
在Mac OS X上,单个库文件支持两种体系结构和发布模式。
Objective-C
Objective-C应用程序由手写的包装程序代码支持。 要构建一个启用Leap的Objective-C应用程序,请在应用程序中包含包装器头和Objective-C ++代码文件以及Leap Motion C ++头文件。 然后,您可以使用在包装器中定义的类(否则是纯Objective-C应用程序)。 使用libLeap.dylib链接应用程序并将该库包含在应用程序包中。
C#
C#类定义在src目录中提供。 要构建启用Leap的C#应用程序,请在应用程序中包含wrapper cs文件。 您的应用程序代码应引用Leap命名空间。 还包括libLeapC.dylib(Mac),LeapC.dll(Windows)或libLeapC.so(Linux)作为运行时库。
unity
从Unity 5开始,Pro和Personal版本都支持插件。 Unity插件使用核心资产的LeapC文件夹中的C#类定义。 此库加载本机LeapC.dll(Windows)库。
Java
Leap.jar包含Leap Motion Java类。 此代码加载libLeapJava.dylib(Mac),LeapJava.dll(Windows)或libLeapJava.so(Linux)。 这些库包含本地代码,用于将Java调用转换为libLeap.dylib,Leap.dll或libLeap.so(取决于平台)中的基本Leap Motion API。 基本Leap Motion动态库由中间库加载。 对于Windows 64位体系结构,还需要Microsoft Visual C运行时库。
Python
Leap.py包含您在Python应用程序中引用的Python模块。 此模块加载LeapPython.so(Mac和Linux)或LeapPython.dll(Windows)。 这些库加载libLeap.dylib,Leap.dll或libLeap.so(取决于平台)。
2.你好世界
本文讨论Leap SDK附带的JavaScript示例应用程序。 阅读本文后,您应该可以从自己的Web应用程序访问Leap Motion手动跟踪数据。
在Leap SDK文件夹中,可以找到用于本文的以下文件:
- LeapSDK /样本/ Sample.html - JavaScript的示例应用程序
您还需要从leap JavaScript客户端库在GitHub上大跃进运动的LeapJS库 。
概述
简而言之,Leap Motion跟踪设备检测并跟踪放置在其视野内的手和手指。 leap捕获在一个时间这个数据一帧 。 Web应用程序可以使用Leap Motion JavaScript API访问此数据。 Leap Motion控制器通过套接字连接以JSON格式的消息发送跟踪信息。 JavaScript API接收JSON消息并将其评估为正确的对象。
示例应用程序演示了如何使用Leap Motion JavaScript API。 的例子是包含在一个单一的Web页面,Sample.html。 该应用程序显示Leap Motion API中的关键跟踪数据对象的几个属性,包括:
JavaScript客户端库
大跃进运动JavaScript客户端库可从GitHub上大跃进运动的LeapJS库 。 库处理与Leap Motion服务或守护程序的连接,并将跟踪数据帧传递到应用程序。 LeapJS是一个开源项目,并与主要的Leap SDK分开分发。 我们鼓励社区对这个图书馆的贡献。
设置页面
使用JavaScript API,你必须包括leap.js文件(或缩小的版本,leap.min.js)。 该Sample.html文件使用一个简单的HTML结构来显示数据的飞跃,其中包括使用脚本标记通常的方式leap.js文件:
<html> <head> <title>Leap JavaScript Sample</title> <script src="leap.js"></script> <script>// JavaScript code goes here</script> </head> <body οnlοad="checkLibrary()"> <h1>Leap JavaScript Sample</h1> <div id="main"> <h3>Frame data:</h3> <div id="frameData"></div> <div style="clear:both;"></div> <h3>Hand data:</h3> <div id="handData"></div> <div style="clear:both;"></div> <h3>Finger data:</h3> <div id="pointableData"></div> <div style="clear:both;"></div> </div> </body> </html>为了保持简单,示例中的所有示例代码都在主HTML文件中。
建立事件循环
由于Leap Motion控制器连续提供数据,因此您需要设置事件循环来处理各个数据帧。 您可以设置一个循环来处理数据,因为Leap Motion控制器会生成每个帧,或者您可以设置一个循环,在应用程序准备好处理数据时处理数据。 Leap Motion JavaScript客户端库支持这两个选项。
这个例子演示了第二种方法,因为没有必要在这个应用程序处理数据的速度比浏览器可以把它画到屏幕。 大跃进运动API提供了Leap.loop()函数,该函数调用你只要提供浏览器准备画一个回调函数。 在此示例中,回调是一个匿名函数,它将跟踪数据打印到网页的正文。 环路()函数的第一个参数传递给可选的设置参数,控制对象。 这是功能的骨架:
// Setup Leap loop with frame callback function
var controllerOptions = {};
Leap.loop(controllerOptions, function(frame) {
// Body of callback function
})
在内部,Leap.loop()使用浏览器的requestAnimationFrame()功能,并将大跃进运动数据,在每个浏览器的动画循环应用最新的框架。
访问跟踪数据
该框架传递给环路()回调函数作为帧参数对象是跟踪数据模型的根可以访问所有跟踪的对象,如手和手指。 要显示的数据,该示例创建一个包含对象属性的HTML字符串,将字符串到页面上的div元素。
帧数据
显示的基本框架数据使用构建字符串的简单的事情帧对象属性:
var frameString =“Frame ID:”+ frame.id +“<br />”
+“Timestamp:”+ frame.timestamp +“&micro; s <br />”
+“手:”+ frame.hands.length +“<br />”
+“Fingers:”+ frame.fingers.length +“<br />”;
// Display Hand object data
var handString = "";
if (frame.hands.length > 0) {
for (var i = 0; i < frame.hands.length; i++) {
var hand = frame.hands[i];
handString += "Hand ID: " + hand.id + "<br />";
handString += "Direction: " + vectorToString(hand.direction, 2) + "<br />";
handString += "Palm normal: " + vectorToString(hand.palmNormal, 2) + "<br />";
handString += "Palm position: " + vectorToString(hand.palmPosition) + " mm<br />";
handString += "Palm velocity: " + vectorToString(hand.palmVelocity) + " mm/s<br />";
handString += "Sphere center: " + vectorToString(hand.sphereCenter) + " mm<br />";
handString += "Sphere radius: " + hand.sphereRadius.toFixed(1) + " mm<br />";
// And so on...
}
}
运行示例
运行示例应用程序:
-
将Leap设备插入USB端口,并将其放在您的前面。
-
如果您还没有安装Leap Motion软件。
-
Leap Motion软件应该自动启动。
Leap Motion控制面板图标显示在任务栏(在Windows上)或查找栏(Mac上)的通知区域中,并在准备就绪时变为绿色。 服务或守护程序在后台运行,并通过Leap Motion API向客户端应用程序提供数据。 您可以使用诊断可视化工具来检查软件是否已设置并正常运行。
-
在支持WebSockets的浏览器中打开Sample.html。
当您将手放在Leap上方时,您应该看到页面上打印出的Frame,Hand和Finger信息。
现在您已经了解了如何使用Leap Motion API访问运动跟踪数据,您可以开始开发集成Leap Motion控制器的自己的JavaScript应用程序。
3.设置项目
要使用Leap Motion JavaScript API开发,您可以使用您的首选Web开发过程和工具。API是作为标准JavaScript库提供的,您可以将其包括在HTML页面和Web应用程序中。
获取JavaScript库
您可以从Leap Motion的服务器远程访问库:
4.系统架构
Leap Motion软件作为服务(在Windows上)或守护程序(在Mac和Linux上)运行。软件通过USB总线连接到Leap Motion控制器设备。 启用Leap的应用程序访问Leap Motion服务以接收运动跟踪数据。 Leap Motion SDK提供两种API,用于获取Leap Motion数据:本机接口和WebSocket接口。这些API使您能够以多种编程语言(包括在浏览器环境中运行的JavaScript)创建启用Leap的应用程序。
应用程序编程接口
Leap Motion SDK提供两种API,以从Leap Motion服务获取跟踪数据:本机接口和WebSocket接口。本机接口是一个动态库,您可以使用它来创建新的启用Leap的应用程序。 WebSocket接口和JavaScript客户端库允许您创建启用Leap的Web应用程序。
原生应用程序接口
本地应用程序接口通过动态加载的库提供。 此库连接到Leap Motion服务,并为您的应用程序提供跟踪数据。 您可以直接在C ++和Objective-C应用程序中或通过为Java,C#和Python提供的语言绑定之一链接到库。
- Leap Motion服务通过USB总线从Leap Motion控制器接收数据。 它处理该信息并将其发送到运行启用Leap的应用程序。 默认情况下,服务仅将跟踪数据发送到前台应用程序。但是,应用程序可以请求他们在后台接收数据(可以被用户拒绝的请求)。
- Leap Motion应用程序与服务分开运行,并允许计算机用户配置其Leap Motion安装。Leap Motion应用程序是Windows上的控制面板小程序和Mac OS X上的菜单栏应用程序。
- 前台启用Leap的应用程序从服务接收运动跟踪数据。 启用Leap的应用程序可以使用Leap Motion本地库连接到Leap Motion服务。 您的应用程序可以直接(C ++和Objective-C)或通过一个可用的语言包装程序库(Java,C#和Python)链接到Leap Motion本地库。
- 当启用Leap的应用程序失去操作系统焦点时,Leap Motion服务停止向其发送数据。预定在后台工作的应用程序即使在后台也可以请求接收数据的权限。 当在后台,配置设置由前台应用程序确定。
的WebSocket接口
Leap Motion服务在本地主机域的端口6437上运行WebSocket服务器。WebSocket接口以JSON消息的形式提供跟踪数据。可以使用JavaScript客户端库来使用JSON消息,并将跟踪数据作为常规JavaScript对象呈现。
- leapmotion服务提供了WebSocket的服务器监听http://127.0.0.1:6437 。
- Leap Motion控制面板允许最终用户启用或断开WebSocket服务器。
- 服务器以JSON消息的形式发送跟踪数据。 应用程序可以将配置消息发送回服务器。
- 该
leap.js
客户端的JavaScript库应该在Web应用程序中使用。库建立与服务器的连接并使用JSON消息。 JavaScript库提供的API在原理和结构上与本地API类似。