【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子网和主机网络是同一网络,网络管理员要注 ...
随机推荐
- 如何在bat中进入虚拟环境
很多情况下我们希望在项目中建立一个build.bat用于项目的自动构建,避免每次构建时都需要手动在控制台中输入命令. 例如对于 pyinstall 的项目,只需要如下的实现: pyinstaller ...
- 更改安装Oracle数据库时设定的System sys等用户的密码
因本地Oracle数据库安装久远,不知道连接账号密码,查阅了一些资料最终修改成功,Mark up! 1 在开始菜单找到Oracle服务,打开SQL plus 2 输入命令连接到数据库并修改部分用户密码 ...
- AI音乐创作,让每一个人都成为音乐家
从录音带.MP3到专业的耳机.音箱,随着音乐消费方式的不断升级,音乐创作的专业"门槛"也在AI技术的加持下逐渐大众化,创作者的创新设计.创作频率也在持续增强,能降低创作门槛且智能化 ...
- Day11.2:标签的使用
标签的使用 当我们在嵌套语句中,例如当我们在for的嵌套循环语句中,想要终止或重新开始当前循环以外的循环的时候,单独仅靠break和continue和还不够,需要在我们想要作用的循环语句处加上一个标签 ...
- Spring Cloud Alibaba 从入门到精通(2023)
Alibaba Cloud 简介 Spring Cloud Alibaba 即 Alibaba Cloud ,基于 Spring Cloud 构建,同时封装了阿里巴巴的 Nacos.Sentinel ...
- 20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
/* 求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数. 共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数.最后读取数组的每位数字来判断水 ...
- linux子网掩码修改记录
1.输入密码进入linux,并且进入root2.输入ifconfig.返回网卡信息,释:其中eno1为当前以太网名称.Inet IP/子网掩码位置数 Bcast广播地址 或者mask子网掩码3.修改子 ...
- ATM项目详解
内容概要: ATM项目 代码实操流程 ATM项目 # 需求: """ - 额度15000或自定义 - 支持多账户登录 - 可以查看账户余额 - 可以提现(可自定义手续费比 ...
- 关于python导包问题(新手向)
包和模块 首先要弄清这两个概念, 在python 中 一个文件夹中包含__init__.py 文件(这个文件是包的初始化文件,在你导入包或包下面的模块的时候,这个文件会最开始运行),就会被python ...
- Jmeter——结合Allure展示测试报告
在平时用jmeter做测试时,生成报告的模板,不是特别好.大家应该也知道allure报告,页面美观. 先来看效果图,报告首页,如下所示: 报告详情信息,如下所示: 运行run.py文件,运行成功,如下 ...