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 场景:

在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

然后官方示例场景还有一个杯子的例子(如上图所示),这个杯子使用的是混合抓取,它既支持 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 场景。

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

那么如果使用的是 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 场景。

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

F8652X 984865265 F8652E 984865264

F8652X 984865265 F8652E 984865264 亚历克能够满足最严格的建筑规范开箱-不需要大量的定制,设计时间或劳动力,或专门的布线系统。 模块化ALEC系统包括三个简单的硬件组件——区域控制器(ZC001)、标准按钮墙板和物联网(IoT)网关。该系统可以无限扩展&…

【自动化测试】Jenkins持续集成-设置执行环境+构建触发器(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Jenkins流水线…

海思SD3403,SS928/SS927/SS926,hi3519dv500,hi3516dv500移植yolov7(2)

0.前言 上一节主要在讲如何做数据处理和模型训练。简单验证了一下模型的量化导出。这一节来配置一下转换模型所需要的环境。 1.合作交流 容我先打个广告, 我司推出的目标识别跟踪模块,支持热红外、可见光主流多光谱视频输入与目标识别跟踪等功能…

electronjs入门-编辑器应用程序

我们将在Electron中创建一个新项目,如我们在第1章中所示,名为“编辑器”,我们将在下一章中使用它来创建编辑器;在index.js中,这是我们的主要过程;请记住为Electron软件包放置必要的依赖项: npm…

30个Python操作小技巧

1、列表推导 列表的元素可以在一行中进行方便的循环。 numbers [1, 2, 3, 4, 5, 6, 7, 8] even_numbers [number for number in numbers if number % 2 0] print(even_numbers)输出: [1,3,5,7]同时,也可以用在字典上。 dictionary {first_num: 1,…

1x1卷积核

1 1 1\times 1 11卷积核对输入数据的通道做约简。 每个 1 1 1\times 1 11卷积核相当于在输入数据的通道上做了一个降维(经过一个神经元个数为1的全连接层),从而相当于大幅度降低了特征图的数量,但不影响特征图的结构。 使用 1 …

VCR库代码示例

1. 首先,我们需要在代码中添加对VCR库的引用: ruby require vcr require rest-client 2. 然后,我们需要创建一个VCR录制器,以便我们可以记录实际的HTTP请求和响应: ruby VCR.use_cassette(download_video, record:…

高通发布骁龙X Elite Oryon CPU /GitHub出现一款开源项目,让用户“拥有”更大的GPU内存|魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件🔥,更新AIGC的最新动态,生成相应的魔法简报,节省阅读时间👻 🔥资讯预览 高通发布骁龙X Elite Oryon CPU,性能超越苹果和英特尔&#xff0…

java 中arrayList 中去除重复项

ArrayList 中去除重复对象 Testpublic void removeRepeatItem() {ArrayList<String> arrayList new ArrayList<>();arrayList.add("apple");arrayList.add("banbana");arrayList.add("apple");arrayList.add("apple");S…

手写ThreadPoolExecutor线程池

很多人不推荐造轮子&#xff0c;我偏不。我造轮子又不是为了上生产环境&#xff0c;而是为了加深理解&#xff0c;有何不可&#xff1f;私以为造轮子几乎是最好的学习方式&#xff0c;甚至没有之一。因为造轮子需要至少做足以下两点&#xff1a; 了解设计思想&#xff08;设计…

java反射机制

java反射机制 方法四要素使用反射机制获取方法并调用方法 方法四要素 不使用反射机制调用一个方法需要几个要素的参与&#xff1f; 例&#xff1a; SystemService.java package com.w.spring6.reflection;public class SystemService {public void logout(){System.out.prin…

质量管理工作难做,为什么还有那么多人还继续做?

理解质量管理的挑战 在当今商业环境中&#xff0c;质量管理工作是一项充满挑战的使命。然而&#xff0c;尽管面对种种困难&#xff0c;却有着越来越多的人愿意踏上这条坎坷之路。为何质量管理工作如此艰难&#xff0c;却依旧吸引无数人投身其中呢&#xff1f; 内外动因交融 内…

【23真题】坑挖的不错,题目也有质量!

今天分享的是23年西安石油大学810的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年西安石油810考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取!本套试题内容难度中等偏下&#xff0c;题量较少&#xff0c;没有考察选填题&#xff0c;通…

刚刚!奥特曼终于透露了GPT-5的最新消息!

原 创作者 | Tscom、王二狗 大爆料&#xff01;OpenAI被实锤正在研发GPT-5&#xff01; 还是OpenAI的CEO Sam Altman 亲口证实的。 今日&#xff0c;奥特曼接受《金融时报》的采访&#xff0c;透露了很多OpenAI的下一步计划&#xff0c;二狗帮大家整理成以下10个要点&#x…

搬家快递服务预约小程序的作用是什么

无论家庭还是企业办公&#xff0c;不少人都有搬家快递服务需求&#xff0c;尤其是近些年类似服务市场需求规模增长迅速。而在实际经营中&#xff0c;行业商家从业者也面临一些经营难题&#xff1a; 搬家公司的服务一般主要针对同省用户&#xff0c;同城需求较高&#xff0c;然…

实现定时巡检接口,测试不通过时自动发邮件

背景是这样的&#xff1a;最近组织架构调整&#xff0c;我们这个团队部分人员调入到了另外的业务组&#xff0c;因此她之前负责的业务需要交接给我们。 其中一个是接口每日监测&#xff0c;之前这个同事的做法是每天去手动点下按钮来跑接口测试&#xff0c;然后看一眼接口测试…

GZ038 物联网应用开发赛题第7套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 &#xff08;第7套卷&#xff09; 工位号&#xff1a;______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具&#xff0c;操作安全规范&#xff1b; 2、竞赛过程中如有异议&#xff0c;可向现场考评…

YOLOv8任务

介绍 YOLOv8是一个支持多个计算机视觉任务的人工智能框架。该框架可用于执行检测、分割、分类和姿态估计。每个任务都有不同的目标和用例。 检测 检测是YOLOv8支持的主要任务。它包括检测图像或视频帧中的对象&#xff0c;并在它们周围绘制边界框。检测到的对象根据其特征被分类…

全网火爆,Python接口自动化测试Mock服务详细总结(实战场景)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、Mock实现原理与…

SparkSQL声明式

简单案例 import org.apache.spark.sql.SparkSession import org.junit.Testcase class Person(id:Int,name:String,sex:String,age:Int) class DataSetCreate {val spark SparkSession.builder().appName("test").master("local[4]").getOrCreate()impo…