Unity Meta Quest 一体机开发(五):手势抓取概述

文章目录

  • 教程说明
  • Oculus Integration 中的三种手势抓取方式
    • ⭐Hand Grab
    • ⭐Touch Hand Grab
    • ⭐Distance Hand Grab

此教程相关的详细教案,文档,思维导图和工程文件会放入 Seed XR 社区。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。

知识星球链接:Seed XR 高级社区

在这里插入图片描述


教程说明

这篇教程将会对 Meta XR SDK 中三种手势抓取方式做一个概述,让大家能够区分这三种抓取方式的不同。

系列教程专栏:https://blog.csdn.net/qq_46044366/category_12118293.html

配套的视频链接:2023 VR+MR全硬件开发教程】五 、手势追踪物体抓取概述(主讲:YY)

​电脑操作系统:Windows 11

使用的 VR 设备:Meta Quest 3(Quest 系列都适用)

使用的 Unity 版本:2021.3.5 LTS (这里推荐使用 2021 及以上的 LTS 版本)

Oculus Integration 版本:v57

官方文档:https://developer.oculus.com/documentation/unity/unity-gs-overview/


Oculus Integration 中的三种手势抓取方式

Oculus Integration SDK 中主要有三种手势抓取方式:Hand Grab,Touch Hand Grab,Distance Hand Grab

⭐Hand Grab

https://developer.oculus.com/documentation/unity/unity-isdk-hand-grab-interaction/

Hand Grab 主要分为 Pinch GrabPalm Grab

Pinch Grab 模拟的是手指捏合的抓取方式,比较适合抓取一些小物件,当我们的手指靠近可抓取物体时,可以激活Pinch Grab,进入准备抓取的阶段,也就是 Hover 状态。然后捏合手指进行抓取,进入 Select 状态。

而 Palm Grab 是当手掌靠近可抓取物体的时候激活。

此外,我们还可以为 Hand Grab 制作抓取手势。
如果没有抓取手势,虚拟的手会与物体发生穿模,这种情况适用于抓取一些非实体化的物体,比如魔法球。
如果需要抓取手势,因为在现实中我们抓取不同物体可能会有不同的抓取手势,那么在虚拟世界中,我们也可以根据不同形状的物体设置相应的抓取点,为抓取点配备抓取手势,让虚拟的手在抓取不同物体后能够呈现出不同的抓取姿态。

我们可以找到 Oculus Integration 官方提供的 Hand Grab 示例场景,在 Assets/Oculus/Interaction/Samples/Scenes/Examples 文件夹下的 Hand Grab Examples 场景:

在这里插入图片描述

Unity Meta Quest 一体机开发(五):手势抓取概述_第1张图片

上图中的几个样例就来自于Hand Grab Examples 场景。

  • 最左边的例子是没有抓取手势的,我们可以用任意姿势,任意根手指进行抓取。
  • 中间的钥匙是 Pinch Grab 的例子,实际上我们可以规定哪几根手指能够触发 Pinch Grab,而这个钥匙规定了拇指和食指能够触发,当我们的拇指和食指靠近钥匙时,就会激活 Pinch Grab 的 Hover 状态,然后捏合拇指和食指就能将钥匙抓到手上。但是如果我们用拇指和中指去捏合,或者将手掌靠近钥匙尝试抓取,都是抓不起来的。
  • 右边的火炬是 Palm Grab 的例子,当我们用手掌靠近火炬,就能进入 Palm Grab 的 Hover 状态,但是如果只用手指去靠近,是无法激活的。

Unity Meta Quest 一体机开发(五):手势抓取概述_第2张图片

然后官方示例场景还有一个杯子的例子(如上图所示),这个杯子使用的是混合抓取,它既支持 Pinch Grab,Palm Grab。并且杯子上设置了三个抓取点,每一个抓取点配备了不同的抓取姿势。

⭐Touch Hand Grab

https://developer.oculus.com/documentation/unity/unity-isdk-touch-hand-grab-interaction/

这种方式可以在物体表面上的任意位置进行抓取。(准确来说是物体的碰撞体,当物体的碰撞体和物体的表面贴合的时候,视觉效果就和抓在物体表面上一样),接下来我先假设物体的碰撞体和它的表面贴合,那么抓取时手指会贴在物体表面上,并且我们可以用任意数量的手指进行抓取,用任意的手势抓在物体的表面(碰撞体)上。这种方式相比于 Hand Grab,它的抓取手势更加自由。因为在有抓取手势的 Hand Grab 中,我们需要为物体设置抓取点,然后为每一个抓取点制作对应的抓取手势。但是在 Touch Hand Grab 中,物体表面(碰撞体)上的任意位置都可以成为抓取点,不用我们手动设置抓取点在什么地方,并且抓取手势会符合我们手指贴在物体表面的位置

我们可以体验 Assets/Oculus/Interaction/Samples/Scenes/Examples 文件夹下的 Touch Grab Examples 场景。

在这里插入图片描述

Unity Meta Quest 一体机开发(五):手势抓取概述_第3张图片

这看起来是不是比 Hand Grab 方便多了?但这也不是说 Hand Grab 一无是处,在一些需要呈现精准抓取手势或者固定某几个抓取手势的场合中,就需要用到 Hand Grab

Unity Meta Quest 一体机开发(五):手势抓取概述_第4张图片

比如上图中的手枪模型,我希望每次抓取的时候都能呈现出如上图所示的抓取姿势,让中指,无名指,小拇指贴在握把上,食指贴在扳机上,做出准备开枪的姿势。大家观察一下枪的碰撞体,也就是枪模型上绿色的区域,可以看到枪的扳机这一块区域是没有碰撞体的(如下图所示)

Unity Meta Quest 一体机开发(五):手势抓取概述_第5张图片

那么如果使用的是 Touch Hand Grab,食指就贴不到扳机上,因为这一块区域没有碰撞体。但是如果使用的是 Hand Grab,我们可以在枪的握把上设置一个抓取点,然后配备如上图所示的抓取姿势,这样每次抓取的时候就能够呈现出我们准备好的抓取手势。

⭐Distance Hand Grab

https://developer.oculus.com/documentation/unity/unity-isdk-distance-hand-grab-interaction/

这种方式就是在远处通过射线抓取物体,可以将远处的物体抓取到手上,或者在远距离操控物体移动。

我们可以体验 Assets/Oculus/Interaction/Samples/Scenes/Examples 文件夹下的 Distance Grab Examples 场景。

在这里插入图片描述

Unity Meta Quest 一体机开发(五):手势抓取概述_第6张图片

你可能感兴趣的:(#,Unity,Quest,一体机开发,unity,游戏引擎)