转 https://blog.csdn.net/moonlightpeng/article/details/80174509

先把资料转下来,明天考完试好好研究

1,Leap Motion 之 准备工作。

a, 官方文档链接, 手势对应类的结构数据。

https://leapmotion.github.io/UnityModules/

这儿对leap手势的所有官方资料,非常不错。

https://leapmotion.github.io/UnityModules

b, Interaction-Engine.

c, Getting Started (Interaction Engine)

2,每次在unity中使用时先一定要把leap motion control panel打开。

2 获得手的相关信息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using Leap;
using Leap.Unity;

public class LeapGestures : MonoBehaviour {

private LeapProvider mProvider;
private Frame mFrame;
private Hand mHand;

[Tooltip ("Velocity (m/s) of Palm ")]
public float smallestVelocity = 0.4f;//手掌移动的最小速度
[Tooltip ("Velocity (m/s) of Single Direction ")]
public float deltaVelocity = 0.8f;//单方向上手掌移动的速度
[Tooltip ("Distance(m) of Fingertip to Palm")]
public float deltaCloseFinger = 0.5f;//指尖到手掌中心的距离阈值

// Use this for initialization
void Start () {
mProvider = FindObjectOfType<LeapProvider>() as LeapProvider;

}

// Update is called once per frame
void Update () {
mFrame = mProvider.CurrentFrame;//获取当前帧
//获得手的个数
//print ("hand num are " + mFrame.Hands.Count);

if (mFrame.Hands.Count > 0) {

foreach (var item in mFrame.Hands) {
int numFinger = item.Fingers.Count;
print ("item is " + numFinger);

}
}

}
}

mFrame = mProvider.CurrentFrame;//获取当前帧
//获得手的个数
//print ("hand num are " + mFrame.Hands.Count);

if (mFrame.Hands.Count > 0) {

foreach (var item in mFrame.Hands) {
int numFinger = item.Fingers.Count;
//print ("item is " + numFinger);

//print("hand are " + isOpenFullHand (item));

if (item.IsLeft) {

//print ("isOpenFullHands is " + isOpenFullHands(item));
print ("isOpenFullHand is " + isOpenFullHand(item));
}

}
}

//判断有多少个手指是伸开的,以及伸开的手指是哪个
public int extendFingerNum(Hand hand)
{
int extendedFingers = 0;
//一个手指的一次遍历
for (int f = 0; f < hand.Fingers.Count; f++)
{
Finger digit = hand.Fingers[f];
if (digit.IsExtended) {
print ("Fingers is " + digit);
extendedFingers++;
}
}
return extendedFingers;
}

3,其它函数

hand.GrabStrength

通过握拳晃动时,它的Strength值大多数情况下在0.8-0.9范围内。通过该事件响应操作便会不精确。通常情况下,我们只需要两种状态:

握拳事件Strength值为:1;非握拳状态的值为:0。

GrabStrength float ⼿的姿势判断,⼿全张开状态为0,握拳时为1,范围是[0,1]
GrabAngle float
所有⼿指的弯曲程度。通过观察四个⼿指的⽅向和⼿的⽅向
之间的夹⻆来计算这个⻆。当计算⻆度时,不考虑拇指。这
个⻆度是⼀个开着的⼿的0弧度,当这个姿势是⼀个紧的拳
头时,它就会到达pi弧度。
PinchStrength float “捏”的⼒度,⼿掌摊开时为0,最⼤为1;针对拇指与同⼀只
⼿的任意其他⼿指的组合
PinchDistance float 拇指和⻝指的距离,⽤来判断“捏”这个操作。
Rotation Vector3 返回⼿掌旋转的四元数
IsLeft bool 判断是否是左⼿
TimeVisible float 返回⼿在controller中可⻅的持续时间
Fingers List<Finger> ⼿指列表,从拇指到⽆名指排列
PalmNormal Vector3 ⼿掌法向量,如果你的⼿是平的,这个⽮量会向下,或者是你⼿掌的前表⾯。你可以⽤⼿掌法向量来计算⽔平⾯上的⼿掌的滚动⻆度。
PalmPosition Vector3 ⼿掌中⼼在controller坐标系中的位置(mm级)
PalmVelocity Vector3 ⼿掌位置的速度,mm/s
PalmWidth float ⼿掌在平的位置时,⼿掌的估计宽度。
WristPosition 返回⼿腕的位置

4 Unity3D使用左手坐标系统,而Leap Motion API使用右手坐标系统。(基本上,在相反的方向。Z轴点)统一使用米的默认单位,而Leap Motion API使用毫米。插件脚本内部转换跟踪数据使用左手坐标系和尺度距离值米。

