Unity Meta Quest 开发(一)导论:开发现状与主流 SDK
Meta Quest 开发导论:开发现状与主流 SDK
获取完整课程以及答疑,工程文件下载:
https://www.spatialxr.tech/
本篇文章配套的视频链接:【2023 VR+MR全硬件开发教程】:一、开发导论(主讲:YY)
📕开发平台分类
VR(XR)头显的开发按照程序运行的平台分类主要可以分为一体机应用和 PCVR 应用。一体机应用就是直接运行在 VR 头显内的应用,它的算力由头显本身提供。PCVR 应用就是需要将头显和电脑进行串流,它的算力由电脑提供,头显只负责显示画面。
因为目前来说电脑的芯片比一体机头显内置的芯片更加强大,所以通常来说 PCVR 应用相比一体机应用会有更好的画质,但是一体机应用也有它的优点,就是方便。因为玩 PCVR 需要有一个头显和电脑串流的步骤,串流分为有线串流和无线串流。有线串流就是需要将头显和电脑通过一根串流线进行连接,那么我们玩 PCVR 可能经常会受到这根串流线的束缚。无线串流就是需要将头显和电脑通过 WiFi 进行连接,那么这就需要一个比较好的网络才能有流畅的体验。并且你的电脑配置也决定了是否能流畅地玩 PCVR 游戏。但是一体机应用就比较方便了,头显开机之后就能直接玩,没有什么束缚。那么以上就是 PCVR 应用和一体机应用的区别,大家需要根据自己的需求选择哪一种类型的开发。
📕Quest 一体机开发分类
那么我会先从 Meta Quest 一体机开发讲起。Quest 一体机开发按照输入类型分类可以分为手柄功能的开发(比如操作手柄按键去控制人物)和手势追踪(用自己的双手去与虚拟物体进行交互)。
然后按照应用中的背景环境分类的话可以分为 VR 和 MR 。VR 就是完全虚拟的环境。MR 就是能在现实场景中看到虚拟的物体,并且能和虚拟物体交互,虚拟物体也能和现实物体交互,比如虚拟物体与现实物体产生遮挡关系、虚拟物体能够与现实物体发生碰撞。 Quest 头显能够通过它的视频透视技术(Video See-Through)看到现实中的环境,但是透视只是将原来虚拟世界的游戏背景替换成现实世界的图层,然后将虚拟物体叠加在现实世界的图层上。如果想要实现虚拟物体和现实物体的碰撞和遮挡,就要用上一些 MR 的技术。这方面 Meta 已经在不断完善它的 API 了。因为最近 Quest3 出了嘛,它有两个 RGB 彩色摄像头和一个深度传感器,透视的清晰度更高,并且能对周围场景进行扫描,对 MR 的支持肯定会更好,并且 Meta 在 Quest3 发布会上也着重强调了 Quest3 的 MR 体验,这说明 MR 在未来可能会是一个非常值得研究的方向。包括明年会出的Apple Vision Pro,也是注重MR体验。身为开发者,我们也可以提前做一些技术积累,应对未来快速发展的时代。
📕Quest 一体机开发主流 SDK
要想开发 XR 应用,我们需要使用一些 XR 开发的 SDK,也就是软件开发工具包。那么我们先来看一看目前市面上有哪些主流的用于开发 Quest 一体机应用的 SDK。本系列教程使用的是 Unity 引擎进行开发,因此我会列出一些 Unity 版本的 SDK。
首先是 OpenXR+XR Interaction Toolkit(XRI)的方案。这个 OpenXR 是什么东西呢?在 OpenXR 还没出现之前,XR行业发展的早期,不同的 XR 设备都维护着它们各自的 SDK,供开发人员制作出能在相应设备上运行的程序,因此开发者需要根据不同的 XR 设备厂商选择不同的 SDK 进行开发。但是如果在不同设备上移植同一套程序就比较麻烦了,因为可能会出现 A 厂商的 SDK 无法兼容到 B 厂商的设备上。这就会导致如果我想要使用不同设备的人都能体验到我开发的程序,就需要为每一种设备开发一个特定的程序版本。那么这显然是巨大的负担。而开发者希望 XR 行业能有一套统一的标准,只要编写一次代码,就能兼容所有的设备。这样开发者只要专注于程序开发本身,而不用在意设备间的差异。
而 OpenXR 就是为了简化 XR 开发而制定的一套标准。相当于在编写的 XR 应用程序和不同的硬件设备间新增了一个中间层,最上层是 XR 应用程序,最底层是硬件设备,而这两个层的中间夹了一个 OpenXR 层,它向上提供一套统一的开发 API,不同的开发引擎对该 API 进行二次封装,提供给 XR 应用开发者使用。而不同的设备厂商为硬件编写支持 OpenXR 标准的接口,使得中间层能够向下兼容对应的硬件设备。如今,越来越多的 XR 设备开始支持 OpenXR 标准,这意味着选用 OpenXR 进行 XR 设备的开发可以成为一种通用的方案。
而 XR Interaction Toolkit 是 Unity 官方提供的开发 VR/AR 程序的工具包。结合 Unity 中的 OpenXR 插件,就能开发 XR 应用了,并且理论上适用于所有支持 OpenXR 标准的头显。那么这套方案适用于开发 VR 手柄相关功能,比如移动,传送,转向,抓取,射线交互,点触交互,点触交互就比如直接用手去点击一个 UI 按钮。那么 XR Interaction Toolkit 的优点就是跨平台,易上手。但是目前来说一些复杂的功能需要自己实现,比如手部物理,抓取手势等功能。不过这个XR Interaction Toolkit 目前也是在不断更新,每次更新都会新加一些功能,也许在未来它会内置更多复杂的功能。
OpenXR+XR Hands 的方案是用来实现手势追踪的,OpenXR+Meta OpenXR Feature 的方案是用来实现 MR 的。但是 XR Hands 和 Meta OpenXR Feature 目前还处于早期开发阶段,提供的功能不是很多。
接下来是 Oculus Integration:
它是 Meta 自家的SDK。能够用于手柄功能的开发,手势追踪(包括抓取,点击,射线交互,识别手势,比如我摆出一个剪刀手,能被Quest识别出来),然后还有 MR 的开发。这款 SDK 提供的功能是挺多的,但是它也有一个缺点,就是 SDK 迭代速度很快,可能前一个版本中的一个组件到了下一个新版本,使用方法就发生了很大的改变。并且我感觉它的官方文档某些地方写的挺乱的,可能不易看懂。
除此之外,还有 UltimateXR,它也是一款比较好用的 XR 开发框架。(https://www.ultimatexr.io/)
还有这个 AutoHand,它是一款付费插件,具有非常优秀的手部物理交互系统。
📕Quest PCVR 开发主流 SDK
那么既然讲了 Quest 一体机开发的 SDK,我也顺带讲一下 PCVR 的一些主流的 SDK。首先这个 OpenXR+XR Interaction Toolkit 的方案也是适用的,然后还有像SteamVR,VRTK,
UltimateXR, Auto Hand,VR Interaction Framework,HurricaneVR,都是比较不错的选择。
📕新手入门开发的 SDK 推荐
最后总结一下,如果要开发 Quest 一体机应用,手柄功能的开发我推荐用 OpenXR+XR Interaction Toolkit 的方案,对于新手来说容易上手,并且它的相关教程目前是最多的。如果你想开发手势追踪或者 MR 的内容,目前我推荐用 Meta 自家的 Oculus Integration。如果要开发 PCVR,然后用 Quest 串流。我也推荐新手从 OpenXR+XR Interaction Toolkit 入手,如果想要实现更复杂的功能也可以尝试其他插件。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)