【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 | ![]() |
参考资料
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十