LeapMotion使用入门

转 https://blog.youkuaiyun.com/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天人合一
来源:优快云
原文:https://blog.youkuaiyun.com/moonlightpeng/article/details/80174509
版权声明:本文为博主原创文章,转载请附上博文链接!

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

欢迎来到Unity Leap Motion入门指南! Leap Motion是一种基于手势识别的控制器,可以让您使用手势进行交互,而无需触摸屏幕或鼠标。Unity是一款流行的游戏引擎,可以帮助您创建游戏和应用程序。 在本指南中,我们将介绍如何在Unity中使用Leap Motion控制器。我们将涵盖以下内容: 1. 下载和安装Leap Motion SDK 2. 在Unity中设置Leap Motion 3. 使用Leap Motion控制器进行交互 让我们开始吧! 1. 下载和安装Leap Motion SDK 首先,您需要下载和安装Leap Motion SDK。您可以在Leap Motion官方网站上找到最新的SDK版本。 下载完成后,按照Leap Motion网站上的说明进行安装。安装程序将指导您完成安装过程。 2. 在Unity中设置Leap Motion 现在,您需要在Unity中设置Leap Motion。以下是设置步骤: 步骤1:将Leap Motion控制器连接到计算机。 步骤2:启动Unity并打开您的项目。 步骤3:单击“Assets”窗口中的“Import Package”按钮,然后选择“Custom Package”。 步骤4:在“Import Custom Package”对话框中,选择从Leap Motion SDK下载的Unity插件文件。 步骤5:单击“Import”按钮以安装插件。 步骤6:将Leap Motion控制器添加到场景中。在场景视图中,单击“GameObject”菜单,然后选择“Leap Motion”>“Hands Controller”。 步骤7:在“Leap Controller”组件中,启用“Enable hands”选项。 现在,您已经在Unity中成功设置了Leap Motion控制器。 3. 使用Leap Motion控制器进行交互 现在,您可以使用Leap Motion控制器进行交互。以下是一个简单的例子: 步骤1:创建一个新的Unity场景。 步骤2:向场景中添加一个3D对象,例如立方体。 步骤3:在场景视图中,单击“GameObject”菜单,然后选择“Leap Motion”>“Hands Controller”。 步骤4:在“Hands Controller”组件中,启用“Enable hands”选项。 步骤5:单击“Play”按钮以启动场景。 步骤6:使用您的手在场景中移动和旋转立方体。 完成!现在您已经成功地在Unity中使用Leap Motion控制器进行交互。 总结 在本指南中,我们介绍了如何在Unity中使用Leap Motion控制器。我们涵盖了下载和安装Leap Motion SDK,设置Leap Motion控制器以及使用Leap Motion控制器进行交互的步骤。希望这个指南能够帮助您入门Leap Motion控制器并开始使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值