/ Roadtovr / 0浏览

OSVR 路线图:打造一个可互操作的虚拟现实硬件和软件生态系统

OSVR(开源虚拟现实)旨在创建一个开放且通用的标准,用于发现、配置和操作虚拟现实/增强现实设备。OSVR由Sensics和Razer创建,包括两个独立的组成部分:1)OSVR软件平台和2)开源的Hacker Development Kit虚拟现实头显。

嘉宾作者

Yuval Boger于2006年加入Sensics,帮助将虚拟现实从实验室引入市场。近10年后,他将自己独特的技术和市场专业知识应用到与消费电子、工业和学术界的领导者合作,帮助他们塑造虚拟现实的可能性。他是OSVR开源虚拟现实倡议的主要架构师,并经常在会议上做演讲。Yuval在VR技术和VR市场上分享自己的想法于VRguy.net。

自今年1月份OSVR发布以来,包括英特尔、NVIDIA、Xilinx、育碧、Leap Motion等近250家组织已经加入了OSVR生态系统。随着OSVR社区的扩大,软件平台的功能也得到了飞跃式的增长。
参见:OSVR获得NVIDIA“Gameworks VR”支持,增加了65个新的行业合作伙伴
Sensics团队设计了OSVR软件平台,并成为其官方维护者。下面,我将从多个角度描述我对OSVR软件未来发展的个人看法,包括接口和设备、游戏引擎、低延迟渲染、操作系统、实用工具和高级处理。

整体架构
当前开源OSVR项目的图示,请参阅最新版本:http://osvr.github.io/contributing/
OSVR软件框架的目标是轻松创建引人注目且性能优越的虚拟现实/增强现实应用程序,以满足以下要求:

适用于尽可能多的虚拟现实/增强现实显示设备和外设。
支持那些在应用程序创建之前尚未可用的设备。就像购买新打印机时无需升级文字处理软件一样,当新的头显设备出现时,你不需要升级你的游戏。
如果需要,可以在广泛的操作系统和计算平台上运行。
充分利用各个设备的独特功能,而不是追求“最低公共分母”。
不依赖特定的设备、外设、开发环境、编程语言或应用商店。

OSVR框架旨在在开源绝大部分软件的同时实现这些目标,以:

鼓励更广泛的虚拟现实/增强现实社区参与。
为采用者提供所需的安全性和信心。
通过纳入广泛的贡献者社区来加速开发速度。
允许采用者根据其具体需求定制平台。

最后,OSVR利用现有的开源项目(OpenCV、CMake、VRPN),并采用模块化的插件式架构设计,以便:

参与者可以选择封闭模块,以保护知识产权。
采用者可以通过选择所需模块仅选择部署较小的占用空间。
可以在之后添加对新设备的支持等功能。

接口和设备
概述
OSVR HDK采用开源设计方案的模块化结构
在“OSVR术语”中,接口是特定类型(“接口类”)的数据的传输通道。设备被称为向OSVR核心公开接口,并进而向应用程序公开。此类接口包括跟踪器(提供位置、方向或完整姿态)、按钮、模拟(摇杆轴、模拟触发器值)、眼球跟踪器(凝视方向)、手势、图像获取器(单个图像或图像流)、运动(用于全向跑步机)、骨架(骨骼结构)和显示器(输出设备)。

单个物理设备可以在多个接口类中提供数据,就像多功能打印机对操作系统来说可能同时是打印机、扫描仪和传真机一样。例如,以下是一些受欢迎设备提供的接口:

