图像渲染方法及其装置与流程

文档序号:17931903发布日期:2019-06-15 00:57阅读:206来源:国知局
图像渲染方法及其装置与流程

本发明涉及图像处理技术领域,尤其涉及一种图像渲染方法及其装置。



背景技术:

在vr(virtualreality,虚拟现实)显示技术中,通过不断根据姿态数据刷新左右眼屏幕中显示画面,让用户产生虚拟现实体验感,而且屏幕中显示画面的帧率越高,虚拟现实效果越真实。

相关技术中,利用多线程对左右眼分开渲染或者左右眼半帧处理,但是由于系统和硬件的性能限制,图像渲染的时间过长,导致画面掉帧严重,造成强烈的眩晕感,体验效果极差。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种图像渲染方法,以实现使用上一帧的预测图像和当前帧的渲染图像作为当前帧的显示图像,提高了图像显示帧率。

本发明的第二个目的在于提出一种图像渲染装置。

本发明的第三个目的在于提出一种计算机程序产品。

本发明的第四个目的在于提出一种非临时性计算机可读存储介质。

为达上述目的,本发明第一方面实施例提出了图像渲染方法,包括:第一线程渲染当前帧对应的第一图像;第二线程根据所述当前帧对应的第一图像,生成当前帧对应的第一预测图像,其中,所述第一预测图像和所述第一图像对应相同的显示屏幕;所述第一线程获取上一帧对应的第二预测图像,其中,所述第一图像和所述第二预测图像分别对应不同的显示屏幕;以及所述第一线程将所述第一图像和所述第二预测图像分别在不同的显示屏幕上进行显示。

和现有技术相比,本发明实施例中,第一线程渲染当前帧对应的第一图像,第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像。第一线程获取上一帧对应的第二预测图像,将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。实现了使用上一帧的预测图像和当前帧的渲染图像作为当前帧的显示图像,以提高图像显示帧率的技术效果。

另外,本发明实施例的图像渲染方法,还具有如下附加的技术特征:

可选地,在所述第一线程渲染当前帧对应的第一图像之后,还包括:唤醒所述第二线程;在所述第一线程获取上一帧对应的第二预测图像之前,还包括:休眠所述第二线程。

可选地,所述第二线程根据所述当前帧对应的第一图像,生成当前帧对应的第一预测图像,包括:所述第二线程获取所述第一图像对应的第一姿态数据,角速度数据和帧间隔时长,并预测下一帧对应的所述第二姿态数据,其中,所述第一姿态数据和所述第二姿态数据都是姿态四元数;所述第二线程根据所述第二姿态数据和所述第一图像,生成当前帧对应的第一预测图像,其中,所述第一预测图像和所述第一图像对应相同的显示屏幕。

可选地,所述第一图像和所述第一预测图像分别存储于不同的缓存区。

本发明第二方面实施例提出了一种图像渲染装置,包括:渲染模块,用于控制第一线程渲染当前帧对应的第一图像;生成模块,用于控制第二线程根据所述当前帧对应的第一图像,生成当前帧对应的第一预测图像,其中,所述第一预测图像和所述第一图像对应相同的显示屏幕;获取模块,用于控制所述第一线程获取上一帧对应的第二预测图像,其中,所述第一图像和所述第二预测图像分别对应不同的显示屏幕;以及显示模块,用于控制所述第一线程将所述第一图像和所述第二预测图像分别在不同的显示屏幕上进行显示。

另外,本发明实施例的图像渲染装置,还具有如下附加的技术特征:

可选地,所述装置还包括:唤醒模块,用于唤醒所述第二线程;休眠模块,用于休眠所述第二线程。

可选地,所述生成模块,包括:第一获取子模块,用于控制所述第二线程获取所述第一图像对应的第一姿态数据,角速度数据和帧间隔时长,并预测下一帧对应的所述第二姿态数据,其中,所述第一姿态数据为姿态四元数;生成子模块,用于控制所述第二线程根据所述第二姿态数据和所述第一图像,生成当前帧对应的第一预测图像,其中,所述第一预测图像和所述第一图像对应相同的显示屏幕。

可选地,所述第一图像和所述第一预测图像分别存储于不同的缓存区。

本发明第三方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时实现如前述方法实施例所述的图像渲染方法。

本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述方法实施例所述的图像渲染方法。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

图1为本发明实施例所提供的使用传统方案进行图像渲染的测试结果示意图;

图2为本发明实施例所提供的一种图像渲染方法的流程示意图;

图3为本发明实施例所提供的使用本发明方案进行图像渲染的测试结果示意图;

图4为本发明实施例所提供的图像渲染方法中第一线程和第二线程之间的关系示意图;

图5为本发明实施例所提供的图像渲染方法的一个示例的流程示意图;以及

图6为本发明实施例所提出的一种图像渲染装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的图像渲染方法及其装置。

基于上述现有技术的描述可以知道,相关技术中,利用多线程对左右眼分开渲染或者左右眼半帧处理,但是由于系统和硬件的性能限制,图像渲染的时间过长,导致画面掉帧严重,造成强烈的眩晕感,体验效果极差。

