VR、AR内容开发的一大痛点是缺乏统一的标准,不像PC或移动端,可以做到一次开发多设备使用,如移动端应用基于Android SDK开发后,就可以运行于绝大部分Android手机。VR由于还处于初步发展阶段,每家的设备互不兼容,像基于Oculus SDK开发的应用只能运行于Oculus的设备。这对于内容开发者来说,要对接不同的设备就要基于不同的SDK对接移植,不同的设备交互方式不尽统一,移植工作比较繁琐。
最近随着XR内容生态的发展,这一问题得到了改善,内容开发者即将迎来统一的开发框架,内容开发将变得更加专注于内容创作本身,而复杂的设备和平台兼容将由底层的通用开发框架来负责。如下图所示意,XR开发者通常使用Unity、Unreal引擎来开发XR客户端应用或基于WebXR开发web应用,基于最新的Unity/Unreal插件体系,开发者只关注引擎本身的使用,引擎提供了统一的XR开发者组件,开发者无需关注设备间差异。设备厂家基于插件接口对接设备的渲染和交互能力。
Unity XR 插件体系
Unity从2019.3开始引入新的XR插件体系。开发者只需要基于XR Interaction Toolkit以及AR Foundation就可以创作应用。XR子系统提供一些XR通用功能,如不同AR和VR设备之间共享的通用功能,诸如显示、输入等。Unity XR SDK是Unity向不同XR厂家释放的插件体系接口,基于这套接口,XR设备厂家就可以提供通过Unity包管理器(Package Manager)导入的VR、AR、MR插件。开发者只需要在自己工程导入插件并配置相关选项即可支持相关厂家XR设备。
Unreal XR插件体系
Unreal源码是开放的,与Unity类似其显示子系统、输入子系统都是预留了插件接口的,XR设备厂家只需要实现相应接口,提供插件即可,具体实现可以参考ThiredParty目录中Oculus以及其他厂家已有的实现即可。
OpenXR统一标准
OpenXR是国际标准组织Khronos推行的XR标准。目前已经发布OpenXR 1.0标准,Oculus也已经发布OpenXR Runtime开发者预览版,Unreal引擎最新版本4.25已经支持OpenXR,Unity也即将支持OpenXR。OpenXR的优势是实现真正的跨平台支持,真正的做到一次开发,一次发布,在多平台使用。前面提到的Unity/Unreal XR框架虽能解决开发接口的统一,但不能实现运行时兼容。OpenXR通过Loading机制,可以实现不同运行时的动态枚举和加载。OpenXR普及后,XR应用将变得与手机应用一样,及时安装,随时使用。
WebXR
WebXR是针对Web开发提供的XR接口,基于WebXR可实现web页面的VR或AR访问。很多在线的全景图片或全景视频基于WebXR可提供沉浸式浏览体验。WebXR需要浏览器框架适配不同的XR设备,目前Firefox浏览器对XR支持比较好,已有多家XR设备厂家进行了对接。
CloudXR
随着5G的普及,云渲染也大力发展。很多厂家已经开始云游戏或云渲染的探索。CloudXR是基于云渲染的XR技术,它将复杂的渲染任务在云端完成,终端设备只负责本地的动捕和解码显示。CloudXR对内容侧的好处是提供更强大的平台能力,开发者无需关注移动端性能,通常基于成熟的创作环境如PC即可。
总之,随着XR技术的不断进步,XR内容开发也变得越来越容易,内容创作的成本也将越来越低,XR内容生态的繁荣和XR内容的爆发时代即将来临,XR的春天不远了。
更多AR/VR相关的内容,可以关注公众号“沉浸式计算”~