Unity Meta Quest 一体机开发(六):HandGrabInteractor 和 HandGrabInteractable 知识点

文章目录

  • 📕教程说明
  • 📕HandGrabInteractor
    • ⭐HandGrabAPI
    • ⭐HandWristPoint
    • ⭐GripPoint
    • ⭐PinchPoint
    • ⭐PinchArea
    • ⭐HandGrabVisual
    • ⭐HandGrabGlow
  • 📕HandGrabInteractable
    • ⭐Support Grab Type
    • ⭐Pinch Grab Rules 和 Palm Grab Rules
    • ⭐Unselect Mode
    • ⭐Hand Alignment
    • ⭐Scaled Hand Grab Poses
    • ⭐Movement Provider
      • 🔍MoveTowardsTargetProvider
      • 🔍MoveFromTargetProvider
      • 🔍FollowTargetProvider

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

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

在这里插入图片描述


📕教程说明

这篇教程将会详细介绍 Meta XR SDK 中 HandGrabInteractor 和 HandGrabInteractable 的相关知识点。

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

配套的视频链接:
【2023 VR+MR全硬件开发教程】六、HandGrab-HandGrabInteractor知识点(主讲:YY)

【2023 VR+MR全硬件开发教程】六-2、HandGrabInteractable知识点(主讲:YY)

​电脑操作系统:Windows 11

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

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

Meta XR SDK 版本:v57

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

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


📕HandGrabInteractor

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

在这里插入图片描述
找到 OVRCameraRig 玩家物体,左右手的 HandGrabInteractor 物体在如下图所示的位置:

在这里插入图片描述

HandGrabInteractor 物体上挂载了 HandGrabInteractor 脚本:

在这里插入图片描述

然后我们展开 HandGrabInteractor 物体,接下来我会讲解它身上这些子物体的作用:

在这里插入图片描述

⭐HandGrabAPI

检测 Hand Grab 是否选中或者取消选中可抓取物体,也就是检测抓取动作是否发生。

⭐HandWristPoint

控制在抓取的时候虚拟手部和现实手部在位置和旋转角度上的偏移。

⭐GripPoint

Palm Grab 的探测范围(下图中手掌处的球形范围),调整 GripPoint 上的 HandWristOffset 脚本参数可以修改探测范围的位置和旋转角度。物体进入探测范围后触发抓取,就会被吸到手上。

在这里插入图片描述

探测范围为 GripPoint 子物体 Collider 的碰撞体范围。

在这里插入图片描述

⭐PinchPoint

Pinch Grab 的探测范围,范围大小取决于 PinchPoint 子物体的 Collider 的碰撞体大小。

在这里插入图片描述

⭐PinchArea

PinchPoint 的 HandPinchOffset 脚本默认引用了 PinchArea 的碰撞体,PinchArea 碰撞体的位置会影响 PinchPoint 探测范围的位置。

在这里插入图片描述

PinchArea 碰撞体范围如下图所示。

在这里插入图片描述

注:是否能激活 Pinch Grab 实际上看的是物体是否进入到 PinchPoint 的球形检测范围内,而不是看物体是否进入到 PinchArea 范围内。

⭐HandGrabVisual

连接 SyntheticHand,在手部呈现出完整的抓取手势后固定手部姿态,让抓取手势不与物体穿模。

在这里插入图片描述

⭐HandGrabGlow

控制抓取时手部的特效。

在这里插入图片描述
Glow Type
Outline:手指轮廓高亮。

在这里插入图片描述

Fill:手指颜色填充。

在这里插入图片描述

Both:结合了 Outline 和 Fill


📕HandGrabInteractable

在 Hand Grab Examples 场景中找到可抓取的物体,每一个物体上有一到多个 HandGrabInteractable 子物体。

在这里插入图片描述

每一个 HandGrabInteractable 物体上挂载了一个 Hand Grab Interactable 脚本:

在这里插入图片描述

接下来,我来介绍一下脚本上的一些重要参数。

⭐Support Grab Type

用 Hand Grab 当中的哪一种方式去抓取。

在这里插入图片描述

⭐Pinch Grab Rules 和 Palm Grab Rules

定义了Pinch Grab 和 Palm Grab 的触发需要用到哪几根手指。每一根手指有三个选项可以选择:Required,Optional,Ignored

在这里插入图片描述

