【Oculus Interaction SDK】(一)设置 VR 相机与控制器 && 实现简单的抓取功能
前言
前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发。当然,不排除我文章刚写完 SDK 又变了的可能性,所以如果有人发现文章的内容已经不适用于新版本了,也可以留评论或者私信我,我会持续更新文章内容。
当前适用版本:
- Unity 版本:2021.3.7f1c1
- Oculus Interaction SDK 版本:47.0
文章最近更新日期:2023.02.07
安装 SDK
安装 Unity XR 支持
在导航栏找到 Edit > Project Settings > XR Plugin Management,点击 Install XR Plugin Management 安装 XR 支持工具
随后分别在 Windows 和 Android 选项卡中勾选 Oculus 选项,添加对 Oculus SDK 的支持

安装 Oculus 开发工具
Oculus Interaction SDK 在 Unity 资源商店里可以找到,这是 Oculus 官方提供的开发工具,需要添加到自己的账号里面使用
https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022
添加完成之后回到自己的项目,在导航栏找到 Windows > Package Manager,在自己的资源里搜索、下载并安装

选择 All,导入所有资源

如果遇到更新提示,选择 Yes

选择 Use OpenXR

点击 OK

选择 Restart

选择 Show Assets(Recommended)

选择 Clean Up(Recommended)

选择 Clean Up Package

选择 Upgrade

选择 Restart,重启 Unity

正式开发
添加相机和控制器
新建一个场景,或者保存使用默认的 SampleScene 场景
删除场景中原有的 Camera,在 Project 窗口搜索 OculusInteractionSampleRig,添加到场景中
找到 OculusInteractionSampleRig > OVRCameraRig 的组件 OVR Manager,将 Tracking Origin Type 调整为 Floor Level
这是我比较喜欢的追踪类型,它会将场景中世界原点的位置与你所处的地面对齐

运行效果如下

实现抓取物品功能
控制器设置
在 Project 窗口搜索 ControllerGrabInteractor,使其成为 ControllerInteractors 的子物体(注意:Grab 与 Poke 是同级的)

因为两只手的设置过程基本一致,在本文及后续文章中我只会给出一只手的设置过程,另一只手大家按照同样的步骤来设置就可以了


手势追踪设置
在 Project 窗口搜索 HandGrabInteractor,使其成为 HandInteractorsLeft 的子物体(右手是 HandPokeInteractorRight)

手的设置与控制器设置类似,在这里只演示一只手的设置方式


这样,控制器和手的抓取功能就可以实现了
制作可被抓取的物体
想要一个物体可以被抓取,需要添加几个必要的组件:
- Collider
- Rigidbody
- Grabbable
- Grab Interactable(只实现控制器抓取)/ Hand Grab Interactable(只实现用手抓取) 注:如果同时添加二者,表示两种方法都可以实现抓取
在场景中添加一个 Cube,添加所需的组件(Pointable Element 引用的是 Grabbable 组件,这点在后续的内容中也会出现)

这样就可以实现简单的控制器抓取物体的效果了

其他的方式在此只放出必要的内容,具体细节不做展示(方法都是类似的)
以下内容按顺序分别为:只能用控制器、只能用手、二者都可以用


关闭操作检测器
在前面的内容里可以看到控制器上有一个会变色的小球,这个小球其实是 debug 用的
碰到可交互区域的时候小球会变蓝色,按下 Grab(握柄)按钮的时候会变成绿色,这个可视化工具可以帮助我们判断可交互的内容是否出现问题

如果不想要这个这个小球,也可以手动关闭它
在我们之前添加的 ControllerInteractors 中找到 Visuals > DebugVisuals,禁用这个子物体

这样就关闭了控制器的操作检测器

