用于虚拟现实的图像渲染方法、装置、设备及VR设备与流程

文档序号:25025750发布日期:2021-05-11 16:52阅读:356来源:国知局
用于虚拟现实的图像渲染方法、装置、设备及VR设备与流程

本发明涉及图像处理技术领域,特别涉及一种用于虚拟现实的图像渲染方法、一种用于虚拟现实的图像渲染装置、一种用于虚拟现实的图像渲染设备以及一种vr设备。



背景技术:

虚拟现实(缩写为vr)技术,是一项计算机模拟虚拟环境的实用技术。其中,vr眼镜是一种头戴式虚拟现实设备,其工作要求显示设备清晰度高、帧率高和极低的动显延迟(人体动作姿态变化到引起画面变化的时间延迟)。所以,解决上述问题的渲染技术是vr技术的核心。目前主流移动端gpu的渲染能力难以满足上述要求,市面上已有一些异步扭曲等技术来优化上述问题,但大多数的渲染帧率都难以控制。

opengl:(opengraphicslibrary)开放图形库,是用于渲染2d、3d矢量图形的跨语言、跨平台的应用程序编程接口(api)。



技术实现要素:

有鉴于此,本发明旨在提出用于虚拟现实的图像渲染方法、装置、设备及vr设备,能够在清晰度不变的情况下,稳定提升vr设备渲染画面的帧率并有效减小动显延迟。

为达到上述目的,本发明的第一方面提供了一种用于虚拟现实的图像渲染方法,基于开放图形库,所述图像渲染方法包括:响应于垂直同步信号,反畸变线程获取经3d渲染线程渲染后的图像以及所述3d渲染线程的第一姿态变换矩阵;根据获取的虚拟现实设备的姿态参数对所述第一姿态变换矩阵进行变化后得到第三姿态变换矩阵;将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示。

优选的,所述反畸变线程通过所述3d渲染线程共享的所述渲染后的图像的纹理id,实现对所述渲染后的图像的获取。

优选的,所述根据获取的虚拟现实设备的状态参数对所述第一姿态变换矩阵进行变化后得到第三姿态变换矩阵,包括:获取所述虚拟现实设备的姿态参数;基于所述姿态参数设置第二姿态变换矩阵;根据所述第一姿态变换矩阵和所述第二姿态变换矩阵计算得到所述第三姿态变换矩阵。

优选的,所述图像渲染方法还包括:设置渲染缓冲区,所述渲染缓冲区用于缓存所述经3d渲染线程渲染后的图像。

优选的,所述设置渲染缓冲区,包括:设置所述渲染缓冲区的以下参数:颜色缓冲区位数、深度缓冲区位数、模板缓冲区缓冲区位数、多重采样缓冲区位数和每个像素点的采样个数。

优选的,将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示,包括:将所述第三姿态变换矩阵分解为多个子变换矩阵;所述多个子变换矩阵分别用于对所述渲染后的图像进行对应的变换操作;所述渲染后的图像经所述多个子变换矩阵反畸变处理后,将处理结果输出至屏幕进行显示。

优选的,所述多个子变换矩阵包括:缩放变换矩阵、平移变换矩阵、旋转变换矩阵和姿态矩阵。

在本发明的第二方面,还提供了一种用于虚拟现实的图像渲染装置,所述图像渲染装置包括:获取模块,用于响应于垂直同步信号,反畸变线程获取经3d渲染线程渲染后的图像以及所述3d渲染线程的第一姿态变换矩阵;矩阵姿态确定模块,用于根据获取的虚拟现实设备的参数状态对所述第一姿态变换矩阵进行变化后得到第三姿态变换矩阵;以及变换渲染模块,用于将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示。

在本发明的第三方面,还提供了一种用于虚拟现实的图像渲染设备,所述图像渲染设备包括:至少一个处理器;存储器,与所述至少一个处理器连接;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现前述的用于虚拟现实的图像渲染方法。

在本发明的第四方面,还提供了一种vr设备,所述vr设备包括显示装置,以及前述的图像渲染设备。

本发明实施方式提供的技术方案,具有以下有益效果:本发明提供的实施方式通过将扭曲变换矩阵实时用到反畸变线程上,显著降低图像的渲染耗时,从而提升显示帧率,保证了画面流畅度。

本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施方式及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明一实施方式中的用于虚拟现实的图像渲染方法的步骤示意图;

图2为本发明一实施方式中的用于虚拟现实的图像渲染方法的实施步骤图;

图3为本发明一实施方式中的用于虚拟现实的图像渲染装置的模块结构图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

图1为本发明一实施方式中的用于虚拟现实的图像渲染方法的步骤示意图,如图1所示,一种用于虚拟现实的图像渲染方法,基于开放图形库,该图像渲染方法包括:

s01、响应于垂直同步信号,反畸变线程获取经3d渲染线程渲染后的图像以及所述3d渲染线程的第一姿态变换矩阵;

