热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3.leapmotion之应用程序

应用程序开发使用LeapJS和其他一般应用程序开发主题设置项目:1.SDK库LeapMotionSDK包含两个基本库,用于定义LeapMotion跟踪
应用程序开发

使用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(取决于平台)。

其他语言

许多社区创建语言绑定可用,部分列表,请访问: 社区图书馆 。

操作系统支持

Leap Motion软件目前支持Linux(Ubuntu 12),OS X 10.7+,Windows 7+。

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文件:

  
    
    
    
  
  
    

Leap Javascript Sample

Frame data:

Hand data:

Finger data:

为了保持简单,示例中的所有示例代码都在主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 +“
+“Timestamp:”+ frame.timestamp +“µ s
+“手:”+ frame.hands.length +“
+“Fingers:”+ frame.fingers.length +“
”;

手数据

手可以从访问使用手中的财产,这是一个数组对象。通过实际操作和打印清单出来的示例代码迭代对象属性,标识为相关的手指,每手的运动数据。

// Display Hand object data
var handString = "";
if (frame.hands.length > 0) {
  for (var i = 0; i ";
    handString += "Direction: " + vectorToString(hand.direction, 2) + "
"; handString += "Palm normal: " + vectorToString(hand.palmNormal, 2) + "
"; handString += "Palm position: " + vectorToString(hand.palmPosition) + " mm
"; handString += "Palm velocity: " + vectorToString(hand.palmVelocity) + " mm/s
"; handString += "Sphere center: " + vectorToString(hand.sphereCenter) + " mm
"; handString += "Sphere radius: " + hand.sphereRadius.toFixed(1) + " mm
"; // And so on... } }

运行示例

运行示例应用程序:

  1. 将Leap设备插入USB端口,并将其放在您的前面。

  2. 如果您还没有安装Leap Motion软件。

  3. Leap Motion软件应该自动启动。

    Leap Motion控制面板图标显示在任务栏(在Windows上)或查找栏(Mac上)的通知区域中,并在准备就绪时变为绿色。 服务或守护程序在后台运行,并通过Leap Motion API向客户端应用程序提供数据。 您可以使用诊断可视化工具来检查软件是否已设置并正常运行。

  4. 在支持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提供的语言绑定之一链接到库。

/documentation/images/Arch_OS_Level_Diagram.png

启用了Leap的Web应用程序

  1. leapmotion服务提供了WebSocket的服务器监听http://127.0.0.1:6437 。
  2. Leap Motion控制面板允许最终用户启用或断开WebSocket服务器。
  3. 服务器以JSON消息的形式发送跟踪数据。 应用程序可以将配置消息发送回服务器。
  4. leap.js客户端的Javascript库应该在Web应用程序中使用。库建立与服务器的连接并使用JSON消息。 Javascript库提供的API在原理和结构上与本地API类似。



推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
author-avatar
所谓-旧
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有