VR日报原创稿件,转载请注明出处!
业内人士对OSVR(雷蛇)曾经有过这样的评价,认为它并不是直接为玩家而生的,从目前OSVR开源虚拟现实平台的建设来看,的确如此。
自从今年一月OSVR推出以来,包括英特尔、NVIDIA、Xilinx、育碧、Leap Motion等近250家机构企业,都加入到了OSVR生态系统。随着社区的不断扩大,OSVR软件平台的容量实现了跨越式的增长。
OSVR(开源虚拟现实系统)的目标是为发现、配置,以及VR / AR运行设备创建一个开放的,通用的标准。由Sensics和雷蛇创建的OSVR,包括两个独立的部分:一是OSVR软件平台,二是开源黑客开发工具包VR耳机。
Sensics团队是OSVR软件平台的架构者,也是平台的官方维护者。以下是关于OSVR接口和设备、游戏引擎、低延迟的渲染、操作系统、实用程序和高层次处理几个方面的现状和趋势分析。
整体框架:
OSVR软件框架的目标是可以很容易地创建引人注目的、高性能的VR / AR应用程序:
致力于尽可能多的VR / AR显示器和外围设备。
支持甚至是那些无法获得在应用程序创建时的设备。就像你不需要,当你购买一台新打印机升级你的文字处理软件,当一个新的HMD变得可用时,你不需要升级你的游戏。
如果需要的话,可以在多种操作系统和计算平台上运行。
取单个设备的独特功能优势,而不是达到了“最小公分母”。
没有锁定到一个特定的设备,外围设备,开发环境,编程语言或应用程序商店。
OSVR框架的目标是实现为了在开放式采购软件的绝大部分实现这些目标:鼓励更广泛的VR / AR社区参与。
提供使用者,他们想要的安全和安心。
通过包括贡献者的广泛社会加快发展的步伐。
允许采用该平台自定义他们的特定需求。
最后,OSVR利用现有的开源项目(OpenCV的,CMake的,VRPN),并设计了一个模块化的,基于插件的架构,因此:
参与者可以选择保留模块的闭源,以保护知识产权。
采用者可以只选择他们需要的模块选择一个小尺寸的部署。
功能,例如对新设备的支持可在事实之后加入。
1、接口和设备
在“OSVR的讲法”,接口是用于特定类型数据的通道(“接口类”)。设备可以说是OSVR暴露接口的核心,反过来对应用程序也是如此。这种接口包括跟踪器(提供位置,方向,或全姿势),按钮,模拟(操纵杆的轴线,模拟触发值),眼跟踪器(视线方向),手势,成像器(单个图像或图像流),运动(对于全方位跑步机),骨骼(骨结构)和显示器(输出设备)。
单个物理装置可以在一个以上的接口类提供数据,就像一个多功能打印机,可能看作是综合打印机、扫描仪、传真的操作系统。例如下图所示的是一些普遍的设备暴露接口:
试想一下,你正在为360度视频开发一个查看器,你希望允许用户与之使用手势交互。在OSVR平台生态系统里,因为你是通过一个通用的独立于设备的手势界面,所以你可以使用具有OSVR插件的任何设备。在上面的例子中,这些设备可能是 Leap Motion,NOD,YEI和Softkinetic产品。所有这些设备都将以标准化的方式暴露手势的应用程序。对比这一方法省去了整合这些每一个单独设备的麻烦。此外,当像英特尔RealSense相机新的设备获得包括手势的界面的OSVR插件时,无需去更改任何代码,它们会立即和该应用程序一起工作。
当前状态
迄今为止,OSVR团队主要集中打造的各类接口,连接这些接口和流行的设备工作,并建立模拟插件,允许开发者使用模拟数据进行工作,以代替使用真实设备。除了原生OSVR插件,OSVR也从VRPN继承了一个流行的支持约100个设备的的开放源码项目。
未来的计划
在接下来的几个月,相信OSVR团队,OSVR硬件合作伙伴,以及其他由OSVR支持的设备数量的OSVR者将显著扩大。具体而言,从它的计划和工作进展可知:支持英特尔Realsense,拓比眼动仪,NOD设备, Leap Motion摄像头,HTC万岁等。
2、游戏引擎
概观
对于游戏引擎,以及那些希望通过这些引擎所支持的硬件设备来说,OSVR都扮演着非常重要的服务角色。
对于许多图形和游戏引擎(Unity,Unreal, Crytek,VBS,Mongame,OpenVR,Unigine,WebVR等)和众多的硬件设备,都存在一个难点。如果每个硬件供应商需要每个引擎的支持,那将会为此写大量相应的驱动程序以及花费更多的人力时间。此外,这种“多对多”的连接(见下图)对发动机的开发提供了很大的压力,因为他们需要不断培训和支持的硬件开发商,不懈努力跟上最新的硬件和驱动程序版本。
相反,使用OSVR时,游戏引擎需要有与OSVR单个集成来支持所有OSVR支持硬件。该OSVR游戏引擎的集成提供了一个统一的、标准化的方式来连接所有支持相关OSVR接口的设备:是否跟踪器,手势,骨骼,眼动仪或其他。该OSVR团队和社区可与每个发动机的开发工作,以创建一个优化的整合,所以硬件开发人员没有必要学习和再学习每台发动机的复杂性。如果新的硬件设备来在市场上,硬件制造商(或OSVR社区有兴趣的成员)可以创建一个设备插件OSVR,从而实现自动连接到所有的OSVR支持的游戏引擎。由于OSVR是开源和基于插件的,这种插件的可用性不依赖于Sensics或任何其他公司的优先级。开发人员可以简单地从现有的开源插件启动和快速修改为新设备特定的API。结果示于下图。
当前状态
OSVR集成统一,虚幻引擎,和Monogame
未来的计划
① 一个为OpenVR(Valve)开发的插件处于测试阶段,应该很快就可以完成。这将允许OSVR支持的显示器和设备在OpenVR / SteamVR游戏中使用,虽受OpenVR API的限制。
②在Mozilla Firefox的OSVR后端WebVR已经提交给Mozilla项目,我们预计这很快将成为Firefox的WebVR的一部分。
③一个学生团队正在开发搅拌机游戏引擎插件。作为这种努力的一部分,他们正在创建一个Python包装的OSVR核心客户端功能,使之可以允许轻松集成到像WorldViz Vizard的其他引擎。
④ 关于可能整合成CryEngine,Bohemia VBS3和其他相关人士正在讨论之中。
由于有意识的设计决策是开发客户端(游戏/应用程序)API时所作,因为有对原生的C OSVR API提供多语言包装(C ++ ,. NET不久的Python),而且由于现有集成是有意识的设计决策开源的,它使OSVR很容易融入更多的引擎,包括内部的引擎和自定义应用程序。
3、低延迟渲染
概观
从检测到的渲染所用的时间,有时也被称为“motion to photon”延迟,已严格审查的主体努力创造更舒适、更逼真的体验。延迟有多种来源,包括:传感器产生数据的频率?数据到应用程序的反应速度有多快?被数据点外推到未来打造“预测”跟踪?通过图形通过图像叠加应用渲染图片有多快?应用程序是否可以在最后的时刻把“时间扭曲”的修正?
当前状态
OSVR系统解决如下几点:
①来自传感器的数据率:OSVR HDK提供100 Hz的位置数据和400 Hz的“传感器融合”方向数据。
②数据到达应用程序速度:OSVR集成了ETW(Windows事件跟踪),延迟和性能分析(见https://osvr.github.io/presentations/20150901-Intro-ETW-OSVR/一个简短的教程)是一个强大的工具。 ETW有助于优化从游戏到传感器完整的软件堆栈,实现最佳的性能。
③预计跟踪:OSVR目前包括预测方向追踪。当使用OSVR HDK时,从设置400Hz的电脑得出角速度报告。当使用的HMD,不提供角速度,速度可以从连续偏航/俯仰/翻滚提取报告。未来预计跟踪看起来是16毫秒,降低了明显的延迟。
④直接渲染:在任何OSVR支持的设备上,Sensics / OSVR渲染管理器(支持Windows / NVIDIA平台,包括一个统一插件)提供最佳的低延时渲染。这包括:
⑴直接HMD模式:允许一个应用程序来处理只能访问虚拟现实应用应用程序的虚拟现实耳机作为头显,为Windows显示器绕过渲染延迟典型。Direct3D和OpenGL应用程序都可以使用直接HMD模式。
⑵前缓冲渲染:直接呈现到前台缓存以减少延迟。
⑤时间翘曲:OSVR包含了异步时间扭曲作为渲染管理器的一部分。它通过制作基于最新头部定向场景渲染后的的刚好在时间点的去调整渲染图像,而不是在发送像素到显示前。
未来的计划
该OSVR团队正在努力扩大支持的“渲染管理器”图形卡的范围,包括AMD和Intel。我们也希望增加与显卡厂商在Android和其他非Windows平台为这些平台协作渲染的管理能力。
至于渲染管理器本身,在不久的将来,以下增强功能将被释放:
①综合失真校正:处理一些头戴式显示器中的每个色彩失真,需要后期渲染失真。现在,OSVR执行该客户端/应用程序的一面,但是进入生成管理器的移动失真校正提供了额外的好处。用异步时间扭曲的相同缓冲溢出渲染将提供额外的图像区域渲染。
②高优先级渲染:增加与最终像素扫描输出相关联的渲染线程的优先,确保每个帧能准时显示。
③时间跟踪:指示应用程序帧将在什么时间显示,让它呈现适当的应用场景。这也使渲染管理器在产生渲染转换和异步时间扭曲做预测跟踪。该系统还采取先前绘制周期报告的时间,通知应用程序时,简化现场,维持最佳的更新速率。
④用额外的引擎添加渲染管理器支持。
⑤使用ETW执行额外的引擎和插件的优化。
⑥基于插件API设计的先进渲染能力。这将允许开源释放和跨平台的公共开发渲染管理堆栈加载供应商特定码(如果需要通过这些供应商可被闭源)的能力。
4、操作系统
概观
VR / AR产品有许多形状和形式,并驻留在几个不同的计算平台。最明显的例子是基于PC的虚拟现实,比较显而易见的例子就是基于电脑端VR,比较典型的是用于Windows,以及典型用于Android手机的移动VR。 OSVR的目标是既支持广泛的操作系统,也为特定操作系统提供一个一致的编程接口。在理想的情况下,随着它们涉及到创建VR / AR体验,操作系统的具体细节(如显卡驱动程序,文件系统的详细信息)都是从OSVR中提取。
当前状态
OSVR目前支持以下操作系统:
Windows中,包括特定于Windows的支持的直接渲染。
Android系统,包括使用内部传感器,摄像头和其它板载外围设备的能力。目前,采用CrystaX NDK构建本机代码的应用程序。Unity/Android的也适用于OSVR / Android的顶部。
Linux系统:OSVR引擎已经完整支持Linux和在Linux上测试了Windows二进制文件释放的代码。Unity / Linux的应该是可能的,但还没有被测试过。
未来的计划
包括Android和可能的Linux二进制文件在Unity插件的版本。
添加OSX支持。
加入iOS的支持。
加入RenderManager支持其他平台,按要求与平台供应商和图形芯片制造商工作。
用于验证非Windows操作系统的其他游戏引擎正常工作。
为操作系统特定/特定平台的外设和功能添加插件。
5、实际应用
概观
OSVR实用程序是独立的程序执行有用的功能用于支持OSVR开发和部署, OSVR理念执行到位,OSVR实用程序也开源。
当前状态
当前存在以下实用程序:
Distortionizer:distortionizer是一个互动的工具,用于帮助确定显示屏的RGB光畸变参数。有时,这些参数是由光学设计团队提供。其它时间,它们需要被测定。distortionizer的输出是一组畸变校正系数,自动送入渲染管理器。
延迟测试:结合了开源硬件(基于低成本的Arduino组件)和开源软件来提供终端到终端的延迟测量。
跟踪器:一个图形化的工具动态地显示被跟踪物体的位置和方向。
未来的计划
正在开发一些额外的实用程序:
Windows安装OSVR运行组件。
互动配置实用程序允许配置眼分离、高度和其他用户特定的参数。
6、高层处理
概观
高层处理模块(用“OSVR讲法”叫分析插件)是将数据转换为更高级别信息的软件模块。例如,手势引擎插件可以XYZ流坐标将转换到一个识别的姿势;眼跟踪器插件可以使相机灵活对准眼睛,并提供实时的视线方向;传感器融合插件可以使数据与各种追踪器接口吻合,提供更准确的报告。
当前状态
OSVR团队和社区已经主要集中建立低级别的基础设施,在对他们的基础上增加可选的处理层之前。目前,存在两种分析插件:
1-Euro过滤器:这是一个按照目前应用的数据平滑滤波器,提高了Razer Hydra的输出稳定性。
预测追踪:估计到不久的将来,头部定向将作为减少感知延迟的一种方法。
未来的计划
为便利地开发分析插件允许它们配置的统一的API正在进行中。一些分析插件正处在在考虑和设计的不同阶段:
传感器融合:组合多个传感器输出,提供更准确的信息。
增强现实:允许在现场检测对象。
眼动追踪:转换瞳孔摄像机图像到瞳孔坐标。
正在致力于简化编写分析插件,作开放源代码的示例的过程中,对社区贡献是非常开放的。
总结
OSVR,像VR一样,是一项正在进行的工作。目前,仍然有很多工作要做:是否支持新的设备,支持更广泛的引擎和开发环境,通过创建分析插件,使设备更加有用,或者在提供跨多个平台的高性能渲染等。我们正处在一个参与建设的过程中,未来是值得期待的。
原文链接:https://www.vrrb.cn/guandian/401.html