导读:前言.前段时间 Oculus 的 SDK.频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发。当然,不排除我文章刚写完 SDK.又变了的可能性,所以如果有人发现文章的内容已经不适用于新版本了,也可以留评论或者私信
前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发。当然,不排除我文章刚写完 SDK 又变了的可能性,所以如果有人发现文章的内容已经不适用于新版本了,也可以留评论或者私信我,我会持续更新文章内容。
当前适用版本:
文章最近更新日期:2023.02.07
在导航栏找到 Edit > Project Settings > XR Plugin Management,点击 Install XR Plugin Management 安装 XR 支持工具
随后分别在 Windows 和 Android 选项卡中勾选 Oculus 选项,添加对 Oculus SDK 的支持
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)
手的设置与控制器设置类似,在这里只演示一只手的设置方式
这样,控制器和手的抓取功能就可以实现了
想要一个物体可以被抓取,需要添加几个必要的组件:
在场景中添加一个 Cube,添加所需的组件(Pointable Element 引用的是 Grabbable 组件,这点在后续的内容中也会出现)
这样就可以实现简单的控制器抓取物体的效果了
其他的方式在此只放出必要的内容,具体细节不做展示(方法都是类似的)
以下内容按顺序分别为:只能用控制器、只能用手、二者都可以用
在前面的内容里可以看到控制器上有一个会变色的小球,这个小球其实是 debug 用的
碰到可交互区域的时候小球会变蓝色,按下 Grab(握柄)按钮的时候会变成绿色,这个可视化工具可以帮助我们判断可交互的内容是否出现问题
如果不想要这个这个小球,也可以手动关闭它
在我们之前添加的 ControllerInteractors
中找到 Visuals > DebugVisuals,禁用这个子物体
这样就关闭了控制器的操作检测器
How to Interact in VR - Oculus Interaction SDK - PART 1 - YouTube
上一篇:《领域驱动设计》:从领域视角深入
下一篇:柏林噪声分形&幻想大陆地图生成