【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 官方提供的开发工具,需要添加到自己的账号里面使用

Oculus Integration | 整合 | Unity Asset Store

添加完成之后回到自己的项目,在导航栏找到 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,禁用这个子物体

 

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

 


参考资料

How to Interact in VR - Oculus Interaction SDK - PART 1 - YouTube

posted @ 2023-02-07 14:27  千叶Christa  阅读(1283)  评论(0编辑  收藏  举报