光晕渐变实现方法及装置与流程

文档序号:14445710阅读:238来源:国知局
光晕渐变实现方法及装置与流程

本发明涉及三维渲染技术领域,具体而言,涉及一种光晕渐变实现方法及装置。



背景技术:

在三维场景中,太阳光晕是一种很好的场景效果,光晕的消失和出现均需要进行计算及渲染处理。

在现有技术中,通常通过在cpu(centralprocessingunit,中央处理器)中计算太阳是否在相机视角空间内,然后将透明信息传递到着色器中进行光晕渐变的渲染处理。然而,现有的光晕处理方式只能实现太阳离开相机视角空间或出现在相机视角空间内时,太阳光晕渐隐或渐现的效果。现有技术可实现的光晕效果单一,并且计算渲染完全依赖于cpu,cpu运算负担较重。



技术实现要素:

为了克服现有技术中的上述不足,本发明实施例提供一种光晕渐变实现方法及装置。

本发明实施例提供一种光晕渐变实现方法,所述方法包括:

基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡;

当检测到太阳被遮挡时,根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度;

根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度;

根据第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。

本发明实施例还提供一种光晕渐变实现装置,所述装置包括:

检测模块,用于基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡;

计算处理模块,当检测到太阳被遮挡时,用于根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度;

所述计算处理模块,还用于根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度;

所述计算处理模块,还用于根据所述第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。

相对于现有技术而言,本发明具有以下有益效果:

本发明实施例提供一种光晕渐变实现方法及装置。所述方法包括:基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡。当检测到太阳被遮挡时,根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度。根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度。根据第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。由此,不仅可实现太阳离开相机视角空间或进入相机视角空间时,太阳光晕渐隐或渐现的效果,还可实现当太阳处在相机视角空间内时,太阳被物体遮挡时的光晕渐变效果。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明实施例提供的计算设备的方框示意图。

图2是本发明第一实施例提供的光晕渐变实现方法的步骤流程图之一。

图3是本发明第一实施例提供的图2所示的步骤s120的子步骤流程图。

图4是本发明第一实施例提供的图2所示的步骤s130的子步骤流程图。

图5是本发明第一实施例提供的图2所示的步骤s140的子步骤流程图。

图6是本发明第一实施例提供的图2所示的步骤s150的子步骤流程图。

图7是本发明第一实施例提供的光晕渐变实现方法的步骤流程图之二。

图8为本发明第二实施例提供的光晕渐变实现装置的功能模块图。

图标:100-计算设备;110-存储器;120-处理器;130-网络模块;140-显卡模块;200-光晕渐变实现装置;210-创建模块;220-检测模块;230-计算处理模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

经本申请发明人研究发现,当太阳处在相机视角空间内时,如果有物体遮挡了太阳,此时,同样需要对太阳光晕进行渐变渲染处理。然而,现有的光晕处理方式只能实现太阳离开相机视角空间或进入相机视角空间时,太阳光晕渐隐或渐现的效果,而无法实现太阳被物体遮挡时的光晕渐变效果。

为了解决上述问题,本发明提供一种光晕渐变实现方法及装置。下面通过以下实施例对本发明提供的光晕渐变实现方法及装置进行说明。

在本实施例中,所述光晕渐变实现方法及装置应用于计算设备100。请参照图1,图1是本发明实施例提供的计算设备100的方框示意图。所述计算设备100包括存储器110、光晕渐变实现装置200、处理器120、网络模块130及显卡模块140。

所述存储器110、处理器120、网络模块130相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线或信号线实现电性连接。存储器110中存储有光晕渐变实现装置200,所述光晕渐变实现装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块,所述处理器120通过运行存储在存储器110内的软件程序以及模块,从而执行各种功能应用以及数据处理。

其中,所述存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器120在接收到执行指令后,执行所述程序。进一步地,上述存储器110内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

所述处理器120可以是一种集成电路芯片,具有信号的处理能力。上述的处理器120可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述网络模块130用于通过网络实现计算设备100与其他外部设备之间的通信连接及数据传输。

所述显卡模块140用于对图形数据进行运算处理,以缓解处理器120的运算压力。其中,所述显卡模块140的核心部件为gpu(graphicsprocessingunit,图形处理器),用于将计算设备100所需的图形数据信息进行转换驱动,并控制显示器进行显示。

可以理解,图1所述的结构仅为示意,计算设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例

请参照图2,图2是本发明第一实施例提供的光晕渐变实现方法的步骤流程图之一。所述方法应用于上述计算设备100。下面对光晕渐变实现方法的流程进行详细阐述。所述方法包括:步骤s120、步骤s130、步骤s140及步骤s150。

步骤s120,基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡。

请参照图3,图3是本发明第一实施例提供的图2所示的步骤s120的子步骤流程图。所述步骤s120包括:子步骤s121、子步骤s122及子步骤s123。

子步骤s121,根据所述当前场景深度图获取当前场景中物体与相机之间的当前深度。

