一种基于OpenGL的雾化方法和系统技术方案

技术编号:13831953 阅读:63 留言:0更新日期:2016-10-14 11:05
本发明专利技术公开了一种基于OpenGL的雾化方法和系统。基于OpenGL的雾化方法包括,将待雾化对象划分成若干个片段,计算各个所述片段的雾化颜色值,根据所述雾化颜色值对各个所述片段进行雾化处理。将待雾化对象划分成若干个片段,计算各个片段的雾化颜色值,根据雾化颜色值对各个片段进行雾化处理。通过将整体待雾化对象划分成若干个片段,计算各个片段对应的雾化颜色值,并根据该对应的雾化颜色值对各个片段进行雾化处理,从而实现对整个待雾化对象的雾化处理,并可以对待雾化对象的局部片段进行雾化处理,满足人们对雾化效果的个性化需求。

【技术实现步骤摘要】

本专利技术涉及一种雾化方法,尤其涉及一种基于OpenGL的雾化方法和系统
技术介绍
现有的雾化效果大多是直接调用OpenGL(Open Graphics Library,开放图形库)的现有接口,根据内置的雾化方程式对全屏内容对象进行雾化,使远处的物体看上去逐渐变得模糊。其中,雾的浓度和颜色受到雾化方程式个数的限制,无法调试出最合适的雾化效果,其次,调用OpenGL的现有接口产生的雾化效果是基于全屏内容对象的,不能进行局部雾化,总而言之就是无法满足人们对雾化效果的个性化需求。
技术实现思路
针对现有技术的不足,本专利技术的目的在于提供一种基于OpenGL的雾化方法和系统,可以对对象的局部片段进行雾化,满足人们对雾化效果的个性化需求。第一方面,本专利技术实施例提供的一种基于OpenGL的雾化方法,包括:将待雾化对象划分成若干个片段;计算各个所述片段的雾化颜色值;根据所述雾化颜色值对各个所述片段进行雾化处理。第二方面,本专利技术实施例还对应提供的一种基于OpenGL的雾化系统,包括:片段划分模块,用于将待雾化对象划分成若干个片段;雾化颜色值计算模块,用于计算各个所述片段的雾化颜色值;雾化处理模块,用于根据所述雾化颜色值对各个所述片段进行雾化处理。本专利技术实施例提供的技术方案带来的有益效果:本技术方案中,将待雾化对象划分成若干个片段,计算各个片段的雾化颜色值,根据雾化颜色值对各个片段进行雾化处理。通过将整体待雾化对象划分成若干个片段,计算各个片段对应的雾化颜色值,并根据该对应的雾化颜色值对各个片段进行雾化处理,从而实现对整个待雾化对象的雾化处理,并可以对待雾化对象的局部片段进行雾化处理,满足人们对雾化效果的个性化需求。附图说明图1是本专利技术实施例一提供的基于OpenGL的雾化方法的流程示意图。图2是本专利技术实施例二提供的将待雾化对象划分成若干个片段的流程示意图。图3是本专利技术实施例三提供的计算各个片段的雾化颜色值的流程示意图。图4是本专利技术实施例四提供的基于OpenGL的雾化系统的架构示意图。图5是本专利技术实施例五提供的片段划分模块的架构示意图。图6是本专利技术实施例六提供的雾化颜色值计算模块的架构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,可以理解的是,此处所描述的具体实施例仅用于解释本专利技术,而非对本专利技术的限定。另外,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容。实施例一请参考图1,其是本专利技术实施例一提供的基于OpenGL的雾化方法的流程示意图。本实施例的技术方案可以应用在对整体待雾化对象中的片段需要雾化的场景,可以由计算机等终端来执行,具体可以由配置在计算机等终端上的OpenGL来执行。该基于OpenGL的雾化方法,可以包括如下步骤:S110:将待雾化对象划分成若干个片段。示例性的,可以按不同的标准对待雾化对象进行划分,例如可以按像素点为单位对待雾化对象进行划分,将满足一定条件的像素点划分在一个片段内;也可以将待雾化对象划分成若干个均匀的细小网格块,每一个细小网格块都是一个片段。在此对如何将待雾化片段划分成若干个片段不作具体的限定,但本专利技术实施例二提供了可选的实施方式。S120:计算各个片段的雾化颜色值。示例性的,要实现对各个片段的雾化效果,最重要的是先确定各个片段所对应的雾化颜色值,雾化颜色值取决于雾的浓度、片段中心与观察点间的视觉坐标距离、片段的颜色索引和OpenGL要为该片段分配的雾颜色值等。本专利技术实施例三为计算各个片段的雾化颜色值提供了可选的实施方式。S130:根据雾化颜色值对各个片段进行雾化处理。示例性的,用已计算出的雾化颜色值给对应的片段进行雾化处理,对各片段的雾化处理完成后,拼接各片段的雾化效果最终形成对整个待雾化对象的雾化处理。综上,在本实施例中,将待雾化对象按一定标准划分成若干个片段,计算各个片段对应的雾化颜色值,根据雾化颜色值对各个片段进行雾化处理,最终完成对整个待雾化对象的雾化处理。在实现对待雾化对象的雾化效果的同时,还可对整个待雾化对象中的局部片段分别进行雾化处理,满足用户对雾化效果的个性化需求。实施例二请参考图2,其是本专利技术实施例二提供的将待雾化对象划分成若干个片段的流程示意图。本实施例以上述实施例一为基础,提供了上述实施例一中步骤S110将待雾化对象划分成若干个片段的可选的实施方式。上述步骤S110将待雾化对象划分成若干个片段,可以包括如下步骤:S111:获取模型视图矩阵和待雾化对象中各个像素点的顶点坐标。S112:根据模型视图矩阵和顶点坐标,计算各个像素点的视觉坐标。示例性的,根据模型视图矩阵和各个像素点的顶点坐标,计算各个像素点的视觉坐标。视觉坐标的计算公式可以为:E=MV式中,E表示像素点的视觉坐标,M表示模型视图矩阵,V表示像素点的顶点坐标。S113:根据视觉坐标,计算各个像素点与观察点间的视觉坐标距离。S114:将与观察点间的视觉坐标距离相同的像素点划分在同一个片段内,待雾化片段被划分成若干个片段。示例性的,将一个像素段中与观察点间的视觉坐标距离相同的像素点划分在同一个片段内,待雾化片段被划分成若干个片段,则每一个片段的中心与观察点之间也对应该视觉坐标距离。综上,在本实施例中,通过模型视图矩阵和顶点坐标,计算求得像素点的视觉坐标,根据像素点的视觉坐标计算得像素点与观察点间的视觉坐标距离,按与观察点间的视觉坐标距离的不同将待雾化对象划分成若干个片段。本实施例提供了将待雾化对象划分成多个片段的可选的实施方式。实施例三请参考图3,其是本专利技术实施例三提供的计算各个片段的雾化颜色值的流程示意图。本实施例以上述实施例一为基础,提供了上述实施例一中步骤S120计算各个片段的雾化颜色值的可选的实施方式。上述步骤S120计算各个片段的雾化颜色值,可以包括如下步骤:S121:根据各个片段与观察点间的视觉坐标距离,和预设的雾化浓度值计算雾混合因子。示例性的,片段与观察点间的视觉坐标距离,即为片段中像素点与观察点间的视觉坐标距离,用户根据实际需求预设合理的雾化浓度值。雾混合因子的计算公式可以为: f = e - ( d e n s i t y * z ) f = e 本文档来自技高网...

