基于Leap Motion设备及Unity3D引擎的自定义手势识别

1.Leap Motion 官网下载SDK并导入Unity3D,官网地址:https://developer.leapmotion.com/  本次测试适用unity版本为2017.1以上

下载内容:

2.Leap Motion 获取手部关节点两种方式:

(1)脚本:AttachmentPointBehaviour 中:可以获取手部各关节的position和rotation,使用时加自己的判断逻辑即可。

(2)示例场景一中:可以获取手部各关节的position,可另外编写脚本,将关节的根节点拖拽使用即可,

如:

3.获取关节点的位置及旋转信息后,可以通过rotation来得到关节的旋转度,从而判断每只手是否弯曲,每根手指是否弯曲;

也可通过位置信息得到向量方向变化算出角度变化来判断。

这里我们使用向量计算角度:

我们需要在手指默认的伸直状态来一个作为基准的向量,以食指举例,食指伸直时指尖与指跟方向的向量为a,实时状态下指尖与指跟的变化中的向量为b,求a与b之间的变化角度,来判断弯曲程度,可以自行添加合适的阈值。

4.向量之间求角度

//向量a,b的夹角,得到的值为 弧度转换为角度值  
        float angle = Mathf.Acos (Vector3.Dot (初始.normalized, 变化.normalized)) * Mathf.Rad2Deg;  

5.由此可得到食指是否弯曲以及弯曲程度,以此来适用其余手指,进而可以自行定义手势。 

猜你喜欢

转载自blog.csdn.net/Rick__/article/details/84066761