在本实施例中,所述当前场景深度图用于对当前场景中物体与相机之间深度关系进行描述,所述计算设备100可根据所述当前场景深度图获取当前场景中每个物体与相机之间的当前深度。其中,所述物体与相机之间深度关系是指物体与相机之间的距离关系。

在本实施例中,在进行三维渲染时,虚拟场景通常是模拟现实世界构建的。在现实世界中,人是通过眼睛观察周围场景的,在三维渲染的虚拟场景中,则是通过虚拟出一个相机来模拟人眼观察周围场景。所述相机就是在虚拟场景中模拟人眼视角观察周围场景的媒介。

子步骤s122,将所述当前深度与太阳深度进行比较。

在本实施例中,所述太阳深度是指所述相机与太阳之间的深度,即,相机与太阳之间的距离。

在本实施例中,所述计算设备100可先确定相机位置及场景中的太阳位置,然后将位于相机位置与太阳位置连线上的物体的当前深度与太阳深度进行比较,以判定太阳是否被物体遮挡。

子步骤s123,在所述当前深度小于太阳深度时,判定相机视角空间内的太阳被遮挡。

在本实施例中,当存在位于相机位置与太阳位置连线上的物体的当前深度小于太阳深度时,表明太阳被该物体遮挡。反之,太阳不被遮挡。

步骤s130,当检测到太阳被遮挡时,根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度。

请参照图4,图4是本发明第一实施例提供的图2所示的步骤s130的子步骤流程图。所述步骤s120包括:子步骤s131、子步骤s132、子步骤s133、子步骤s134及子步骤s135。

子步骤s131,获取上一帧场景的上一帧光晕透明度。

在本实施例中,所述上一帧场景的上一帧光晕透明度(可以记为old_alpha)可记录在上一帧场景对应的纹理贴图中。所述计算设备100的显卡模块140(gpu)可根据上一帧场景对应的纹理贴图获取所述上一帧光晕透明度(old_alpha)。

子步骤s132,计算光晕渐变完成时的目的光晕透明度。

在本实施例中,所述显卡模块140可根据相机转动情况推算光晕渐变完成时的目的光晕透明度(可以记为new_alpha)。如果太阳被完全遮挡,所述目的光晕透明度(new_alpha)为0;如果太阳未被遮挡,所述目的光晕透明度(new_alpha)为1。

子步骤s133,计算上一帧场景与当前帧场景的时间差。

在本实施例中,所述显卡模块140可计算上一帧场景与当前帧场景的时间差(可以记为g_fdeltatime)。

子步骤s134,根据所述上一帧光晕透明度、目的光晕透明度及时间差计算得到当前帧场景的第一光晕透明度。

在本实施例中,所述显卡模块140将所述上一帧光晕透明度(old_alpha)、目的光晕透明度(new_alpha)及时间差(g_fdeltatime)带入到预设计算公式中进行计算,得到当前帧场景的第一光晕透明度(可以记为cur_alpha)。假设透明度可在0.5秒内完成从0到1的渐变。所述预设计算公式如下所示。

cur_alpha=saturate((new_alpha-old_alpha)*g_fdeltatime*2.0f+old_alpha)

在本实施例中,saturate是一种用于给参数做饱和处理的计算公式,当参数的计算结果大于1时,最终取值的结果为1,当参数的计算结果小于0时,最终取值的结果为0,当参数的计算结果在0到1之间时,则保持原来计算的值,由此,可将cur_alpha的值规范到0到1之间。

子步骤s135,将计算得到的所述第一光晕透明度记录到预先创建的纹理贴图中。

在本实施例中,所述显卡模块140将所述第一光晕透明度(cur_alpha)记录到预先创建的当前帧场景对应的纹理贴图中。

在本实施例中,所述显卡模块140可基于所述上一帧光晕透明度、根据相机转动情况推算得到的目的光晕透明度以及上一帧场景与当前帧场景的时间差计算得到当前帧场景的第一光晕透明度。其中,随着上一帧场景的连续变化,所述显卡模块140可计算得到多个连续变化的当前帧场景的第一光晕透明度。在着色器中,对多个连续变化的第一光晕透明度进行渲染,可实现当太阳处在相机视角空间内时,太阳被物体遮挡时的光晕渐变效果。

在本实施例中,由所述显卡模块140执行上述子步骤s131至子步骤s135。可有效减轻处理器120的运算负担,提高计算设备100的计算效率。

步骤s140,根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度。

请参照图5,图5是本发明第一实施例提供的图2所示的步骤s140的子步骤流程图。所述步骤s140包括:子步骤s141及子步骤s142。

步骤s141,根据太阳进入或离开相机视角空间的变化情况计算得到新光晕透明度。

在本实施例中,所述计算设备100的处理器120(cpu)可根据太阳进入或离开相机视角空间的变化情况计算得到新光晕透明度(可以记为newalpha)。如果太阳离开相机视角空间,所述新光晕透明度(newalpha)为0,如果太阳进入相机视角空间,所述新光晕透明度(newalpha)为1。

步骤s142,根据所述新光晕透明度及上一帧光晕透明度计算得到当前帧场景的第二光晕透明度。