假设你正在开发一个用于查看360度视频的观众,并希望允许用户使用手势进行交互。使用OSVR,由于您通过通用设备无关手势接口进行工作,因此您可以使用任何具有OSVR插件的设备。在上述示例中,这些设备将是Leap Motion、NOD、YEI和Softkinetic等产品。所有这些设备都会以标准化的方式向应用程序公开手势。与单独集成每个设备的麻烦相比,这种方法更加便利。此外,当诸如Intel RealSense摄像头的新设备获得包括手势接口的OSVR插件时,它们将立即与您的应用程序配合使用,无需更改任何代码。
当前状态
迄今为止,OSVR团队主要集中于创建各种类型的接口,连接说明这些接口有效的热门设备,并创建模拟插件,以使开发人员能够在不使用真实设备的情况下使用模拟数据进行工作。除了原生OSVR插件之外,OSVR还从VRPN继承了对大约100种设备的支持,VRPN是一个流行的开源项目。
未来计划
在未来的几个月里,我相信OSVR团队、OSVR硬件合作伙伴和其他OSVR贡献者将会大幅扩大OSVR支持的设备数量。具体来说,我了解到OSVR团队正在计划和进行支持Intel Realsense、Tobii眼动仪、NOD设备、Leap Motion摄像头、HTC Vive等工作。
游戏引擎
概述
OSVR为游戏引擎和希望受这些引擎支持的硬件设备提供了非常重要的服务。
问题在于有许多图形和游戏引擎(Unity,Unreal,Crytek,VBS,Mongame,OpenVR,Unigine,WebVR等)以及众多硬件设备。如果每个硬件供应商都想要得到每个引擎的支持,就需要编写大量的驱动程序,并且需要花费很多人年的时间进行整合和优化。此外,这种“多对多”连接(如图1所示)使引擎开发人员承受了很大压力,因为他们需要不断教育和支持硬件开发人员,并不断努力跟上最新的硬件和驱动程序版本。
图1 – Without OSVR: 每个设备需要多个插件
相反,使用OSVR时,游戏引擎只需要与OSVR进行一次集成,就可以支持所有支持相关OSVR接口的硬件设备。OSVR游戏引擎集成提供了一种协调统一的方式,可以连接到支持相关OSVR接口的所有设备,无论是跟踪器、手势、骨骼、眼动仪还是其他设备。OSVR团队和社区可以与每个引擎开发人员合作,创建经过优化的集成,因此硬件开发人员无需学习和重新学习每个引擎的复杂性。如果市场上有一种新的硬件设备,硬件制造商(或者OSVR社区的一位感兴趣的成员)可以为OSVR创建一个设备插件,从而自动实现与所有支持OSVR的游戏引擎的连接。由于OSVR是开源和基于插件的,这种插件的可用性并不依赖于Sensics或任何其他公司的优先事项。开发人员可以简单地从现有的开源插件开始,并快速修改为新设备的特定API。图2显示了结果。
图2 – With OSVR: 一个OSVR插件使得支持多个引擎变得容易
当前状态
OSVR已经在Unity、Unreal Engine和Monogame中进行了集成。
未来计划
OpenVR(Valve)的插件正在测试中,预计很快将完成。这将允许OSVR支持的显示器和设备与OpenVR/SteamVR游戏配合使用,尽管受限于OpenVR API的限制。
OSVR的WebVR后端已经提交给Mozilla项目,我们预计它很快将成为Firefox WebVR每夜版的一部分。
一个学生团队正在开发Blender Game Engine插件。作为这个努力的一部分,他们正在创建一个用于OSVR Core客户端功能的Python封装器,这将允许在其他引擎(如WorldViz Vizard)中轻松集成。
可能会将其集成到CryEngine、Bohemia VBS3等引擎中。由于在开发客户端(游戏/应用程序)API时进行了有意识的设计决策,因此对于本机C OSVR API(C++,.Net和即将推出的Python)存在多种语言包装器,并且现有的集成是开源的,因此很容易将OSVR集成到其他引擎中,包括内部引擎和定制应用程序。
续第2页

低延迟渲染
概述
从感知到渲染所花费的时间——有时称为“动作到像素”延迟——一直受到密切关注,以创造更舒适和沉浸式的体验。延迟来自多个方面,包括:传感器生成数据的频率如何?数据能多快到达应用程序?数据点是否被推断为创建“预测”跟踪?应用程序能多快通过图形堆栈渲染图像?应用程序能否在最后一刻进行“时间扭曲”修正?
当前状况
OSVR从以下几个方面系统地解决了这些问题:

