首页> 中国专利> 基于场景管理开发库的虚拟现实自适应桌面同步投影方法

基于场景管理开发库的虚拟现实自适应桌面同步投影方法

摘要

本发明公开了基于场景管理开发库的虚拟现实自适应桌面同步投影方法,包括:步骤1、接入虚拟现实设备,启动虚拟现实应用系统;步骤2、根据当前窗口创建系统唯一图形设备;步骤3、根据桌面分辨率初始化桌面镜像FBO对象;步骤4、使用OSG的相机API建立桌面投影专用摄像机;步骤5、使用OSG的API为桌面投影专用摄像机创建双重FBO对象。第一个负责获取当前帧内容;第二个保存上次最新帧内容;步骤6、为图形设备设置自定义的缓存交换机制,作为图形的刷新回调。回调中从桌面投影摄像机渲染FBO获取最新帧内容,将最新帧进行投影换算,输出到桌面镜像FBO,最终进行渲染,使画面在左右眼输出的同时渲染至桌面投影。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-07

    授权

    授权

  • 2018-04-20

    实质审查的生效 IPC(主分类):H04N13/363 申请日:20171102

    实质审查的生效

  • 2018-03-27

    公开

    公开

说明书

技术领域

本发明属于虚拟现实应用领域,尤其涉及基于场景管理开发库的虚拟现实自适应桌面同步投影方法。

背景技术

虚拟现实技术简称VR,是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机技术模拟产生一个为用户提供视觉、听觉、触觉等感官模拟的三维空间虚拟世界,用户借助特殊的输入、输出设备,与虚拟世界进行自然的交互。OpenScenceGraph(简称OSG),是一个开源的场景管理开发库,主要为图形图像应用程序的开发提供场景管理和图形渲染优化功能。OSG是三维地理信息系统的一种重要的技术基础,三维地理信息系统可以对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述。在使用OSG进行三维地理信息综合和显示的过程中,与虚拟现实相结合,可以得到对地理信息观测充分的沉浸感,有助于用户更好的分析和决策。

目前虚拟设备的交互设备,在使用过程中仅有使用头戴式显示器能够获得完整的系统展示,其他人均依赖于其左右眼画面的直接映射或局部展示,不能获得和左右眼同步的完整信息。对于基于OSG的虚拟现实系统,由于OSG可以承载海量的地理信息数据的能力,系统常常用来做辅助决策和战术商讨,常常需要较为宏观的观测角度,而现有的显示则不能很好的凸显OSG的数据特性,影响了基于OSG的虚拟现实的进一步发展。

发明内容

发明目的:针对现有技术中存在的问题,本发明公开了一种基于OSG的虚拟现实无损桌面同步投影方法,该方法在基于OSG的虚拟现实应用下进行任意桌面分辨率的无损投影,可以使得画面在左右眼输出的同步渲染至桌面投影。

技术方案:本发明公开了基于场景管理开发库OSG的虚拟现实自适应桌面同步投影方法,其技术方案包括如下步骤:

步骤1、接入虚拟现实设备,包括头戴式显示手柄、交互设备等,启动基于OSG的虚拟现实应用系统,即使用OSG中进行虚拟现实应用的任一系统;

步骤2、使用图形设备接口API(Application Programming Interface,应用程序编程接口)根据当前窗口创建系统唯一图形设备;

步骤3、获取桌面分辨率,根据分辨率初始化桌面镜像FBO(Frame Buffer Object)对象,用来将显示输出到屏幕;

步骤4、使用OSG的相机API建立桌面投影专用摄像机,根据接入的虚拟现实设备参数计算其初始观察矩阵、投影矩阵以及视口,桌面投影专用摄像机与左右眼摄像机共享系统唯一图形设备;

步骤5、使用OSG的API为桌面投影专用摄像机创建双重FBO对象,第一个FBO对象负责获取当前帧内容;第二个FBO保存上次最新帧内容,为渲染FBO,第二个FBO对象作为桌面镜像FBO的输入来源;

步骤6、为图形设备设置自定义的缓存交换机制,作为图形的刷新回调,回调中从桌面投影摄像机渲染FBO获取最新帧内容,将最新帧进行投影换算,形成与桌面分辨率大小一致的帧内容,输出到桌面镜像FBO,最终进行渲染,使画面在左右眼输出的同时渲染至桌面投影。

步骤4中包括如下步骤:

步骤4-1,设置世界坐标比例系数wx,左眼调整因子lx,右眼调整因子rx;

步骤4-2,根据接入的虚拟现实设备获取左眼调整系数矩阵LeftVM和右眼调整系数矩阵RightVM,桌面投影摄像机的初始观察矩阵WindowVM计算公式为:

WindowVM=(LeftVM*lx+RightVM*rx)*wx;

公式中代入左眼调整因子lx,右眼调整因子rx,得到WindowVM值;

步骤4-3,根据接入的虚拟现实设备获取左眼投影矩阵LeftPM和右眼投影矩阵RightPM,桌面投影摄像机的初始投影矩阵WindowPM计算公式为:

WindowPM=LeftPM*lx+RightPM*rx;

代入左眼调整因子lx,右眼调整因子rx,得到WindowPM值;

步骤4-4,根据接入的虚拟现实设备获取显示最佳屏幕高度h和最佳屏幕宽度w,桌面投影摄像机的视口设置为(0,0,w,h)。

步骤6包括如下步骤:

步骤6-1,根据图形设备获取其FBO管理器;

步骤6-2,将桌面镜像FBO绑定至帧绘图操作;

步骤6-3,获取桌面投影专用摄像机渲染FBO;

步骤6-4,将桌面投影专用摄像机渲染FBO绑定至帧读取操作;