在本实施例中,所述处理器120先将所述新光晕透明度(newalpha)与上一帧光晕透明度(old_alpha)进行比较。如果old_alpha等于newalpha,则表明透明度未发生变化,不需要进行光晕渐变渲染。如果old_alpha不等于newalpha,所述处理器120将所述新光晕透明度(newalpha)及上一帧光晕透明度(old_alpha)带入到计算公式中进行计算,得到当前帧场景的第二光晕透明度(可以记为curalpha)。假设透明度可在0.5秒内完成从0到1的渐变。计算所述第二光晕透明度的计算公式如下所示。

curalpha=(newalpha-old_alpha)/0.5*deletatime+old_alpha

其中,deletatime表示上一帧场景与当前帧场景的时间差。

在本实施例中,所述处理器120可基于上一帧光晕透明度、新光晕透明度以及上一帧场景与当前帧场景的时间差计算得到当前帧场景的第二光晕透明度。其中,随着上一帧场景的连续变化,所述处理器120可计算得到多个连续变化的当前帧场景的第二光晕透明度。在着色器中,对多个连续变化的第二光晕透明度进行渲染,可实现太阳离开相机视角空间或进入相机视角空间时,太阳光晕渐隐或渐现的效果。

步骤s150,根据所述第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。

请参照图6,图6是本发明第一实施例提供的图2所示的步骤s150的子步骤流程图。所述步骤s150包括:子步骤s151及子步骤s152。

子步骤s151,对所述当前帧场景的第一光晕透明度及第二光晕透明度进行融合计算得到目标透明度。

在本实施例中,所述处理器120或者显卡模块140可从纹理贴图中获取所述当前帧场景的第一光晕透明度(cur_alpha),并将所述第一光晕透明度(cur_alpha)、第二光晕透明度(curalpha)以及其他相关信息传入到着色器中。在着色器中,可将cur_alpha与curalpha进行融合计算得到最终的目标透明度。其中,cur_alpha与curalpha进行融合计算的方式可以包括,但不限于,将cur_alpha与curalpha相乘。

子步骤s152,根据所述目标透明度进行光晕渐变渲染。

在本实施例中,所述着色器可根据所述目标透明度进行光晕渐变渲染,以实现渐隐或渐现的光晕效果。

在本实施例中,所述目标透明度是对第一光晕透明度及第二光晕透明度进行融合处理得到的,在着色器中,对所述目标透明度进行渲染,得到的光晕渐变效果更加逼真,使用户具有良好的感观体验。

请参照图7,图7是本发明第一实施例提供的光晕渐变实现方法的步骤流程图之二。所述方法还包括:步骤s110。

步骤s110,创建用于记录当前帧场景的第一光晕透明度的纹理贴图。

在本实施例中,所述计算设备100可先创建一个用于记录当前帧场景的第一光晕透明度(cur_alpha)的纹理贴图,以便于在所述计算设备100计算得到所述第一光晕透明度(cur_alpha)后,将所述第一光晕透明度(cur_alpha)存入所述纹理贴图中。

第二实施例

请参照图8,图8为本发明第二实施例提供的光晕渐变实现装置200的功能模块图。所述装置应用于上述的计算设备100。所述装置包括:检测模块220及计算处理模块230。

检测模块220,用于基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡。

在本实施例中,所述检测模块220用于执行图2中的步骤s120,关于所述检测模块220的描述可以参照图2中步骤s120的描述。

计算处理模块230,当检测到太阳被遮挡时,用于根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度。

所述计算处理模块230,还用于根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度。

所述计算处理模块230,还用于根据所述第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。

在本实施例中,所述计算处理模块230用于执行图2中的步骤s130、步骤s140及步骤s150。关于所述计算处理模块230的描述可以参照图2中步骤s130、步骤s140及步骤s150的描述。

请再次参照图8,所述装置还包括:

创建模块210,用于创建用于记录当前帧场景的第一光晕透明度的纹理贴图。

在本实施例中,所述创建模块210用于执行图7中的步骤s110,关于所述创建模块210的描述可以参照图7中步骤s110的描述。

综上所述,本发明实施例提供一种光晕渐变实现方法及装置。所述方法包括:基于用于描述当前场景中物体与相机之间深度关系的当前场景深度图检测相机视角空间内的太阳是否被遮挡。当检测到太阳被遮挡时,根据上一帧场景的上一帧光晕透明度计算得到当前帧场景的第一光晕透明度,并记录所述第一光晕透明度。根据太阳进入或离开相机视角空间的变化情况计算得到当前帧场景的第二光晕透明度。根据第一光晕透明度及第二光晕透明度计算得到目标透明度,并根据所述目标透明度进行光晕渐变渲染。由此,不仅可实现太阳离开相机视角空间或进入相机视角空间时,太阳光晕渐隐或渐现的效果,还可实现当太阳处在相机视角空间内时,太阳被物体遮挡时的光晕渐变效果。

并且,根据融合处理得到的目标透明度进行渲染,得到的光晕渐变效果更加逼真,使用户具有良好的感观体验。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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