【Oculus Interaction SDK】(十一)关于手势识别中手势设置的详细信息
前言
前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发。当然,不排除我文章刚写完 SDK 又变了的可能性,所以如果有人发现文章的内容已经不适用于新版本了,也可以留评论或者私信我,我会持续更新文章内容。
当前适用版本:
- Unity 版本:2021.3.7f1c1
- Oculus Interaction SDK 版本:47.0
文章最近更新日期:2023.02.20
在上一篇文章中,我们实现了手势识别的功能。碍于篇幅的原因,有关手势制作的部分没有详细展开。
【Oculus Interaction SDK】(十)在 VR 中使用手势识别 - 千叶Christa - 博客园 (cnblogs.com)
本篇文章是对上一篇文章的补充,教你如何制作一个手势,并且对手势的识别方向进行限制
手势的组成
设置手势的本质就是设置手指与手掌的状态。
只要了解每一根手指的状态,就可以做出不同的手的姿态。不过,仅有手指的状态是不够的,手掌与手腕的状态也是确定一个手势的重要一环
例如:
- 比“耶”的手势,手掌向着身体内侧就是“剪刀”;手掌背对面部就是“兔子”
- 四指弯曲深处大拇指的手势,大拇指向上就是“鼓励”,大拇指向下就是“嘲讽”
因此,只要了解手指与手掌的设置方式,我们就可以唯一地确定一个手势了
手指的设置
手指的设置主要在 Shape Recognizer 文件中完成
该文件可以通过 Assets > Create > Oculus > Interaction > SDK > Pose Detection > Shape 来创建
在文件中,可以针对每一根手指进行设置
关于手指的弯曲程度可以参考下图:
手指状态如下表:
Curl 卷曲 |
范围:所有手指 含义:手指顶部两个关节的弯曲程度 |
Open | 手指完全伸直 | |
Neutral | 手指微微向内卷曲 | |||
Closed | 手指几乎接触手掌(如右图) | |||
Flexion 弯曲 |
范围:除拇指外的四个手指 含义:指根关节的弯曲程度 |
Open | 指根与手掌平行 | |
Neutral | 指根微微弯曲 | |||
Closed | 指根完全弯曲(如右图) | |||
Abduction 外展 |
范围:除小指外的四个手指 含义:当前手指与下一手指间的角度 |
Open | 打开 | |
Closed | 闭合 | |||
None | 不使用 | |||
opposition 相对 |
范围:除拇指外的四个手指 含义:当前手指指尖与拇指指尖的距离 |
Touching | 指尖接触(0-1.5cm) | |
Near | 指尖距离较近(1.5-15cm) | |||
None | 不接触(大于15cm) |
举个例子,前文中“兔子”手势的手指状态如下表:
拇指 |
指尖两关节弯曲(Curl:Is Neutral / Closed = Is Not Open) |
|
指根弯曲(Flexion:Is Neutral / Closed = Is Not Open) |
||
食指 |
指尖两关节伸直(Curl:Is Open) |
|
指根伸直(Flexion:Is Open) |
||
与下一手指(中指)之间张开(Abduction:Is Open) |
||
中指 |
指尖两关节伸直(Curl:Is Open) |
|
指根伸直(Flexion:Is Open) |
||
无名指 |
指尖两关节弯曲(Curl:Is Neutral / Closed = Is Not Open) |
|
指根弯曲(Flexion:Is Neutral / Closed = Is Not Open) |
||
小指 |
指尖两关节弯曲(Curl:Is Neutral / Closed = Is Not Open) |
|
指根弯曲(Flexion:Is Neutral / Closed = Is Not Open) |
手腕与手掌的设置
手腕与手掌的设置在 Transform Recognizer Active State 组件中完成
手腕与手掌的方向可以参考下图:
手腕、手掌状态如下表:
Wrist Up 手腕向身体内侧 |
True | |
False | ||
Wrist Down 手腕向身体外侧 |
True | |
Flase | ||
Palm Up 手掌向上 |
True | |
False | ||
Palm Down 手掌向下 |
True | |
False | ||
Palm Towards Face 手掌面向脸部 |
True | |
False | ||
Palm Away From Face 手掌远离脸部 |
True | |
False | ||
Fingers Up 手指向上 |
True | |
False | ||
Fingers Down 手指向下 |
True | |
False |