被标记了 Required 的手指必须参与到抓取的触发过程中,也就是说如果我想要抓起一个物体,必须要用到标记了 Required 的手指。比如说五根手指中食指被标记了 Required,那么抓取的时候必须要用到食指,如果只用大拇指和中指是抓不起来的。

如果没有手指被标记了 Required,那么想要抓起一个物体,至少要用到一个标记了 Optional 的手指。

标记了 Ignored 的手指不会被考虑到抓取的触发过程中。

⭐Unselect Mode

决定了抓取了一个物体后什么时候会视为取消抓取。

在这里插入图片描述
在这里插入图片描述

如果选了All Released,当所有标记了 Required 或者 Optional 的手指松开后,视为取消抓取。

如果选了Any Released,只要有一个标记了 Required 的手指松开后,就会视为取消抓取。

⭐Hand Alignment

决定了在抓取的过程中,虚拟的手是如何变化到对应的抓取手势的。

在这里插入图片描述

Align On Grab:在抓取的时候会自动调整手部的姿态。

Attract On Hover:手在靠近物体,进入到 Hover 状态后,仿佛会卡住,然后做出抓取的动作,虚拟手就会变化到对应的抓取手势。

Align Fingers On Hover:在进入到 Hover 状态后开始抓取,手指就会逐渐变化到对应的抓取姿态。这个方式需要和 Align On Grab 进行比较会比较直观,如果选了 Align On Grab,虚拟手指在一开始会跟随现实的手进行弯曲,这个时候可能会与物体穿模,然后过一段时间后手指才会变化到抓取手势的姿态。如果选择了 Align Fingers On Hover,在手指弯曲的过程中如果接近了抓取姿态,手指就会直接被卡住,变化到对应的抓取手势,一般情况下手指是不会与物体穿模。

在这里插入图片描述

⭐Scaled Hand Grab Poses

在这里插入图片描述
因为我们每个人的手部大小可能是不同的,设置Scaled Hand Grab Poses就可以为不同大小的手配备相应大小的抓取手势。

⭐Movement Provider

在 HandGrabInteractable 脚本的 Optionals 下,有一个 Movement Provider 参数,如果没有赋值,在程序运行后会在改该物体上自动添加上一个 MoveTowardsTargetProvider 脚本,然后给 Movement Provider 参数赋值。

在这里插入图片描述

注:如果我们手动添加了 Movement Provider 类型的脚本,要手动给 Movement Provider 参数赋值。

在这里插入图片描述

这里介绍一下常用的几种的 Movement Provider:

🔍MoveTowardsTargetProvider

控制物体吸向手部的速度。

在这里插入图片描述

Travel Speed 越大,物体吸向手部所花的时间越多。

🔍MoveFromTargetProvider

抓取物体的时候,手部主动吸向物体,而不是物体吸向手部。

在这里插入图片描述

🔍FollowTargetProvider

让物体被抓取的时候吸向手部,但是带有阻尼衰减运动。也就是物体吸到手上时还会不停地晃,然后慢慢恢复正常状态。Speed 越小,阻尼效果越明显。

在这里插入图片描述

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

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

相关文章

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项

问题:右键时,没有创建servlet的快捷键,如下图: 解决方法: 1.打开idea,点击File>settings(设置),进入settings页面,如下 从上图中的Files选项中没看到有servlet选项,…

拿到信创天翼云电脑账号后,我又傻眼了...

在《面向国产系统的 App 发布,含泪总结》中,我就吐槽过信创产品的不靠谱。用户购买一台终端,都没法用,得经历复杂的账号申请。 紧催慢催,等待了半个月之后,今天终于拿到了账号。然而,满怀期待登…

人工智能+游戏 会带来什么

“人工智能游戏” 写在前面 随着人类生活水平的日益提高,游戏正在为越来越多的人们带去欢乐。同时,作为21世纪新兴科学技术的人工智能,也正在研究人员的努力下不断向前突破。那么,这两列高速前进的“火车”能否接轨并行呢&#…

【数据结构】线段树(点修区查)

数据结构-线段树(点修区查) 前置知识 分治递归二叉树 思路 我们需要维护一个支持单点修改,区间查询的数据结构,并且要求在线,一般使用线段树解决。 线段树是一个二叉树形的数据结构。 线段树的思想很简单&#xff0c…

算法学习打卡day45|动态规划:股票问题总结

Leetcode股票问题总结篇 动态规划的股票问题一共六道题,买卖股票最佳时机和买卖股票手续费都是一个类型的问题,维护好买入和卖出两个状态即可,方法一摸一样。而冷冻期也差不多就是状态多了点,买入、保持卖出、当日卖出、以及冷冻期…