参考资料
https://www.youtube.com/watch?v=1FRqniErAfs&t=242s
【Oculus Interaction SDK】(一)设置 VR 相机与控制器 && 实现简单的抓取功能的更多相关文章
- python爬虫-抓取acg12动漫壁纸排行设置为桌面壁纸
ACG-wallpaper 初学python,之前想抓取P站的一些图片来着,然后发现acg12这里有专门的壁纸榜单,就写了个抓取壁纸作为mac桌面壁纸玩玩. 功能:抓取acg12壁纸榜单的动漫壁纸,并 ...
- 在IDM上设置防止过度抓取网站信息
在使用Internet Download Manager(IDM)下载器时,有时会发现IDM自带的抓取功能过于强大,以至于有时会抓取一些无效的链接.那么,该如何避免IDM的过度抓取呢? 图1:IDM的 ...
- IDM下载器:站点抓取相关设置介绍
Internet Download Manager(简称IDM)是一款十分好用资源下载器,它的站点抓取功能不仅可以下载被过滤器指定所需文件,例如一个站点的所有图片,或者一个站点的所有音频,也可以下载站 ...
- 有关默认相机转VR相机
呃...15年开篇~ 去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项. 由于国内VR版本比较混 ...
- Android SDK Manager 设置代理
直接启用 Android SDK Manager 的命令如下: 在SDK 的 tools 目录下执行: ./android sdk 就会进入 Android SDK Manager 设置代理 在 ...
- 旋转VR相机不头晕:一个反直觉的发现
旋转VR相机不头晕:一个反直觉的发现 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/deta ...
- 从谷歌到脸书:为何巨头纷纷“钟情于”VR相机?
VR的火爆,自然无需多言.而基于VR这一个概念,已经在多个相关行业不断衍生出新的产品.服务或内容.VR眼镜.VR头盔.VR相机.VR游戏.VR影视.VR应用--但VR产业的发展并不是齐头并进,而是出现 ...
- [Swift通天遁地]九、拔剑吧-(9)创建支持缩放、移动、裁切的相机视图控制器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
× 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...
- #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat
#在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat子网和主机网络是同一网络,网络管理员要注 ...
随机推荐
- OpenCV图像处理与视频分析详解
1.OpenCV4环境搭建 VS2017新建一个控制台项目 配置包含目录 配置库目录 配置链接器 配置环境变量 重新启动VS2017 2.第一个图像显示程序 main.cpp #include< ...
- RHCE习题
RHCE习题 考试说明: RH294系统信息 在练习期间,您将操作下列虚拟系统: 真实机: foundation: kiosk:redhat root: Asimov workstation.lab. ...
- NC-UClient下载安装应用详解
aliases: [] tags : " #NC " summary: [UClient下载安装NCC应用详解] product: [NCX] author : [yaenli] ...
- 搭建K8S集群前置条件
搭建K8S集群 搭建k8s环境平台规划 单master集群 单个master节点,然后管理多个node节点 多master集群 多个master节点,管理多个node节点,同时中间多了一个负载均衡的过 ...
- codeforces补题计划
11.15 Codeforces Round #833 (Div. 2) 知识点: D:高位和对低位无影响 E:笛卡尔树上dp 补题传送门
- i春秋Backdoor
点开是道没有任何窗口的题,右键查看源码也没上面东西,抓包试试,也没找到什么提示性的信息,根据提示去看看敏感文件泄露是什么吧 这里找到了篇敏感文件泄露的介绍及利用方法:https://www.cnblo ...
- C++编程笔记(GPU并行编程)
目录 一.配置并使用 二.代码 三.内存管理 数组的分配 一.配置并使用 环境:Windows10 + CLion + VS2019 cuda的安装,并行的话只需要安装cuda,cuDNN就不必了 编 ...
- Django的manytomany字段
manytomany字段 用于表示多对多的关系,最常见的就是老师和班级的例子 一个老师可以教多个班级,一个班级也可以有多个老师 add 添加关系 teachers=models.Teacher.obj ...
- Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别
目录 一:视图层 2.三板斧(HttpResponse对象) 4.HttpResponse() 5.render() 6.redirect() 7.也可以是一个完整的URL 二:三板斧本质 1.Dja ...
- 利用Git同步思源笔记
旧文章从语雀迁移过来,原日期为2022-10-22 思源笔记是一款优秀的本地优先的双链大纲笔记软件,拥有强大的笔记编辑功能且都是免费,唯一付费的就是云同步等一些服务了.但如果暂时还用不着云同步的,我们 ...