如图1所示,申请人对传统的vr渲染系统进行了测试,左右眼半帧处理时,由于手机芯片性能限制,前半帧和后半帧渲染时间超过了帧同步整帧时间,会出现一帧以上的延迟,利用多线程对左右眼分开渲染时,会导致线程抢占更严重,单个渲染时间加长,渲染时间达到了13.3ms,加上硬件扫屏的时间,总延迟会达到25ms以上,影响vr体验。

需要解释的是,多线程是在同一进程中多个线程抢占一个时间轮转片,而不能达到真正的分别处理,而且会将每个单独处理的时间拉长一些,很依赖手机处理器的性能,而且由于vr中需要至少多开一个桌面,会抢占手机处理器的线程,这样多核的手机处理器的性能仍然不够用。因此,多线程技术仍然无法解决掉帧的问题。

针对这一问题,本发明实施例提供了一种图像渲染方法,第一线程渲染当前帧对应的第一图像,第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像。第一线程获取上一帧对应的第二预测图像,将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。实现了使用上一帧的预测图像和当前帧的渲染图像作为当前帧的显示图像,以提高图像显示帧率的技术效果。

本发明实施例所提供的一种图像渲染方法,由第一线程对图像进行渲染和显示,第二线程对图像进行预测,以节省第二线程运行的时长。

本发明实施例通过自定义渲染方式(即自研vrsdk)来实现本发明实施例的图像渲染方法,具体是利用图形渲染api(如opengles)接口与本地窗口连接,自定义结构体,结构体中包括:渲染的图像、左右眼标志位、用户信息,其中,左右眼标志位用于区别左眼和右眼数据,用户信息包括用户的瞳距、眼高等相关信息,用于处理左右眼视觉上的差异。

图2为本发明实施例所提供的一种图像渲染方法的流程示意图。如图2所示,该方法包括以下步骤:

s101,第一线程渲染当前帧对应的第一图像。

需要说明的是,本发明实施例所提供的图像渲染方法由硬件的帧同步信号触发一帧的开始。

可以理解,硬件的帧同步信号可以动态调整时间,利用框架层开发,在硬件抽象层中增加硬件帧同步设置接口来实现。

在接收到硬件的帧同步信号之后,第一线程渲染当前帧对应的第一图像。

需要特别说明的是,由于vr系统需要给左右眼分别提供不同的图像,在本发明实施例中,第一图像交替为左右眼对应的图像,比如:第一帧对应第一图像为左眼对应的图像,那么第二帧对应的第一图像则变为右眼对应的图像。

可以理解,在本发明实施例中,第一线程作为主要线程,在第一线程渲染当前帧对应的第一图像之后,由第一线程唤醒第二线程。

第二线程与第一线程的运行同步或者异步,本发明实施例在此不做限制。

s102,第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像。

其中,第一预测图像和第一图像对应相同的显示屏幕。

可以理解,第一预测图像是由第一图像经过预测处理之后生成的。

vr系统的相同的显示屏幕即对应着同一只眼睛,不同的显示屏幕对应着不同的眼睛。

具体处理步骤如下:

s11,第二线程获取第一图像对应的第一姿态数据,角速度数据和帧间隔时长,并预测下一帧对应的所述第二姿态数据。

其中,第一姿态数据和第二姿态数据都是姿态四元数。

姿态四元数是一种选址表示方法,包含x,y,z,w四个分量,用于代表头部的姿态。和欧拉角相比,避免了万向节锁现象。

获取第一姿态数据的具体方式是,通过获取当前姿态相关的传感器裸数据,例如陀螺仪、加速度、地磁、角速度等关于姿态的传感器数据。对传感器裸数据进行融合,得到姿态四元数。

预测下一帧对应的第二姿态数据时,通过第一姿态数据和角速度数据,确定用户姿态变化的趋势,根据帧间隔时长,确定下一帧对应的第二姿态数据。

s12,第二线程根据第二姿态数据和第一图像,生成当前帧对应的第一预测图像。

其中,第一预测图像和第一图像对应相同的显示屏幕。

应当理解,在相邻的两帧内,用户姿态数据的变化不大,因此第一图像和第一预测图像之间的差别也不大。

具体可以将第一图像通过顶点着色器处理,以生成第一预测图像。

需要特别说明的是,正常的图像渲染过程,由cpu读取模型或者要渲染的图片,由gpu利用模型、视觉、透视矩阵进行处理,渲染出当前视觉上看到的图像,显示在屏幕上。

而本发明实施例所使用的预测方法相比于正常的图像渲染过程,可以节省一半时间。

可以理解,如果左右眼对应的图像都采用正常的图像渲染方式,则每帧至少要进行两次cpu-gpu的处理过程,而本发明实施例仅对第一图像进行渲染,每帧最多只需要进行一次cpu-gpu的处理过程,节省了时间。

与传统vr系统不同的是,由于本发明实施例中同时存在第一图像和第一预测图像,因此需要使用某种存储结构进行管理,保证第一图像和第一预测图像分别存储于不同的缓存区。

s103,第一线程获取上一帧对应的第二预测图像。