传感器数据速率:OSVR HDK提供100 Hz的位置数据和400 Hz的“传感器融合”方向数据。
数据到达应用程序的速度:OSVR与ETW(Windows事件跟踪)集成,ETW是一种用于延迟和性能分析的强大工具(参见http://osvr.github.io/presentations/20150901-Intro-ETW-OSVR/进行简要教程)。ETW帮助优化完整的软件堆栈——从游戏到传感器——以实现最佳性能。
预测跟踪:OSVR当前包括预测性定向跟踪。使用OSVR HDK时,这是从以400Hz提供给控制PC的角速度报告中派生出来的。对于不提供角速度的HMD,速度可以从连续的偏航/俯仰/滚动报告中提取。预测性跟踪会向未来看16毫秒,并减少表观延迟。
直接渲染:Sensics/OSVR Render Manager(支持Windows/NVIDIA平台并包含Unity插件)在任何支持OSVR设备上提供最佳低延迟渲染。它包括:

直接到HMD模式:使应用程序将VR头显视为仅对VR应用程序可访问的头戴显示设备,绕过Windows显示器通常存在的渲染延迟。直接到HMD模式适用于Direct3D和OpenGL应用程序。
前缓冲区渲染:直接渲染到前缓冲区以减少延迟。

扭曲纠正:OSVR在Render Manager中包含异步时间扭曲。它通过根据场景渲染后但在将像素发送到显示器之前的最新头部方向进行即时调整来减少延迟。它在双眼的所有边界上都包含纹理超填充,并支持所有平移和旋转,具有适用于图像中物体的近似深度。

另请参阅:新的OSVR HDK v1.3头戴式显示器配备120Hz OLED显示屏,新光学器件-将于十月发货
未来计划
OSVR团队正在努力扩大支持的“Render Manager”图形卡范围,包括AMD和Intel。我们还计划通过与这些平台的图形供应商合作,在Android和其他非Windows平台上添加Render Manager功能。
关于Render Manager本身,在不久的将来,将推出以下增强功能:

集成失真校正:处理某些HMD中的色彩失真需要后渲染失真校正。目前,OSVR在客户端/应用程序端执行这项任务,但将失真校正移至Render Manager中可以提供额外的好处。与异步时间扭曲使用的相同的缓冲区超填充渲染将为渲染提供额外的图像区域。
高优先级渲染:增加与最终像素扫描输出关联的渲染线程的优先级,以确保每帧都按时显示。
时间追踪:向应用程序指示未来帧将显示的时间,使其渲染适当的场景。这还可以为图像中的对象应用近似深度。支持“渲染管理器”在生成渲染转换和异步时间扭曲时进行预测性跟踪。系统还报告了先前渲染周期所需的时间,通知应用何时简化场景以保持最佳更新速度。
在其他引擎中添加“渲染管理器”支持。
使用ETW对其他引擎和插件进行优化。
设计基于插件的高级渲染功能API。这将允许开源发布和公共开发跨平台的“渲染管理器”软件栈,并能加载供应商特定的代码(如果供应商要求可以是闭源的)。

操作系统
概述
VR / AR产品有很多形状和形式,存在于多个不同的计算平台上。明显的例子是基于PC的VR,通常使用Windows,以及基于移动设备的VR,通常使用Android手机。 OSVR的目标是同时支持各种操作系统,并提供统一的编程接口,无论具体的操作系统如何。在理想情况下,与创建VR / AR体验相关的操作系统特定细节(如图形驱动程序,文件系统细节)都将由OSVR抽象。
当前状态
OSVR当前支持以下操作系统:

Windows,包括用于直接渲染的Windows特定支持。
Android,包括使用内部传感器、相机和其他内置外设的能力。目前,这使用CrystaX NDK构建本地代码应用程序。Unity/Android也可以在OSVR/Android上运行。
Linux:OSVR引擎完全支持Linux,并且在发布Windows二进制文件之前在Linux上进行了测试。Unity/Linux应该可行,但尚未进行过测试。

未来计划

在Unity插件发布中包括Android和可能的Linux二进制文件。
添加OSX支持。
添加iOS支持。
根据需要与平台供应商和图形芯片制造商合作,将“渲染管理器”支持添加到其他平台上。
验证其他非Windows操作系统的额外游戏引擎的正确运行。
为特定于操作系统/特定于平台的外围设备和功能添加插件。

实用工具
概述
OSVR实用工具是独立的程序,用于支持OSVR的开发和部署,符合OSVR的理念,这些实用工具也是开源的。
当前状态
目前存在以下实用工具:

Distortionizer:Distortionizer是一个交互式工具,可以帮助确定显示器的RGB光学畸变参数。有时,这些参数由光学设计团队提供。其他时候,需要进行测量。Distortionizer的输出是一组失真校正系数,可自动输入到“渲染管理器”中。
延迟测试:结合开源硬件(基于低成本Arduino组件)和开源软件,提供端到端的延迟测量。
跟踪器查看器:一个用于动态显示多个跟踪对象位置和方向的图形工具。

未来计划
我知道还有几个正在开发中的附加实用工具:

用于运行时组件的Windows安装程序。
交互式配置工具,允许配置眼睛间距、身高和其他用户特定参数。

高级处理
概述
高级处理模块(在“OSVR术语”中称为分析插件)是将数据转换为更高级信息的软件模块。例如,手势引擎插件可以将XYZ坐标流转换为识别的手势;眼球跟踪器插件可以获取镜头指向眼睛的实时摄像头视频,并提供实时注视方向;传感器融合插件可以将来自各种跟踪接口的数据融合成更准确的报告。
当前状态
OSVR团队和社区主要在构建底层基础设施之前,将可选的处理层添加到它们上面。目前,存在两个分析插件:

1-Euro滤波器:这是一种数据平滑滤波器,目前作为分析插件存在。应用,提高Razer Hydra的输出稳定性。
预测追踪器:通过估计未来的头部方向来减少感知延迟。

未来计划
正在进行统一的API开发,以便轻松开发分析插件并允许其配置。有几个分析插件正在考虑中,并处于不同设计阶段:

传感器融合:将多个传感器的输出合并为更准确的信息。
增强现实:允许在场景中检测物体。
眼球追踪:将瞳孔相机图像转换为瞳孔坐标。

我们正在努力简化编写分析插件的过程,提供开源示例,并非常欢迎社区的贡献。
总结
OSVR,就像VR一样,仍然处于不断发展中。自推出OSVR以来的八个月中,我对合作伙伴的质量、功能的广度以及社区的参与程度感到非常满意。然而,还有很多工作要做:无论是支持新设备,支持更广泛的引擎和开发环境,通过创建分析插件使设备更加有用,还是在多个平台上提供高性能渲染。我对参与构建OSVR的角色感到兴奋,并期待未来几个月和几年的发展。

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注