5, this.cube.transform.rotation = Quaternion.EulerRotation(h.Direction.Pitch, h.Direction.Yaw, h.Direction.Roll);

6, Unity集成Leap Motion

7, Leap Motion这三个实验,告诉你手势还能实现这些操作

对应的英文官方文档 (Summoning and Superpowers: Designing VR Interactions at a Distance)

8,LEAPMotion VR 各种手势的判断。

9,官网的例子https://gallery.leapmotion.com/

10, unity 下载leap的官网。
---------------------
作者:moonlight天人合一
来源:CSDN
原文:https://blog.csdn.net/moonlightpeng/article/details/80174509
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/HIT-ryp/p/11098564.html

LeapMotion使用入门相关推荐

  1. LeapMotion在unity中保姆级使用教程

    一.插件 1.下载资源包,包括:Core为核心引擎,Interaction Engine为实现虚拟物体交互的插件,hands提供手势渲染等. Ultraleap Plugin for Unity - ...

  2. Unity LeapMotion入门

    首先是硬件的安装,安装硬件的应用软件Leap_Motion_Setup_4.0.0+52173.exe,按照提示默认安装,安装好之后,插入leapmotion硬件,将绿色灯的一面朝向自己.运行软件Le ...

  3. turtlebot3入门教程

    旨在用于教育,研究,产品原型和爱好应用的目的.  TurtleBot3的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量.  由于提供了不同可选,如底盘,计算机和传感器,TurtleBot3 ...

  4. 如何学习虚拟现实技术vr? vr初级入门教程开始

    vr虚拟现实技术应用广泛,是我们所有目共睹的,想要学的人越来越多,如何学习虚拟现实技术vr?千锋作为VR技术培训领先者,先给大家分享一下vr初级入门教程. 随着VR虚拟现实的爆发,越来越多的知名企业开 ...

  5. 《基于Unity与SteamVR构建虚拟世界》(Yanlz+Unity+XR+SteamVR+LeapMotion+Neuron+Kinect+IMU+Kickstarter+立钻哥哥++ok++)

    <基于Unity与SteamVR构建虚拟世界> <基于Unity与SteamVR构建虚拟世界> 版本 作者 参与者 完成日期 备注 SteamVR_Unity_V01_1.0 ...

  6. unity 接入leapmotion教程 一 安装

    第一步 驱动和软件下载: 进入官网: https://www.ultraleap.com/enterprise/xr/software-developers/ 在解决方案中选择开发人员 根据系统下载对 ...

  7. LEAPMOTION开发UI专题(2)

    过了这么久才来更这篇实在是因为项目工程量实在是不允许 首先声明我并不是专业的UI设计人员 我们所有的leap UI设计全部来源与项目需求 且因为项目不是商业项目 所以设计方法看起来有一种"邪 ...

  8. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  9. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

最新文章

  1. html最新的版本是多少,HTML5之前的版本是什么?
  2. Openstack在dashboard界面登录提示无效证书
  3. php redis 密码,redis如何设置密码
  4. Ubuntu14.04安装Torch7笔记
  5. java 大数的学习
  6. difference between JSON Model and client model
  7. GAN论文阅读路线图,更快地通过大量阅读入门GAN
  8. 重温《数据库系统概论》【第一篇 基础篇】【第5章 数据库完整性】
  9. LCD12864图形点阵液晶显示模块中文资料介绍
  10. kinova_j2s6s300【Cartesian position control Finger position control】
  11. doc转swf,主流文档在线查看解决方案--类似百度文档功能
  12. ubuntu安装新版QQ
  13. flutter video_thumbnail #获取视频封面
  14. 金蝶系统中的服务器数据库在哪,金蝶财务软件中的数据库在哪里?
  15. R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
  16. 华为服务器不显示硬盘,服务器读取不到硬盘
  17. 读《系统工程:21世纪的系统方法论》
  18. 思科在中国已建成355所网络技术学院
  19. AutoCAD二次开发(.Net)之动态块
  20. 可以同时合并不同尺寸不同格式视频的视频合并工具

热门文章

  1. Winform中使用Mysql.Data.dll实现连接Mysql数据库并执行sql语句(排除ddl等非法语句的执行)
  2. ASP.NET中添加View与Razor引擎以及View解析和Controller向View传值
  3. C#中使用Directory实现对文件夹的常用操作
  4. MybatisPlus提示 Could not set property 'id' of '***' with value
  5. java的CyclicBarrier使用
  6. linux 环境安装Flutter
  7. 未来计算机会有多发达,人工智能到底有多强?未来人工智能会主宰世界?
  8. bartlett方差齐性检验_基于R实现统计中的检验方法方差分析
  9. 神策 FM:做一名数据分析师是什么体验?
  10. abp core版本添加额外应用层