OpenGL_Learn12(光照)

续OpenGL_Learn11(光照)-CSDN博客 1. 镜面高光 和漫反射光照一样,镜面光照也决定于光的方向向量和物体的法向量,但是它也决定于观察方向,例如玩家是从什么方向看向这个片段的。镜面光照决定于表面的反射特性。 我们通…

IDEA没有Add Framework Support解决办法

点击File—>Settings 点击第一个设置快捷键 点击apply和ok即可 我们要点击一下项目,再按快捷键ctrlk 即可

LeetCode(15)分发糖果【数组/字符串】【困难】

目录 1.题目2.答案3.提交结果截图 链接: 135. 分发糖果 1.题目 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获…

Unity反编译:IL2CPP 打包输出的cpp文件和dll(程序集)位置、Mono打包输出的dll(程序集)位置

目录 如题:IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) 如题:Mono打包输出的dll位置 校验平台:Android 如题:IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) Unity Assets同级目录下 Temp/StagingArea/Il2…

Django视图层

视图层 django视图层:Django项目下的views.py文件,它的内部是一系列的函数或者是类,用来处理客户端的请求后处理并返回相应的数据 三板斧 HttpResponse # 返回字符串 render # 返回html页面,并且在返回浏览器之前还可以给html文件…

PCA降维Python demo

读这篇15年CVPR的文章🤣🤣🤣🤣🤣 inproceedings{liu2015sparse,title{Sparse convolutional neural networks},author{Liu, Baoyuan and Wang, Min and Foroosh, Hassan and Tappen, Marshall and Pensky, Marianna},…

第1章 走近Java【深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)】

Java技术体系所包含的内容 Java技术发展的时间线 注释

CFCA国密证书

CFCA是中国金融认证中心的缩写,即China Financial Certification Authority。它是一家经过中国人民银行和国家信息安全机构批准成立的国家级权威安全认证机构,也是国际CA浏览器联盟组织(CA/Browser Forum)的成员,遵循全…

视频剪辑全自动软件,批量剪辑去重+去水印+背景虚化+ai智能配音

软件介绍 在如今的手机时代,人们拍摄视频的频率越来越高,但大多数人往往因为缺乏专业的剪辑工具而不得不让这些珍贵的视频素材埋没在海洋中。而菜鸟视频剪辑助手的出现,让这些人的生活变得更为便捷。菜鸟视频剪辑助手是一款简单易用的视频剪…

ComfyUI搭建

最近心血来潮想搞下 sd 的东西, 正好赶上腾讯云有活动, 附上个活动链接,有兴趣的小伙伴可以参考下,不用谢我 高性能应用服务HAI 新品内测 一 搭建 首先先选择一个框架, 我想搭建的是 comfyui, 所以选择了Pytorch2.0.0, 里面环境都适配好了 等待个 5-8 分钟就可以了 ,因为需要加…

【微服务专题】Spring启动过程源码解析

目录 前言阅读对象阅读导航前置知识笔记正文一、SpringBoot启动过程源码解析1.1 SpringBoot启动过程源码流程图1.2 流程解析补充1.2.1 SpringApplicationRunListeners:SpringBoot运行过程监听器 学习总结感谢 前言 这部分只是个人的自结,方便后面回来看…

C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.右值引用1.1.什么是右值引用?1.2.move 转移资源1.3.左值引用 vs …

PowerPoint技巧:如何将一张图片同时加到全部幻灯片里?

想把一张图片加到PPT每一张幻灯片的同一个位置,如果一张一张的添加就太耗时间了,一起来看看如何利用母版快速设置同时添加吧。 首先,打开需要编辑的PPT,在菜单栏依次点击【视图】→【幻灯片母版】; 打开母版后&#x…

Redis Hotkey?3招定位+5招解决

作者总结分享 Redis Hotkey 定位和解决方法的优缺点。 作者:贲绍华,爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系…

C语言:简单的用二维数组打印杨氏三角

杨辉三角&#xff0c;又称帕斯卡三角&#xff0c;是一个数学上的规律图形。它的构造规则如下&#xff1a; 每一行的两个端点数字是1。从第三行开始&#xff0c;每个数字是它上方两个数字的和。每一行数字左右对称。 #include<stdio.h> int main() {int arr[50][50];//定…