当前位置: 首页 > article >正文

Unity Meta Quest 一体机开发(八):【手势追踪】实现 Hand Grab 扔物体功能

文章目录

  • 📕教程说明
  • 📕设置刚体和碰撞体
  • 📕给物体添加 Physics Grabbable 脚本
  • 📕给手部添加 Hand Velocity Calculator 物体

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

社区链接:
Spatial XR 高级社区(知识星球)
Spatial XR 高级社区(爱发电)

在这里插入图片描述


📕教程说明

这篇教程将会介绍如何在能够抓取物体的基础上实现扔物体的物理效果。

配置一个基本的玩家物体可以参考前几期教程:https://blog.csdn.net/qq_46044366/article/details/134097455

实现抓取物体的效果可以参考上一篇教程:https://blog.csdn.net/qq_46044366/article/details/134488224
这篇教程将基于上一篇教程的配置来讲解,因为实现扔物体的前提是实现物体的抓取

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

配套的视频链接:
https://www.bilibili.com/video/BV12j411L7YQ

​电脑操作系统: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/

实现扔物体的效果:
https://developer.oculus.com/documentation/unity/unity-isdk-throw-object/

Interaction SDK 物理组件:https://developer.oculus.com/documentation/unity/unity-isdk-using-with-physics/

最终效果:

在这里插入图片描述


📕设置刚体和碰撞体

要想实现扔物体的物理效果,可抓取物体就需要拥有重力效果,并且能和其他物体发生碰撞。我们需要取消勾选碰撞体组件上的 Is Trigger,并且勾选刚体组件上的 Use Gravity

在这里插入图片描述

📕给物体添加 Physics Grabbable 脚本

在可抓取物体的身上添加 Physics Grabbable 脚本

在这里插入图片描述

这个脚本会自动引用物体身上的 Rigidbody 和 Grabbable 脚本。如果 Rigidbody 和 Grabbable 在添加 Physics Grabbable 脚本之后被添加,需要手动引用。

然后找到物体的 HandGrabInteractable 子物体,找到 HandGrabInteractable 脚本,将物体身上的 Physics Grabbable 脚本拖到 Optionals 下的 Physics Grabbable 变量上

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Physics Grabbable 脚本能够保证物体在被抓取和释放的时候不会出现奇怪的物理效果。物体被抓取时,Physics Grabbable 会将刚体的 Is Kinematic 设为 true。

Unity 的物理系统有这么几个特性:

  • 两个物体产生碰撞的条件是:两个物体都有碰撞体,至少有个物体有刚体。
  • 物体加了刚体会受到力的效果。

is Kinematic 设为 true 的物体不会对其他刚体的碰撞和力做出反应,但依然会对其他刚体产生物理影响,比如可以撞击其他刚体,或者其他刚体撞击自己,其他刚体会被弹开。也就是我撞别人,能撞动别人;别人撞我,我没反应,别人可能会被弹开。

然后抓取的物体被释放后,Is Kinematic 会恢复成 false。然后会给物体施加一个力,让物体掉落时的物理效果看起来正常一点。如果没有添加 Physics Grabbable 脚本,在释放物体后物体会非常快速地落下。但是添加了Physics Grabbable 脚本后,物体就会以正常的重力效果掉落。

📕给手部添加 Hand Velocity Calculator 物体

在 Project 窗口的搜索栏搜索 Hand Velocity Calculator,将 Hand Velocity Calculator 这个 Prefab 拖到玩家物体的 LeftHand 下:

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

点击 Hand Velocity Calculator 物体,找到它的 Hand Pose Input Device 脚本,将 LeftHand 拖到 Hand 变量上

在这里插入图片描述

然后找到左手的 HandInteractorsLeft 下的 HandGrabInteractor,将左手的 Hand Velocity Calculator 物体拖到 HandGrabInteractor 脚本的 Veclocity Calculator 变量上

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

右手也是同样的道理。

在这里插入图片描述

当我们配置好了物体和手部后,就能实现 Hand Grab 扔物体的效果。

而 Hand Velocity Calculator 上的 StandardVelocityCalculator 脚本就能模拟物体扔出去后的速度。

在这里插入图片描述

最终效果:

在这里插入图片描述


http://www.kler.cn/a/157417.html

相关文章:

  • MySQL 主从复制与高可用
  • RadiAnt DICOM - 基本主题 :从 PACS 服务器打开研究
  • 图书馆管理系统(三)基于jquery、ajax
  • 搭建MPI/CUDA开发环境
  • Linux 使用的小细节
  • Clickhouse(Centos)
  • Kotlin学习之04
  • 时间序列预测实战(二十三)进阶版LSTM多元和单元预测(课程设计毕业设计首选)
  • 【初阶解法-数据结构】包含min函数的栈(代码+图示)
  • 熬夜会秃头——beta冲刺Day7
  • 【开源】基于Vue.js的河南软件客服系统
  • 【Node-RED】http response收发实现
  • Shell数组函数:数组(一)
  • 如何制作教育培训小程序
  • 数字孪生是什么,是干什么用的?
  • 01 高等数学.武忠祥.0基础
  • 考虑光伏发电的配电网重构策略研究
  • 一次elasticsearch 查询瞬间超时案例分析
  • GEE:使用Roberts算子卷积核进行图像卷积操作
  • 【C语言】深入理解C语言中的数学运算和类型转换
  • Unity中C#使用协程控制Shader材质变化
  • unity3d模型中缺失animation
  • docker (镜像分层、阿里云镜像推送/拉去)-day02
  • Kontakt v7.7.2(音频采样器)
  • Golang实践录:读取xml配置文件
  • 基于mps的pytorch 多实例并行推理