XR开发的各种SDK以及相关概念
简要记录一下几个常用的概念以及sdk的选择
OpenXR
OpenXR
是一套由Khronos Group发起的跨平台的,通用的标准。简单来说就是定义了一套接口(不仅仅是接口),硬件厂商如steamvr、pico等实现这一套接口。unity或者虚幻等等引擎再适配这套接口,大家就可以用同一套标准去开发,省去了为不同平台适配的麻烦。
仅PC上绝大多数VR都为OpenXR
提供了运行环境,如steamVR
、Windows Mixed Reality
等,安卓端的Pico以及oculus也都适配了OpenXR
但缺点是无法调用某些特定平台的特定的接口,比如steamVR可以在加载时预先传输个天空盒当作loading,steamVR还有自己的手部骨骼动画,pico也有自己的比如VR合成层等功能是无法通过openxr来调用的。
如果采用OpenXR开发安卓端VR还有个很大优势就是可是用PC端的VR来调试功能,大大提高开发效率。
Unity XR Plugin Architecture
Unity 2019.3 之后,官方提供了一个叫做XR插件框架的东东,通过包管理器安装,大大简化了XR开发的流程,在此基础之上,各大硬件厂商开发自己的适配Unity的XR开发SDK,如Steam的OpenVR
,pico的picoVR
,Oculus的Oculus XR Plugin
、微软的Windows Mixed Reality
等等,当然还有官方自己为了openxr开发的OpenXR Plugin
。
OpenXR Plugin
由Unity官方开发的,适配了openxr
以及unity XR Plugin Architecture
的插件,Unity还为这个插件开发了XR Interaction Toolkit
作为最基础的XR交互。
XR Interaction Toolkit
适配了OpenXR,实现了基础的XR交互的官方插件,包含了常用的射线、抓取、UI交互(仅限UGUI,不支持UIToolkit)、传送等等基础功能,同时留下了丰富的接口方便开发者自己实现想要的功能。
OpenVR
和OpenXR
很像,但完全不是一码事,这个是V社开发的为了各个硬件厂商适配SteamVR的标准,同时提供了OpenVR Loader
来适配Unity的Unity XR Plugin Architecture
。包含在SteamVR Plugin
中。
SteamVR Plugin
V社开发的一套SDK,包含了OpenVR
插件来适配unity XR Plugin
,同时还有一系列的其他与SteamVR交互的接口,如输入绑定、手部骨骼、loading天空盒子、Vive Trakcer等等。但是已经快两年没有更新了。
Pico
pico提供了两套SDK,一套是纯粹的PICO Unity OpenXR Plugin
,即实现了OpenXR
的SDK,同时还有一套叫做PICO Unity Integration SDK
,这里就包含了其他特定与Pico平台的功能,如平台用户相关的、注视点渲染、VR 合成层等等。但二者都兼容了XR Interaction Toolkit
,对于开发还是很友好的。
总结
所以在开发前要想清楚,到底是要适配多平台,还是想要某个平台特定的功能,二者不可很难兼得。