前言

前段时间 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 相机与控制器 && 实现简单的抓取功能的更多相关文章

  1. python爬虫-抓取acg12动漫壁纸排行设置为桌面壁纸

    ACG-wallpaper 初学python,之前想抓取P站的一些图片来着,然后发现acg12这里有专门的壁纸榜单,就写了个抓取壁纸作为mac桌面壁纸玩玩. 功能:抓取acg12壁纸榜单的动漫壁纸,并 ...

  2. 在IDM上设置防止过度抓取网站信息

    在使用Internet Download Manager(IDM)下载器时,有时会发现IDM自带的抓取功能过于强大,以至于有时会抓取一些无效的链接.那么,该如何避免IDM的过度抓取呢? 图1:IDM的 ...

  3. IDM下载器:站点抓取相关设置介绍

    Internet Download Manager(简称IDM)是一款十分好用资源下载器,它的站点抓取功能不仅可以下载被过滤器指定所需文件,例如一个站点的所有图片,或者一个站点的所有音频,也可以下载站 ...

  4. 有关默认相机转VR相机

    呃...15年开篇~ 去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项. 由于国内VR版本比较混 ...

  5. Android SDK Manager 设置代理

    直接启用 Android SDK Manager 的命令如下: 在SDK 的 tools 目录下执行: ./android sdk 就会进入 Android SDK Manager   设置代理 在 ...

  6. 旋转VR相机不头晕:一个反直觉的发现

    旋转VR相机不头晕:一个反直觉的发现 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/deta ...

  7. 从谷歌到脸书:为何巨头纷纷“钟情于”VR相机?

    VR的火爆,自然无需多言.而基于VR这一个概念,已经在多个相关行业不断衍生出新的产品.服务或内容.VR眼镜.VR头盔.VR相机.VR游戏.VR影视.VR应用--但VR产业的发展并不是齐头并进,而是出现 ...

  8. [Swift通天遁地]九、拔剑吧-(9)创建支持缩放、移动、裁切的相机视图控制器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。

      ×   检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...

  10. #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat

    #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat子网和主机网络是同一网络,网络管理员要注 ...

随机推荐

  1. 京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

    摘要 随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要.同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学 ...

  2. Spring三级缓存解决循环依赖

    前提知识 1.解决循环依赖的核心依据:实例化和初始化步骤是分开执行的 2.实现方式:三级缓存 3.lambda表达式的延迟执行特性 spring源码执行逻辑 核心方法refresh(), popula ...

  3. TASK 总结

    信相连知识 1.python操作EXCEL 库:xlwings. 基本操作:打开.读写.关闭. 2.python操作问题库 库:JIRA 基本操作:提交问题 3.网页信息在网址不变时的获取 库:req ...

  4. 图学习【参考资料2】-知识补充与node2vec代码注解

    本项目参考: https://aistudio.baidu.com/aistudio/projectdetail/5012408?contributionType=1 *一.正题篇:DeepWalk. ...

  5. tekla软件安装教程

    Tekla2020 WIN10 64位安装步骤: 1.先使用"百度网盘客户端"下载Tekla2020_x64软件安装包到电脑磁盘,并鼠标右击进行解压缩,安装前先断开电脑网络,然后找 ...

  6. 【项目案例】配置小型网络WLAN基本业务示例

    组网需求 如图1-1所示,AC直接与AP连接.现某企业分支机构为了保证工作人员可以随时随地的访问Internet,需要通过部署WLAN基本业务实现移动办公. 具体要求如下: 1.提供名为"t ...

  7. js 金钱3位格式化

    function formatCash(str) { return str.split('').reverse().reduce((prev, next, index) => { return ...

  8. day28 BOM浏览器对象 & 定时事件与Cookie & (视频卷子讲解)

    3.10 BOM浏览器对象模型 3.10.1 window对象 所有浏览器都支持window对象,它表示浏览器窗口: | 属性 | history 网页历史记录 返回History只读对象 locat ...

  9. jquery操作内容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. <一>智能指针基础

    代码1 int main(){ //裸指针,手动开辟,需要自己释放,如果忘记了或者因为 //程序逻辑导致p没有释放,那么就会导致内存泄漏 int *p=new int(10); if(***){ re ...