其中,第一图像和第二预测图像分别对应不同的显示屏幕。

可以理解,在整个图像渲染过程中,不断地收到硬件的帧同步信号,不断地开始下一帧。因此,在上一帧时,第一线程渲染上一帧对应的第二图像,第二线程根据上一帧对应的第二图像,生成上一帧对应的第二预测图像,并将第二预测图像进行了存储。

需要说明的是,为了避免线程之间抢占时间轮转片,在第一线程获取上一帧对应的第二预测图像之前,还包括休眠第二线程。

s104,第一线程将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。

由于本发明实施例没有在一帧中同时对左右两眼对应的图像进行渲染,因此只需将第一图像和第二预测图像通过交换缓冲区提交到帧缓冲区中,再由帧缓冲区传递给不同的显示屏幕。

如图3所示,申请人对本发明实施例所提供的图像渲染方法进行了测试。在对单眼图像进行渲染时,由于避免了多线程对时间轮转片的抢占,时间也要少于现有技术,而对单眼图像进行预测的时间则明显只需要渲染时间的一半,使得单帧渲染的时间减少由16.3ms至8.3ms,帧率由60hz提升至120hz。

综上所述,本发明实施例所提供的图像渲染方法,第一线程渲染当前帧对应的第一图像。第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像,其中,第一预测图像和第一图像对应相同的显示屏幕。第一线程获取上一帧对应的第二预测图像,其中,第一图像和第二预测图像分别对应不同的显示屏幕。第一线程将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。由此,实现了使用上一帧的预测图像和当前帧的渲染图像作为当前帧的显示图像,以提高图像显示帧率的技术效果。

为了更加清楚地说明本发明实施例所提供的图像渲染方法中第一线程和第二线程之间的关系,下面进行举例说明。

如图4所示,在整个图像渲染过程中,第一线程负责渲染一只眼对应的图像,以及获取另一只眼对应的预测图像,并控制第二线程的唤醒和休眠。

第二线程负责图像的复用修正,即通过复用缓冲区中的第一图像,使用预测的姿态数据对第一图像进行预测(修正),将修正后的第一预测图像存储到新的缓冲区中。

为了更加清楚地说明本发明实施例所提供的图像渲染方法的整体流程,下面进行举例说明。

如图5所示,首先在vr系统启动后进行图像模型的加载,读取传感器裸数据,由裸数据预测算法模块根据获取的传感器裸数据,预测姿态数据。由多层复用渲染模块根据预测的姿态数据生成渲染图像和预测图像,并将生成的渲染图像和预测图像传输给交换缓存区。硬件处理模块将渲染图像和预测图像显示在屏幕上,并将渲染图像进行保存,用来下一帧生成预测图像。

为了实现上述实施例,本发明实施例还提出了一种图像渲染装置。图6为本发明实施例所提出的一种图像渲染装置的结构示意图。如图6所示,该装置包括:渲染模块210,生成模块220,获取模块230,显示模块240。

渲染模块210,用于控制第一线程渲染当前帧对应的第一图像。

生成模块220,用于控制第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像,其中,第一预测图像和第一图像对应相同的显示屏幕。

获取模块230,用于控制第一线程获取上一帧对应的第二预测图像,其中,第一图像和第二预测图像分别对应不同的显示屏幕。

显示模块240,用于控制第一线程将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。

进一步地,为了避免线程之间抢占时间轮转片,一种可能的实现方式是,该装置还包括:唤醒模块250,用于唤醒第二线程。休眠模块260,用于休眠第二线程。

进一步地,为了生成当前帧对应的第一预测图像,一种可能的实现方式是,生成模块220,包括:第一获取子模块221,用于控制第二线程获取第一图像对应的第一姿态数据,角速度数据和帧间隔时长,并预测下一帧对应的第二姿态数据,其中,第一姿态数据为姿态四元数。生成子模块222,用于控制第二线程根据第二姿态数据和第一图像,生成当前帧对应的第一预测图像,其中,第一预测图像和第一图像对应相同的显示屏幕。

进一步地,为了区别第一图像和第一预测图像,一种可能的实现方式是,第一图像和第一预测图像分别存储于不同的缓存区。

需要说明的是,前述对图像渲染方法实施例的解释说明也适用于该实施例的图像渲染装置,此处不再赘述。

综上所述,本发明实施例所提供的图像渲染装置,第一线程渲染当前帧对应的第一图像。第二线程根据当前帧对应的第一图像,生成当前帧对应的第一预测图像,其中,第一预测图像和第一图像对应相同的显示屏幕。第一线程获取上一帧对应的第二预测图像,其中,第一图像和第二预测图像分别对应不同的显示屏幕。第一线程将第一图像和第二预测图像分别在不同的显示屏幕上进行显示。由此,实现了使用上一帧的预测图像和当前帧的渲染图像作为当前帧的显示图像,以提高图像显示帧率的技术效果。

为了实现上述实施例,本发明实施例还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时实现如前述方法实施例所述的图像渲染方法。

为了实现上述实施例,实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述方法实施例所述的图像渲染方法。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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