3d渲染线程为opengl的3d主渲染线程,由app触发画面刷新时进入3d渲染流程。3d渲染流程包括四元数q0相关的姿态参数的获取、渲染双眼纹理到渲染缓冲区、设置时间姿态q0(第一姿态变换矩阵)、切换反畸变线程纹理id、切换自身下一帧渲染纹理id等功能。

反畸变线程为opengl的2d渲染线程,为vr眼镜正常显示需要对画面进行反畸变处理的必要线程。该线程可以设置为由3d主渲染线程启动,反畸变线程的渲染流程包括等待垂直同步信号、计算扭曲变换矩阵、执行反畸变和时间扭曲,提交画面到屏幕等功能。

s02、根据获取的虚拟现实设备的参数状态对所述第一姿态变换矩阵进行变化后得到第三姿态变换矩阵;

反畸变线程由应用时创建并指定渲染缓冲区类型,初始化时设置共享3d渲染线程的上下文及纹理id。自身创建离屏渲染缓冲区并由来自显示屏的vsync触发渲染动作,开始渲染时,获取当前姿态四元数q1。反畸变线程通过q0和q1计算第三姿态变换矩阵(即扭曲变换矩阵),该第三姿态变换矩阵用于通过执行反畸变时达到实时时间扭曲的效果。

s03、将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示。反畸变线程将四元数q0与q1分别转换成2个4x4变换矩阵,由这2个矩阵计算出前述的第三姿态变换矩阵,左右眼(显示屏)共用同一个第三姿态变换矩阵进行反畸变渲染,最后把渲染画面提交到屏幕显示。

通过以上实施方式,通过反畸变线程执行2d的渲染操,运算量仅为3d渲染的十分之一左右,所以将扭曲变换矩阵实时用到反畸变线程上,能把原来3d渲染的耗时所需的40~50毫秒降低到2d渲染耗时所需的5~6毫秒。由于反畸变线程渲染信号直接来自vsync(垂直同步信号),而且2d渲染时间远远小于屏幕刷新间隔(60hz时屏幕刷新间隔为16.7毫秒),所以送显的频率一直能和屏幕硬件刷新率保持一致,从而保证了画面流畅度。

在本发明提供的一种实施方式中,所述反畸变线程通过所述3d渲染线程共享的所述渲染后的图像的纹理id,实现对所述渲染后的图像的获取。3d渲染线程执行初始化后,需要检测反畸变线程实例运行状态,已有实例已运行则不创建,否则启动反畸变线程,并通过id设置纹理共享。反畸变线程在启动后执行初始化,包括设置反畸变线程运行环境,检测并获取3d渲染线程opengl渲染上下文,获取3d渲染线程纹理共享的id。

在本发明提供的一种实施方式中,获取所述虚拟现实设备的检测设备及传感器参数状态;基于所述传感器参数设置第二姿态变换矩阵;根据所述第一姿态变换矩阵和所述第二姿态变换矩阵计算得到所述第三姿态变换矩阵。反畸变线程检测设备及传感器参数状态。绑定渲染缓冲区,将启用多重采样渲染的纹理图像附加到帧缓冲对象;反畸变线程获取并设置当前时刻4x4姿态变换矩阵q1;反畸变线程将四元数q0与q1分别转换成2个4x4变换矩阵,由这两个矩阵计算实时扭曲变换矩阵。

所述图像渲染方法还包括:设置渲染缓冲区,所述渲染缓冲区用于缓存所述经3d渲染线程渲染后的图像,其具体设置如下:配置opengl颜色缓冲区red、green、blue位数为8,深度缓冲区位数为8,模板缓冲区缓冲区位数为8,多重采样缓冲区位数设为1,每个像素点的采样个数设为4。以上设置的优点在于,颜色缓冲区red、green、blue位数为8,能够显示24位显示深度;模板缓冲区缓冲区位数为8,能够不丢失3d景深信息;模板缓冲区缓冲区位数为8,能够不丢失颜色信息;多重采样缓冲区位数设为1,能够开启多重采样;每个像素点的采样个数设为4,能够得到4倍多重采样抗锯齿效果。

将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示,包括:将所述第三姿态变换矩阵分解为多个子变换矩阵;所述多个子变换矩阵分别用于对所述渲染后的图像进行对应的变换操作;所述渲染后的图像经所述多个子变换矩阵反畸变处理后,将处理结果输出至屏幕进行显示。具体如下:反畸变线程将四元数q0与q1分别转换成2个4x4变换矩阵,由这2个矩阵计算实时扭曲变换矩阵,左右眼(显示屏)共用同一个扭曲变换矩阵进行反畸变渲染,最后把渲染画面提交到屏幕显示。扭曲变换矩阵计算原理如下:若q0用过矩阵tw变换成q1;则有q0*tw=q1,则tw=q0-1*q1。

