[发明专利]基于OpenSceneGraph的体积光生成方法、装置、设备和存储介质在审
申请号: | 202011105083.2 | 申请日: | 2020-10-15 |
公开(公告)号: | CN112233220A | 公开(公告)日: | 2021-01-15 |
发明(设计)人: | 丁伟 | 申请(专利权)人: | 洛阳众智软件科技股份有限公司 |
主分类号: | G06T15/50 | 分类号: | G06T15/50 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 付登云 |
地址: | 471000 河南省洛阳市高新开*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 openscenegraph 体积 生成 方法 装置 设备 存储 介质 | ||
1.一种基于OpenSceneGraph的体积光生成方法,其特征在于,包括:
搭建延迟渲染框架、生成场景图和深度图;
基于所述场景图和所述深度图,生成光源掩码图;
剔除光源不在屏幕时的情景;
基于所述掩码图,计算光线叠加处理效果,得到体积光;其中,所述体积光的计算和所述生成光源掩码图在一个pass中执行;
通过预设算法进行体积光平滑处理;
对体积光和所述场景图进行融合并输出最终场景。
2.根据权利要求1所述的基于OpenSceneGraph的体积光生成方法,其特征在于,所述基于所述场景图和所述深度图,生成光源掩码图,包括
在禁用颜色缓冲区的深度写入功能的基础上,绘制场景光源和天空;
依照背景优先绘制的顺序,进行场景的绘制;
绘制完场景后,从所述深度图获取掩码颜色分量值中的red分量,此分量即为深度信息;
判断深度信息是否大于1,如果大于,则认为需要从原始场景中对应像素获取颜色,否则返回黑色。
3.根据权利要求2所述的基于OpenSceneGraph的体积光生成方法,其特征在于,所述剔除光源不在屏幕时的情景,包括:
将太阳在视图空间的深度信息的保存到屏幕坐标;
判断太阳的深度值是否小于35;
若小于,在认为光源不在屏幕,则无需处理体积光。
4.根据权利要求2所述的基于OpenSceneGraph的体积光生成方法,其特征在于,所述基于所述掩码图,计算光线叠加处理效果,得到体积光,包括:
用当前像素所处的纹理坐标和光源经过处理后投射到屏幕的归一化坐标相减,获取屏幕纹理偏移值;
将纹理偏移值除以采样次数,获取每次采样的纹理偏移步长;
以当前像素为起点,沿着光源的方向进行步进采样,并将每次采样的颜色值进行叠加;
采样结束后,将叠加得到的颜色值除以采样次数,获得当前像素的最终颜色;
执行对整个屏幕的采样后,便能产生沿着光源方向,向外辐射的光柱。
5.根据权利要求4所述的基于OpenSceneGraph的体积光生成方法,其特征在于,还包括:
控制所述体积光的强度大小。
6.根据权利要求5所述的基于OpenSceneGraph的体积光生成方法,其特征在于,所述控制所述体积光的强度大小,包括:
将像素的颜色值与一个因子相乘得到目标颜色值,以控制体积光的强弱程度;
所述控制因子,取值范围在[0,1]之间,当取0,表示没有体积光,取1,表示体积光最强。
7.根据权利要求4所述的基于OpenSceneGraph的体积光生成方法,其特征在于,所述通过预设算法进行体积光平滑处理,包括:
计算各个像素的纹理偏移坐标的长度为len;
使用当前像素的亮度颜色乘以(1-sin(len))得到目标亮度颜色,以进行平滑处理,获得离光源越远,光强会逐渐淡化和减弱。
8.一种基于OpenSceneGraph的体积光生成装置,其特征在于,包括:
框架搭建模块,用于搭建延迟渲染框架、生成场景图/深度图;
掩码图生成模块,用于基于所述场景图和所述深度图,生成光源掩码图;
剔除模块,用于剔除光源不在屏幕时的情景;
计算模块,用于基于所述掩码图计算体积光;
平滑处理模块,用于通过预设算法进行体积光平滑处理;
融合模块,用于对体积光和所述场景图进行融合并输出最终场景。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于洛阳众智软件科技股份有限公司,未经洛阳众智软件科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011105083.2/1.html,转载请声明来源钻瓜专利网。