【Quest开发】手势动作识别

软硬件配置:

Unity2022.3.51f1c1、visual studio code、Meta Quest3、Meta XR All in One SDK v77

参考文档:https://developers.meta.com/horizon/documentation/unity/unity-isdk-hand-pose-selector-recorder

一、手势识别基础组件

OVRCameraRig上有HandFeature

记录姿势基础组件:

 FingerFeatureStateProvider :识别手指姿势

TransformFeatureStateProvider :识别手腕旋转姿势

一个姿势预制体上有的组件

 

 HandRef:预制件上的其他组件通过此引用读取手部状态

识别姿势基础组件:

 ShapeRecognizerActiveState :一个或多个,满足指定形状条件时变成激活状态

 TransformRecognizerActiveState  :检测到变换特征激活

 ActiveStateGroup :当所有依赖的 ActiveStates 都为真时,返回 true 的 ActiveStateGroup 

姿势调用触发事件基础组件:

  ActiveStateSelector :不暴露接口给Inspector

 SelectorUnityEventWrapper :引用ActiveStateSelector,可以在上面添加识别后回调的方法

二、记录手势 

这个官方文档写得老复杂了,但是实操真的很简单,就是录一下手部姿势微调一下拖到场景里绑定方法就可以用了。

1.创建一个有OVRInteractionComprehensive预制体的OVRCameraRig

我这里直接用BuildingBlock加了一个OVRCameraRig然后拖了OVRInteractionComprehensive预制体(一个涵盖基本上meta所有预设交互的预制体)进去

(其实理论来说,只要你的OVRCameraRig有下面这三个脚本就行了,但是我没测过,感兴趣的同学可以测测)

2.打开Hand Pose Selector Recorder,这是meta提供的记录手部姿势的工具

3.将要录制的手的feature拖到recorder里

4.配置基础信息,比如生成的姿势预制体名字啥的

5.运行有配好的OVRCameraRig的场景,点击record按钮就会将你当前的手部姿势生成一个预制体和姿势数据到Assets/RecordedHandPoseSelectors

如果上一步勾选了添加到场景还会自动给你添加到场景里(但是引用的不太准确,建议手动添加)

三、在场景中添加手势识别并验证手势准确度

1.把生成的预制体拖到场景中
2.配置脚本引用,以右手姿势为例

3.建一个Cube通过Cube的激活关闭验证准确度

这个脚本也在生成的姿势预制体上

4.运行场景

 可以看到它会根据我的手势显隐

四、调整手势约束严格度 

可能有同学试了一下发现很难识别到,这是因为meta在记录时严格要求了每一个手指以及关节旋转,可以通过调整姿势预制体对应的配置文件来修改约束

调整约束

解释一下各个参数的意思,meta我没找到对应的,这是g老师说的,可能不完全对,可以参考着调

✅ 整体结构

  • Shape Name:给要识别的手势起的名字(目前是空的,你可以填一个如“PeaceSign”或“OpenHand”之类的)。

  • Thumb / Index / Middle / Ring / Pinky Feature Configs:分别针对五个手指,设置要检测的“特征”。


✋ 手指特征(Feature)

一般会检测三个维度的特征:

  • Curl(弯曲度):手指向手心弯曲的程度,通常有 Open / Neutral / Closed。

  • Flexion(屈伸角度):类似 curl,但更细分角度或者检测范围。

  • Abduction(外展):手指是否张开或并拢(侧向张开的角度)。


⚙ 配置方式

  • 每个特征都有一个比较条件

    • Is:值必须是后面指定的状态(例如 Is Open 表示必须是张开的)。

    • Is Not:值不能是后面指定的状态(例如 Is Not Open 表示不能是张开的)。

  • 后面接的状态

    • Open:完全张开。

    • Closed:完全弯曲。

    • Neutral:中间状态(半弯曲等)。

如果调完发现还是不太灵敏,可以直接把姿势预制体上的关节旋转识别移除

PS.博主一直是左右手姿势分开录制的,不知道左手的姿势能不能迁移到右手,可能是可以的,我不确定 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值