LeapMotion使用入门
转 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使用入门相关推荐
- LeapMotion在unity中保姆级使用教程
一.插件 1.下载资源包,包括:Core为核心引擎,Interaction Engine为实现虚拟物体交互的插件,hands提供手势渲染等. Ultraleap Plugin for Unity - ...
- Unity LeapMotion入门
首先是硬件的安装,安装硬件的应用软件Leap_Motion_Setup_4.0.0+52173.exe,按照提示默认安装,安装好之后,插入leapmotion硬件,将绿色灯的一面朝向自己.运行软件Le ...
- turtlebot3入门教程
旨在用于教育,研究,产品原型和爱好应用的目的. TurtleBot3的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量. 由于提供了不同可选,如底盘,计算机和传感器,TurtleBot3 ...
- 如何学习虚拟现实技术vr? vr初级入门教程开始
vr虚拟现实技术应用广泛,是我们所有目共睹的,想要学的人越来越多,如何学习虚拟现实技术vr?千锋作为VR技术培训领先者,先给大家分享一下vr初级入门教程. 随着VR虚拟现实的爆发,越来越多的知名企业开 ...
- 《基于Unity与SteamVR构建虚拟世界》(Yanlz+Unity+XR+SteamVR+LeapMotion+Neuron+Kinect+IMU+Kickstarter+立钻哥哥++ok++)
<基于Unity与SteamVR构建虚拟世界> <基于Unity与SteamVR构建虚拟世界> 版本 作者 参与者 完成日期 备注 SteamVR_Unity_V01_1.0 ...
- unity 接入leapmotion教程 一 安装
第一步 驱动和软件下载: 进入官网: https://www.ultraleap.com/enterprise/xr/software-developers/ 在解决方案中选择开发人员 根据系统下载对 ...
- LEAPMOTION开发UI专题(2)
过了这么久才来更这篇实在是因为项目工程量实在是不允许 首先声明我并不是专业的UI设计人员 我们所有的leap UI设计全部来源与项目需求 且因为项目不是商业项目 所以设计方法看起来有一种"邪 ...
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
最新文章
- html最新的版本是多少,HTML5之前的版本是什么?
- Openstack在dashboard界面登录提示无效证书
- php redis 密码,redis如何设置密码
- Ubuntu14.04安装Torch7笔记
- java 大数的学习
- difference between JSON Model and client model
- GAN论文阅读路线图,更快地通过大量阅读入门GAN
- 重温《数据库系统概论》【第一篇 基础篇】【第5章 数据库完整性】
- LCD12864图形点阵液晶显示模块中文资料介绍
- kinova_j2s6s300【Cartesian position control Finger position control】
- doc转swf,主流文档在线查看解决方案--类似百度文档功能
- ubuntu安装新版QQ
- flutter video_thumbnail #获取视频封面
- 金蝶系统中的服务器数据库在哪,金蝶财务软件中的数据库在哪里?
- R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
- 华为服务器不显示硬盘,服务器读取不到硬盘
- 读《系统工程:21世纪的系统方法论》
- 思科在中国已建成355所网络技术学院
- AutoCAD二次开发(.Net)之动态块
- 可以同时合并不同尺寸不同格式视频的视频合并工具
热门文章
- Winform中使用Mysql.Data.dll实现连接Mysql数据库并执行sql语句(排除ddl等非法语句的执行)
- ASP.NET中添加View与Razor引擎以及View解析和Controller向View传值
- C#中使用Directory实现对文件夹的常用操作
- MybatisPlus提示 Could not set property 'id' of '***' with value
- java的CyclicBarrier使用
- linux 环境安装Flutter
- 未来计算机会有多发达,人工智能到底有多强?未来人工智能会主宰世界?
- bartlett方差齐性检验_基于R实现统计中的检验方法方差分析
- 神策 FM:做一名数据分析师是什么体验?
- abp core版本添加额外应用层