【技术保护点】
一种基于OpenGL的雾化方法,其特征在于,包括:将待雾化对象划分成若干个片段;计算各个所述片段的雾化颜色值;根据所述雾化颜色值对各个所述片段进行雾化处理。

【技术特征摘要】
1.一种基于OpenGL的雾化方法,其特征在于,包括:将待雾化对象划分成若干个片段;计算各个所述片段的雾化颜色值;根据所述雾化颜色值对各个所述片段进行雾化处理。2.如权利要求1所述的方法,其特征在于,所述将待雾化对象划分成若干个片段,包括:获取模型视图矩阵和所述待雾化对象中各个像素点的顶点坐标;根据所述模型视图矩阵和所述顶点坐标,计算各个所述像素点的视觉坐标;根据所述视觉坐标,计算各个所述像素点与观察点间的视觉坐标距离;将与所述观察点间的视觉坐标距离相同的像素点划分在同一个片段内,所述待雾化对象被划分成若干个片段。3.如权利要求2所述的方法,其特征在于,所述计算各个所述片段的雾化颜色值,包括:根据各个所述片段与观察点间的视觉坐标距离,和预设的雾化浓度值计算雾混合因子;根据所述雾混合因子计算各个所述片段的雾化颜色值。4.如权利要求2所述的方法,其特征在于,所述视觉坐标的计算公式为:E=MV式中,E表示所述视觉坐标,M表示所述模型视图矩阵,V表示所述顶点坐标。5.如权利要求3所述的方法,其特征在于,所述雾混合因子的计算公式为: f = e - ( d e n s i t y * z ) f = e - ( d e n s i t y * z ) 2 f = e n d - z e n d - s t a r t ]]>式中,f=e-(density*z)为在指数模式一GL_EXP下雾混合因子的计算公式;为在指数模式二GL_EXP2下雾混合因子的计算公式;为在线性模式GL_LINEAR下雾混合因子的计算公式;f表示所述雾混合因子,density表示所述预设的雾化浓度值,z表示所述片段与观察点间的视觉坐标距离,end表示在观察点处可见的最远距离,start表示在观察点处可见的最近距离;所述雾化颜色值的计算公式为:C=fCi+(1-f)Cf式中,C表示所述雾化颜色值,Ci表示源片段的颜色索引,Cf表示设置雾效的初始颜色值,f表示所述雾混合因子。6.一种基于OpenGL的雾化系统,其特征在于,包括:片段划分模块,用于将待雾化...

【专利技术属性】
技术研发人员:曾超
申请(专利权)人:广东小天才科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1