步骤6-5,帧读取操作得到桌面投影专用摄像机渲染FBO中的最新帧;

步骤6-6,将最新帧按桌面分辨率大小换算成帧绘图操作需要的帧内容;

步骤6-7,将换算后的帧内容读取至帧绘图操作;

步骤6-8,解除FBO绑定;

步骤6-9,通过帧绘图动作输出显示画面,该画面与左右眼输出的画面一致。

本发明步骤6中,图形设备的自定义缓存交换机制,实现了画面帧与桌面投影显示的匹配。

本发明方法以基于OSG的虚拟现实技术为基础,通过建立独立的桌面投影摄相机进行虚拟现实桌面投影,其显示原理是以系统中唯一图形设备为基础,为图形设备建立自定义的缓存交换机制,摄相机与头戴式感应设备的左右眼摄像机共享此图形设备并同步显示画面,桌面画面的自适应性通过建立FBO(Frame Buffer Object)组的协调工作来实现。FBO组包括桌面镜像FBO对象和桌面投影摄像机双重FBO,其中桌面镜像FBO依赖于桌面分辨率,桌面投影摄像机双重FBO则与虚拟现实设备的输出要求相匹配,渲染时通过两种FBO的协调工作,将要渲染的每帧画面按照投影关系进行投影,融合形成单幅桌面投影画面,最终在后台形成不失真的桌面渲染显示。该方法可支持基于OSG的虚拟现实左右眼输出和桌面投影的同步显示,不同于虚拟现实设备左右眼画面直接映射造成的画面失真或画面裁剪丢失性,能支持任意分辨率桌面的自适应显示,很好的支持了基于OSG的虚拟现实的多人协同分析,提高了观测和辅助决策能力;同时该方法适用于所有基于OSG的虚拟现实显示,具有很好的通用性。

有益效果:与现有技术相比,本发明具有以下优点:1、该方法适用于所有基于OSG的虚拟现实设备的桌面投影,不受限于硬件设备,具有很好的通用性;2、该方法不同于虚拟现实设备左右眼画面直接映射造成的画面失真或画面裁剪丢失性,能将画面完整不失真的显示出来;3、该方法按照接入虚拟现实设备的特性进行桌面投影的比例换算,确保了各虚拟现实设备的兼容性,并始终保证与虚拟现实头戴式显示器左右眼显示内容一致,没有造成实际显示内容的丢失;4、该方法建立的桌面投影摄像机的双重FBO对象,保障了刷新前准备和刷新具体动作的并行进行,提高了刷新效率;5、该方法阐述时仅对单个桌面扩展的投影原理进行描述,但该方法原理可应用于多个桌面同时投影的情况,也可以任意设定具体投影的显示范围,为进一步的基于OSG的虚拟现实集成做铺垫,有很好的可扩展性。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1为本发明技术方案流程图;

图2画面帧与桌面投影原理图;

图3桌面投影摄像机FBO协同工作原理图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1所示,为本发明技术方案的流程图。本实施例中采用HTC Vive虚拟现实设备,采用单个桌面投影分辨率为1600*1200。对本发明技术方案进行详细说明。

步骤1、接入HTC Vive头戴式显示器和手柄,启动基于OSG的虚拟现实应用系统;

步骤2、建立系统唯一图形设备gc;

步骤3、获取桌面分辨率为1600*1200,初始化桌面镜像FBO(Frame Buffer Object)对象mirrorFBO,用来将显示输出到屏幕;

步骤4、建立桌面投影专用摄像机windowCamera,获取接入的HTC Vive头戴式显示器显示参数为:

显示最佳宽度:vrWidth=1680

显示最佳高度:vrHeight=1512

根据参数计算其初始观察矩阵WindowVM、投影矩阵WindowPM以及视口WindowViewPort,与左右眼摄像机共享系统唯一图形设备gc;

桌面投影专用摄像机的计算方法如下:

(11)设置世界坐标比例系数wx=1.0,左眼调整因子lx=0.5,右眼调整因子rx=0.5;

(12)根据接入的HTC Vive头戴式显示器获取左眼调整系数矩阵LeftVM值如下:

右眼调整系数矩阵RightVM值如下:

根据桌面投影摄像机的观察矩阵计算公式WindowVM=(LeftVM*lx+RightVM*rx)*wx,得到桌面投影摄像机的观察矩阵值如下:

(13)获取左眼投影矩阵LeftPM值如下:

右眼投影矩阵RightPM值如下:

根据桌面投影摄像机的投影矩阵计算公式WindowPM=LeftPM*lx+RightPM*rx,得到桌面投影摄像机的投影矩阵值入下:

(14)根据接入的虚拟现实设备获取显示最佳屏幕高度h和最佳屏幕宽度w,桌面投影摄像机的视口设置为(0,0,1600,1200);

步骤5、为桌面投影摄像机创建双重FBO对象ResolveFBO和MSAAFBO,其渲染大小与步骤4中vrWidth和vrHeight相关联,ResolveFBO负责获取当前帧内容,MSAAFBO保存上次最新帧内容,为渲染帧,并输出到桌面镜像mirrorFBO,从而将获取帧刷新和渲染准备分开来;

步骤6、为图形设备设置自定义的缓存交换机制OpenVRSwapCallback,作为图形的刷新回调。实现画面帧与桌面投影显示的比例换算和匹配,其实现原理如图2所示。回调中从MSAAFBO获取最新帧内容,将最新帧进行投影换算,形成与桌面分辨率大小一致的帧内容,输出到桌面镜像mirrorFBO,最终进行渲染,使画面在左右眼输出的同时渲染至桌面投影,其渲染原理如图3所示。

本发明提供了基于场景管理开发库的虚拟现实自适应桌面同步投影方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号