计算方法为:tw1*tw*tw2+tw3*tw*tw4+tw5*tw。其中tw1-tw5为所述子变换矩阵。进一步的,tw1:z轴反向深度值变换矩阵;tw2:xy轴缩放值变换矩阵,每只眼0.5;tw3:xyz方向平移值变换矩阵;tw4:旋转与平移的合成变换矩阵;tw5:原始2d姿态参数变换矩阵。通过以上子变换矩阵,实现了对渲染后的图像的扭曲变换。其中,tw1至tw5的矩阵结构如下:

图2为本发明一实施方式中的用于虚拟现实的图像渲染方法的实施步骤图,如图2所示。为了本领域技术人员理解及实施,通过该实施方式对实施步骤说明如下:

(1)3d渲染线程执行初始化。检测反畸变线程实例运行状态,已有实例已运行则不创建,否则启动反畸变线程,并通过id设置纹理共享。

(2)反畸变线程执行初始化。设置反畸变线程运行环境,检测并获取3d渲染线程opengl渲染上下文,获取3d渲染线程纹理共享的id。

(3)反畸变线程设置渲染优先级为高优先级,保证gpu第一时间响应此线程。配置opengl颜色缓冲区red、green、blue位数为8,深度缓冲区位数为8,模板缓冲区缓冲区位数为8,多重采样缓冲区位数设为1,每个像素点的采样个数设为4。以上设置的优点在于,颜色缓冲区red、green、blue位数为8,能够显示24位显示深度;模板缓冲区缓冲区位数为8,能够不丢失3d景深信息;模板缓冲区缓冲区位数为8,能够不丢失颜色信息;多重采样缓冲区位数设为1,能够开启多重采样;每个像素点的采样个数设为4,能够得到4倍多重采样抗锯齿效果。

(4)3d渲染线程获取并设置当前时刻4x4姿态变换矩阵q0,然后根据当前姿态渲染双眼3d场景。改变下一帧渲染目标纹理id。此时刚渲染完毕的纹理已给反畸变线程使用,3d渲染线程则在下一帧渲染到纹理队列的下一个纹理上。

(5)反畸变线程等待vsync信号,并通过纹理id获取当前渲染屏幕画面。

(6)反畸变线程检测设备及传感器参数状态。绑定渲染缓冲区,将启用多重采样渲染的纹理图像附加到帧缓冲对象。

(7)反畸变线程获取并设置当前时刻4x4姿态变换矩阵q1。

(8)反畸变线程将四元数q0与q1分别转换成2个4x4变换矩阵,由这2个矩阵计算实时扭曲变换矩阵,左右眼(显示屏)共用同一个扭曲变换矩阵进行反畸变渲染,最后把渲染画面提交到屏幕显示。扭曲变换矩阵计算原理如前文所述,此处不再重复。

图3为本发明一实施方式中的用于虚拟现实的图像渲染装置的模块结构图,如图3所示。在该实施方式中,还提供了一种用于虚拟现实的图像渲染装置,所述图像渲染装置包括:获取模块,用于响应于垂直同步信号,反畸变线程获取经3d渲染线程渲染后的图像以及所述3d渲染线程的第一姿态变换矩阵;矩阵姿态确定模块,用于根据获取的虚拟现实设备的参数状态对所述第一姿态变换矩阵进行变化后得到第三姿态变换矩阵;以及变换渲染模块,用于将所述渲染后的图像经所述第三姿态变换矩阵反畸变处理后输出显示。

上述的用于虚拟现实的图像渲染装置中的各个功能模块的具体限定可以参见上文中对于用于虚拟现实的图像渲染方法的限定,在此不再赘述。上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在本发明提供的一种实施方式中,还提供了一种用于虚拟现实的图像渲染设备,所述图像渲染设备包括:至少一个处理器;存储器,与所述至少一个处理器连接;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现前述的用于虚拟现实的图像渲染方法。此处的控制模块或处理器具有数值计算和逻辑运算的功能,其至少具有数据处理能力的中央处理器cpu、随机存储器ram、只读存储器rom、多种i/o口和中断系统等。本实施方式中的处理器和存储器也可以是现有的虚拟现实设备中的处理器和存储器,其实现的用于虚拟现实的图像渲染功能为该虚拟现实设备所能的功能之一。该图像渲染设备的具体形式为依赖于现有虚拟现实设备中控制器的硬件运行环境中的一段软件代码。此处控制模块或控制设备可以例如为单片机、芯片、plc或处理器等常用硬件。

在本发明提供的一种实施方式中,还提供了一种vr设备,所述vr设备包括显示装置,以及前述的图像渲染设备。在vr设备中采用前述的图像渲染设备,用以执行前述的用于虚拟现实的图像渲染方法,能够显著减少渲染时间,使送显的频率一直能和屏幕硬件刷新率保持一致,保证了画面流畅度。

本发明的实施方式提供的用于虚拟现实的图像渲染方法、装置、设备及vr设备,通过对开放图形库中的3d渲染线程和反畸变线程进行分工定义,从而降低了渲染耗时,实现了提升显示帧率的技术效果。

以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,本发明实施例的不同实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1