一种镜头光晕的生成方法和装置的制造方法

文档序号:10613731阅读:317来源:国知局
一种镜头光晕的生成方法和装置的制造方法
【专利摘要】本发明公开了一种镜头光晕的生成方法和装置,所述方法包括:在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性;根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。采用本发明可简单便捷地实现三维场景中实时动态地生成镜头光晕,计算量较小,适用于对实时性要求较高的场景。
【专利说明】
一种镜头光晕的生成方法和装置
技术领域
[0001]本发明涉及计算机图形领域,尤其涉及一种镜头光晕的生成方法和装置。
【背景技术】
[0002]镜头光晕是由入射镜头的光线和镜片结构之间的相互作用形成的唯美眩光,由于其特别的视觉效果,在摄影、影视作品、游戏、或其他计算机动画中广泛地使用。由于作品拍摄期间的光线以及环境所限,在拍摄时往往难以捕捉到合适的镜头光晕,现有的观众所观看到影片和图片中的镜头光晕通常通过后期的特效制作添加,主要基于图像处理算法,通过分析图像中的亮暗区域来渲染光斑。而在部分三维产品效果图中,为实现真实细腻的光晕效果,则通常通过光线跟踪等技术构造复杂的光晕。

【发明内容】

[0003]在游戏或者其他计算机动画等三维场景中,镜头光晕是烘托晴天天气一个有效手段。然而,由于游戏和动画的画面通常通过计算机实时生成,若采用前述摄影以及影视作品中的后期特效制作方法,显然难以满足实时性要求。而通过光线追踪等技术进行物理渲染虽然可得到复杂多变的光晕效果,但由于镜头光晕是镜头与光线的复杂物理作用产生的,其计算量巨大,现有的设备难以实时动态生成。
[0004]本发明实施例的目的在于提供一种镜头光晕的生成方法和装置,简单便捷地实现三维场景中镜头光晕效果的实时生成。
[0005]为实现上述目的,本发明实施例提供了一种镜头光晕的生成方法,包括:
[0006]在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性;
[0007]根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。
[0008]本发明提供的镜头光晕的生成方法通过在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑,并根据所述光源的位置,实时获取所述光斑在投影空间的属性,根据所述光斑的属性,在投影空间的相应位置上对所述光斑进行绘制,计算量较少,可实时高效地在预设的比例位置上生成跟随光源位置动态变化的镜头光晕。
[0009]其中,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。
[0010]所述在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性,包括:[0011 ]获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性;
[0012]计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标;
[0013]获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度;
[0014]获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。
[0015]优选地,所述光斑面片的三个颜色通道在所述光源和所述镜头中心的连线方向上错开,错开的距离与所述光斑面片到所述光源的距离成正相关。
[0016]优选地,所述光斑面片平行于世界坐标的其中一个坐标平面。
[0017]所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制,包括:
[0018]通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标;
[0019]通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。
[0020]优选地,在所述通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标之后,还包括:
[0021 ]将所述光斑面片的第三维度坐标设置为最靠近镜头的值。
[0022]进一步地,所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制,还包括:
[0023]将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器中,以将所有光斑面片合并到一个批次中进行绘制。
[0024]优选地,所述将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到所述着色器中,以将所有光斑面片合并到一个批次中进行绘制,包括:
[0025]将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引;
[0026]将所有光斑面片所用到的颜色数据作为规格数据传递给所述着色器;
[0027]将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中;
[0028]通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。
[0029]本发明提供的镜头光晕的生成方法将数据打包存放在光斑面片的多余维度中,作为光斑面片的第三维度信息输入到着色器中,使得光斑面片可通过常规的方法合并到一个批次中进行绘制,大大减少了面片绘制所带来的性能开销,提高镜头光晕生成的实时性。
[0030]进一步地,在所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制之后,还包括:
[0031]获取背景像素和光斑像素的颜色值乘积,将所述颜色值乘积与所述背景像素进行混合,获得一次混合结果;
[0032]将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果;
[0033]将所述二次混合结果输出到屏幕进行显示。
[0034]本发明提供的镜头光晕的生成方法还通过两种不同的混合模式,对光斑面片进行两次混合,有助于增强镜头光晕的饱和度,防止镜头光晕被明亮的背景遮盖。
[0035]相应地,本发明实施例提供了一种镜头光晕的生成装置,包括:
[0036]建模模块,用于在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性;
[0037]绘制模块,用于根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。
[0038]其中,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。
[0039]优选地,所述建模模块包括:
[0040]可见性判断单元,用于获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性;
[0041]位置计算单元,用于计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标;
[0042]强度计算单元,用于获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度;
[0043]旋转计算单元,用于获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。
[0044]优选地,所述光斑面片的三个颜色通道在所述光源和所述镜头中心的连线方向上错开,错开的距离与所述光斑面片到所述光源的距离成正相关。
[0045]优选地,所述光斑面片平行于世界坐标的其中一个坐标平面;所述绘制模块包括:
[0046]顶点处理单元,用于通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标;
[0047]像素处理单元,用于通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。
[0048]此外,所述顶点处理单元还用于将所述光斑面片的第三维度坐标设置为最靠近镜头的值。
[0049]进一步地,所述绘制模块,还包括:
[0050]批次合并单元,用于将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器中,以将所有光斑面片合并到一个批次中进行绘制。[0051 ]优选地,所述批次合并单元包括:
[0052]纹理合并子单元,用于将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引;
[0053]颜色传递子单元,用于将所有光斑面片所用到的颜色数据作为规格数据传递给所述着色器;
[0054]数据打包子单元,用于将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中;和,
[0055]批次合并子单元,用于通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。
[0056]优选地,所述装置还包括:
[0057]—次混合模块,用于获取背景像素和光斑像素的颜色值乘积,将所述颜色值乘积与所述背景像素进行混合,获得一次混合结果;
[0058]二次混合模块,用于将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果;
[0059]结果显示模块,用于将所述二次混合结果输出到屏幕进行显示。
【附图说明】
[0060]图1是本发明提供的镜头光晕的生成方法的一个实施例的方法流程图;
[0061]图2是如图1所示实施例提供的步骤Sll的方法流程图;
[0062]图3是如图2所示实施方式提供的光斑位置以及消隐示意图;
[0063]图4是如图2所示实施方式提供的光斑强度曲线;
[0064]图5是如图1所示实施例提供的步骤S12的方法流程图;
[0065]图6是如图5所示实施方式提供的光斑面片的空间位置示意图;
[0066]图7是如图5所示实施方式提供的步骤S123的方法流程图;
[0067]图8是如图7所示实施方式提供的合并后的纹理示意图;
[0068]图9是本发明提供的镜头光晕的生成方法的另一个实施例的方法流程图;
[0069]图10是本发明提供的镜头光晕的生成装置的一个实施例的装置示意图;
[0070]图11是本发明提供的镜头光晕的生成装置的另一个实施例的装置示意图。
【具体实施方式】
[0071]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0072]参见图1,是本发明提供的镜头光晕的生成方法的一个实施例的方法流程图。
[0073]所述镜头光晕的生成方法,包括:
[0074]SI I,在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性。
[0075]S12,根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。
[0076]本发明提供的镜头光晕的生成方法,采用简化的光斑模型计算光斑的属性,计算量较少,可实时高效地在预设的比例位置上生成跟随光源位置动态变化的镜头光晕,可应用于有实时要求但不苛求物理真实性的场景中。
[0077]其中,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。
[0078]如图2所示,在具体实施当中,所述步骤Sll包括:
[0079]Slll,获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性。
[0080]所述光源可以为场景中虚拟的太阳或者其他发光体,本文实施例中主要以太阳为例。光斑的可见性跟光源和镜头的位置关系有关,当光源位于镜头后方时,光斑不可见,即无需渲染镜头光晕。反之,当光源位于镜头前方时,则应当计算光斑的其他属性,以对其进行绘制渲染。
[0081]S112,计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标。
[0082]在一个优选实施方式中,光源在投影空间的投影坐标可在OpenGL中通过以下方式计算:sun_pos*model_view_matrix*pro ject1n_matrix(太阳局部坐标 * 模型视图矩阵 * 投影矩阵)。
[0083]每个光斑固定在光源投影和镜头中心的连线的一个比例位置上,因而光斑将跟随太阳移动,当太阳离开屏幕中心时,光斑也会离开屏幕中心。反之,光斑向屏幕中心聚拢。
[0084]S113,获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度。
[0085]如图3和图4所示,Ql为应用程序窗口,SI为光源,O为镜头中心,BI为光斑面片,J1、J2为预先设定的消隐边界,所述消隐边界为光斑强度发生变化的边界,即当光斑落于消隐边界Jl和消隐边界J2所围成的圆环之外时光斑强度逐渐减弱。
[0086]具体地,为了模拟太阳正对镜头中心时,入射光线垂直入射镜头,光晕减弱的效果,当太阳落于消隐边界Jl之内的时候,随着太阳靠近镜头中心,所有光斑的强度线性减弱。同理,为了模拟太阳离开屏幕时,光线入射角增大,光晕减弱的效果,当太阳落于消隐边界J2之外的时候,随着太阳靠近远离镜头中心,所有光斑的强度线性减弱。为了进一步提高效率,当太阳落于特别靠外的地方时,不渲染光晕。
[0087]即如图4所示,当所述光源与镜头中心的距离小于所述消隐边界Jl半径所对应的第一阈值时,所有光斑面片的强度随光源靠近镜头中心线性减弱。当所述光源与镜头中心的距离大于所述消隐边界J2半径所对应的第二阈值时,所有光斑面片的强度随光源远离镜头中心线性减弱。当所述光源与镜头中心的距离处于第一阈值和第二阈值之间时,保持所述光斑面片的强度。
[0088]S114,获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。
[0089]每个光斑面片会根据太阳的角度进行旋转,以此模拟光源和镜头之间相对关系的变化所产生的效果。
[0090]此外,所述光斑面片的缩放比例的大小与所述光斑面片到镜头中心的距离成负相关,即越靠近镜头中心光斑越大,并可根据光斑成因的不同进行不同的调整。所述光斑面片的颜色可根据用户需要进行选择,并可根据天气的晴天情况进行精细调整,所述晴天情况可以为当前的光照强度。
[0091]光斑的成因有多种,比较常见的两种如下:一种是由于镜头上的灰尘散射造成的,另一种是由于镜头自身空间关系造成的。前者光斑通常小而圆,位置较为随机。后者的形状取决于镜头,通常较大,位置较为靠近镜头中心。本发明忽略具体成因,而直接用能够体现这些成因的纹理贴图。对于灰尘光斑距离屏幕中心可能较远,因而有色散的情况。本发明所述光斑面片的三个颜色通道(RGB通道)在所述光源和所述镜头中心的连线方向上错开,以模拟光斑的色散效果,错开的距离与所述光斑面片到所述光源的距离成正相关,使得越靠外的光斑色散越明显,有利于提高光晕的真实性。
[0092]参见图5,是如图1所示实施例提供的步骤S12的方法流程图。
[0093]在一种优选的实施方式当中,所述光斑面片平行于世界坐标的其中一个坐标平面(如xy坐标平面)。如图6所示,光斑面片平行于世界空间的xy坐标平面,因此本发明在顶点着色器中无需将顶点数据与世界矩阵、相机矩阵和投影矩阵相乘,光斑面片模型顶点数据的坐标系和投影空间的坐标系齐平,模型空间的光斑面片通过平移和旋转即可直接映射到投影空间的坐标平面。此外,为减少渲染过程中的计算量,所述光斑面片优选为正方形面片。应当说明的是,本说明书中大部分实施例中虽均以正方形面片为例,但本领域技术人员可以理解,在具体实施当中也可以采用其他形状(如多边形和圆形等)的面片作为所述光斑面片,本发明对此不作限定,本领域技术人员可根据实际需要进行选择。
[0094]进一步地,由于图形引擎在预裁剪的时候并不会解析着色器,因而会认为模型都放在世界空间中,为了防止图形引擎对光斑面片进行预裁剪,可以为所述面片添加包围盒,并将面片的包围盒设置得足够大,如可将所述包围盒设置得比天空盒大,通过设置包围盒的技巧可以避免图形引擎的误裁剪。
[0095]如图5所示,所述步骤SI 2包括:
[0096]S121,通过顶点着色器提取所述光斑面片在投影空间的二维坐标(例如,xy坐标),根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标(例如,xy值)。
[0097]在具体实施当中,所述光斑面片的位置、缩放比例、颜色和旋转角度等属性数据,可直接设置在面片模型上。着色器根据光斑面片的属性数据和输入的屏幕长宽比信息调整输出到像素着色器的Xy值,可保证投影空间映射到屏幕空间的时候,面片不变形。
[0098]进一步地,为了保证面片处于屏幕最前面,可以将所述光斑面片的第三维度坐标设置为最靠近镜头的值。例如,在0penGL(0pen Graphics Library,开放图形库)中,z = _l为最靠近相机的值,可在顶点着色器中将输出到像素着色器的z坐标指定为-1。
[0099]S122,通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。
[0100]对于通常的图形引擎,引擎负责的是将世界空间的场景投影到屏幕上。引擎并不提供直接在屏幕上绘制的功能。而在屏幕上绘制面片(比如简单的三角面片、方形面片或者其他更复杂的二维面片)的需求是存在的,而这种需求通过底层图形APKApplicat1nProgramming Interface,应用程序编程接口)完成是不方便的,有的图形引擎也并不支持。采用本发明提供的方法,只需要美术人员做好需要的面片,借助已有的图形引擎提供的渲染通道即可完成渲染。本发明在顶点着色器中不将顶点数据与世界矩阵、相机矩阵和投影矩阵相乘,光斑面片模型顶点数据的坐标系和投影空间的坐标系齐平,模型空间的坐标平面直接映射到投影空间的坐标平面,可简单便捷地完成面片的绘制。
[0101 ] 进一步地,所述步骤SI 2还包括:
[0102]S123,将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器(包括前述的顶点着色器和像素着色器)中,以将所有光斑面片合并到一个批次中进行绘制。
[0103]参见图7,是如图5所示实施例提供的步骤S123的方法流程图。
[0104]图形引擎会提供基本的批次合并的功能,能够将“模型一致”,但是在世界中的空间位置、旋转和缩放比例等不一样的模型实例合并,只向GPU提交一次请求,绘制所有的模型实例。这里的“模型一致”,指的是模型着色器的uniform(规格)数据一样(包括纹理)。因此,本发明采用如下方式合并渲染批次。
[0105]在一种优选的实施方式当中,所述步骤S123包括:
[0106]S1231,将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引。
[0107]在一个优选实施例中,美术人员制作的光斑面片为标准正方形面片,面片正方向朝着z轴正方向,长宽都为I,中心位于原点,纹理坐标为(0,0)?(I,I)。可将这些正方形面片所用到的纹理进行拼接,打包成一张大图,并建立相应的纹理索引。如图8所示,为由4张纹理拼接成的一张大的纹理图,设左上角纹理的纹理索引为(0,0),则右下角纹理的纹理索引为(N-1,M-1),N为X方向纹理网格的个数,M为y方向纹理网格的个数。本发明通过纹理的合并使得各光斑面片的纹理数据一致,以使得在后续步骤中可采用现有的合并方法进行批次合并,而在渲染过程中,可通过纹理索引来查找各光斑面片所用的具体纹理。
[0108]S1232,将所有光斑面片所用到的颜色数据(RGB值)作为规格(uniform)数据传递给所述着色器。
[0109]在具体实施当中,可将所述颜色数据依据RGB通道拆分为三个数组,通过uniform接口发送给所述着色器。所述颜色数据为所有光斑面片可能用到的颜色集合,当需要确定某一个光斑的具体颜色时,可根据所述光斑的颜色索引在所述颜色数据中查找与所述颜色索引对应的颜色。现有的合并渲染批次方法中,要求所合并的各渲染批次的uniform数据相同,本发明通过上述方法,使得所有光斑面片的uniform数据相同,可在后续步骤中通过现有的合并渲染批次方法将所有光斑合并到一个批次中进行绘制渲染(如前所述,现有的合并渲染批次方法中,要求所合并的各渲染批次的uniform数据相同)。
[0110]S1233,将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中。
[0111]考虑到绘制光斑面片到投影空间时,有一个维度的数据并没有使用(例如当光斑面片平行于Xy平面时,Z轴的数据并未使用),本发明提出一种方法,将光斑的其他属性数据打包在多余的第三维度中,绘制过程中通过着色器从多余的维度数据中解析数据。
[0112]设光斑面片使用到的纹理索引为(x_ind,y_ind)、颜色索引为c_ind、光斑强度为I,考虑到I一定是一个小于I的数,本发明采用的一种优选的打包方式为:x_ind*100+y_ind*10+c_ind+I。上述方式中最多允许10*10个纹理网格,10个光斑,可满足大部分场景的需求,光斑数量也可以轻松增加。
[0113]S1234,通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。
[0114]依据打包的方式,着色器可简单便捷地解析出纹理索引、颜色索引和光斑强度,并从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,而所述光斑面片的旋转角度、缩放比例和位置等信息直接设置在模型上,图形引擎可直接提取,以对所述光斑面片进行绘制。通过上述方式,使得本发明的渲染过程符合一般的合并批次所需“模型一致”的要求,可直接采用现有的图形引擎提供的合并方法,将所有光斑面片的绘制合并到一个批次中进行。
[0115]本发明采用一种简化光晕模型计算光斑属性,基于在投影空间进行绘制的着色器,将光晕的渲染合并成一个批次,计算量较小,可应用于有实时要求但不苛求物理真实性的领域。
[0116]参见图9,是本发明提供的镜头光晕的生成方法的另一个实施例的流程图。本实施例在图1实施例的基础上进一步包括:
[0117]S13,获取背景像素和光斑像素二者颜色值(RGB值)的乘积,将所述颜色值的乘积与所述背景像素进行混合,获得一次混合结果。
[0118]在具体实施当中,通过OpenGL启用混合模式glBlendFunc(BLEND_DESTCOLOR,GL_ONE)。假设背景像素为D,光斑像素为S,则得到的结果就是DS+D。
[0119]S14,将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果。
[0120]在具体实施当中,通过OpenGL启用混合模式glBlendFunc(GL_0NE,GL_0NE),结合步骤SI 3,则输出的结果为DS+D+S。
[0121]S15,将所述二次混合结果输出到屏幕进行显示。
[0122]通过两次绘制,加上特定的混合方式,可以更好保持光晕的饱和度,达到在亮背景中也能看清光晕的效果,从而体现光晕本身复杂的色彩。上述混合方式仅为一种优选的实施方式,本领域技术人员可根据效果和性能,进行权衡选择,如当设备性能不足时,可仅采用单次颜色累加的混合方式。
[0123]参见图10,是本发明提供的镜头光晕的生成装置的一个实施例的结构示意图。本实施例的基本原理与图1所示实施例一致,本实施例中未详述之处可参见图1所示实施例中的相关描述。
[0124]所述镜头光晕的生成装置包括:
[0125]建模模块11,用于在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性。
[0126]绘制模块12,用于根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。
[0127]其中,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。所述建模模块11包括:
[0128]可见性判断单元111,用于获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性。
[0129]位置计算单元112,用于计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标。
[0130]强度计算单元113,用于获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度。
[0131]旋转计算单元114,用于获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。
[0132]为模拟光斑的色散效果,在一种优选的实施方式当中,所述光斑面片的三个颜色通道在所述光源和所述镜头中心的连线方向上错开,错开的距离与所述光斑面片到所述光源的距离成正相关。
[0133]在一种优选的实施方式当中,所述光斑面片平行于世界坐标的其中一个坐标平面。所述绘制模块12包括:
[0134]顶点处理单元121,用于通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标。
[0135]像素处理单元122,用于通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。
[0136]所述绘制模块12还可以进一步包括:
[0137]批次合并单元123,用于将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器中,以将所有光斑面片合并到一个批次中进行绘制。
[0138]在一种优选的实施方式当中,所述像素处理单元122还用于将所述光斑面片的第三维度坐标设置为最靠近镜头的值。
[0139]在具体实施当中,所述批次合并单元123包括:
[0140]纹理合并子单元,用于将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引;
[0141]颜色传递子单元,用于将所有光斑面片所用到的颜色数据作为规格数据传递给所述着色器;
[0142]数据打包子单元,用于将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中;和,
[0143]批次合并子单元,用于通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。
[0144]参见图11,是本发明提供的镜头光晕的生成装置的另一个实施例的结构示意图。本实施例的基本原理与图9所示方法实施例一致,本实施例未详述之处可参见图9所示实施例中的相关描述。
[0145]本实施例在图10所示实施例的基础上进一步包括:
[0146]—次混合模块13,用于获取背景像素和光斑像素的颜色值乘积,将所述颜色值乘积与所述背景像素进行混合,获得一次混合结果。
[0147]二次混合模块14,用于将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果。
[0148]结果显示模块15,用于将所述二次混合结果输出到屏幕进行显示。
[0149]需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0150]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(R0M,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0151]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1.一种镜头光晕的生成方法,其特征在于,包括: 在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性; 根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。2.如权利要求1所述的镜头光晕的生成方法,其特征在于,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。3.如权利要求2所述的镜头光晕的生成方法,其特征在于,所述在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性,包括: 获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性; 计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标; 获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度; 获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。4.如权利要求1所述的镜头光晕的生成方法,其特征在于,所述光斑面片的三个颜色通道在所述光源和所述镜头中心的连线方向上错开,错开的距离与所述光斑面片到所述光源的距离成正相关。5.如权利要求1所述的镜头光晕的生成方法,其特征在于,所述光斑面片平行于世界坐标的其中一个坐标平面。6.如权利要求5所述的镜头光晕的生成方法,其特征在于,所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制,包括: 通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标; 通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。7.如权利要求6所述的镜头光晕的生成方法,其特征在于,在所述通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标之后,还包括: 将所述光斑面片的第三维度坐标设置为最靠近镜头的值。8.如权利要求6所述的镜头光晕的生成方法,其特征在于,所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制,还包括: 将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器中,以将所有光斑面片合并到一个批次中进行绘制。9.如权利要求8所述的镜头光晕的生成方法,其特征在于,所述将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到所述着色器中,以将所有光斑面片合并到一个批次中进行绘制,包括: 将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引; 将所有光斑面片所用到的颜色数据作为规格数据传递给所述着色器; 将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中; 通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。10.如权利要求1?9任一项所述的镜头光晕的生成方法,其特征在于,在所述根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制之后,还包括: 获取背景像素和光斑像素的颜色值乘积,将所述颜色值乘积与所述背景像素进行混合,获得一次混合结果; 将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果; 将所述二次混合结果输出到屏幕进行显示。11.一种镜头光晕的生成装置,其特征在于,包括: 建模模块,用于在三维场景中建立光晕模型,在场景光源与镜头中心所在的直线上设置一个或多个光斑面片,以使得所述光源到所述光斑面片的距离与所述光源到所述镜头中心的距离之比符合预先设定的比例,并根据所述光源的位置,实时获取在投影空间内所述光斑面片的属性;和, 绘制模块,用于根据所述光斑面片的属性,在投影空间的相应位置上对所述光斑面片进行绘制。12.如权利要求11所述的镜头光晕的生成装置,其特征在于,所述光斑面片的属性包括位置、缩放比例、颜色、强度、旋转角度和可见性中的一种或多种。13.如权利要求12所述的镜头光晕的生成装置,其特征在于,所述建模模块包括: 可见性判断单元,用于获取所述光源和镜头的前后位置关系,并根据所述前后位置关系,判断所述光斑面片的可见性; 位置计算单元,用于计算所述光源在投影空间的投影坐标,并根据所述光源的投影坐标以及所述光斑面片所处的位置,计算各个光斑面片在投影空间中的位置坐标; 强度计算单元,用于获取所述光源与镜头中心的距离,并根据所述距离,计算各个光斑面片的强度;和, 旋转计算单元,用于获取所述光源在投影空间绕所述镜头中心旋转的角度,将所述角度作为所述光斑面片的旋转角度。14.如权利要求11所述的镜头光晕的生成装置,其特征在于,所述光斑面片的三个颜色通道在所述光源和所述镜头中心的连线方向上错开,错开的距离与所述光斑面片到所述光源的距离成正相关。15.如权利要求11所述的镜头光晕的生成装置,其特征在于,所述光斑面片平行于世界坐标的其中一个坐标平面。16.如权利要求15所述的镜头光晕的生成装置,其特征在于,所述绘制模块包括: 顶点处理单元,用于通过顶点着色器提取所述光斑面片在投影空间的二维坐标,根据所述光斑面片的属性以及屏幕的长宽比信息,调整输出到像素着色器的顶点坐标;和,像素处理单元,用于通过所述像素着色器将所述光斑面片的纹理和颜色叠加到所述光斑面片上,获取所述光斑面片上每个像素的颜色值。17.如权利要求16所述的镜头光晕的生成装置,其特征在于,所述顶点处理单元还用于将所述光斑面片的第三维度坐标设置为最靠近镜头的值。18.如权利要求16所述的镜头光晕的生成装置,其特征在于,所述绘制模块,还包括: 批次合并单元,用于将所述光斑面片的强度、纹理索引和颜色索引作为所述光斑面片的第三维度信息输入到着色器中,以将所有光斑面片合并到一个批次中进行绘制。19.如权利要求18所述的镜头光晕的生成装置,其特征在于,所述批次合并单元包括: 纹理合并子单元,用于将各个光斑面片所用到的纹理合并成一张大纹理,并形成相应的纹理索引; 颜色传递子单元,用于将所有光斑面片所用到的颜色数据作为规格数据传递给所述着色器; 数据打包子单元,用于将所述光斑面片的纹理索引、颜色索引和强度打包成一个浮点数作为所述光斑面片的第三维度信息,输入到所述着色器中;和, 批次合并子单元,用于通过所述着色器从所述第三维度信息中解析出纹理索引、颜色索引和强度,从所述大纹理中查找与所述纹理索引对应的纹理,从所述颜色数据中查找与所述颜色索引对应的颜色,在一个批次中对所有光斑面片进行绘制。20.如权利要求11?19任一项所述的镜头光晕的生成装置,其特征在于,所述装置还包括: 一次混合模块,用于获取背景像素和光斑像素的颜色值乘积,将所述颜色值乘积与所述背景像素进行混合,获得一次混合结果; 二次混合模块,用于将所述一次混合结果与所述光斑像素进行混合,获得二次混合结果;和, 结果显示模块,用于将所述二次混合结果输出到屏幕进行显示。
【文档编号】G06T15/04GK105976423SQ201610283282
【公开日】2016年9月28日
【申请日】2016年4月29日
【发明人】曹军, 张明, 黄馥霖
【申请人】网易(杭州)网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1