基于蒙特卡罗法的阴影渲染方法及装置与流程

文档序号:31388682发布日期:2022-09-03 01:59阅读:129来源:国知局
基于蒙特卡罗法的阴影渲染方法及装置与流程

1.本发明涉及图形渲染技术领域,具体来说涉及一种基于蒙特卡罗法的阴影渲染方法及装置。


背景技术:

2.现有的卫星图呈现方案中,通常是通过对地轨卫星采集的遥感数据进行处理后得到卫星影像,由于卫星传感器距离地面遥远,且图幅辽阔,在大气散射作用下,自然环境的太阳光无法对地表形态大规模产生明显的阴影。这就使得虽然人类在地表生活能看到“影子”,但实际在卫星传感器中所采集到的地表反照信号并不具备视觉层面理想的“伪影形态”。同时,作为标准化遥测成果,遥感卫星所生产的产品卫星影像通常实施了大气校正,该校正用于屏蔽不同气象条件下观测结果中存在的系统误差,这进一步导致遥感卫星影像成果呈现出“一马平川”的视觉效果,用户无法直观的从图中感受到山川与峡谷,不仅显示效果较差,还不利于用户对地形的快速识别。


技术实现要素:

3.本发明旨在解决现有的卫星影像显示效果差以及不利于用户对地形快速识别的问题,提出一种基于蒙特卡罗法的阴影渲染方法及装置。
4.本发明解决上述技术问题所采用的技术方案是:
5.一方面,提供一种基于蒙特卡罗法的阴影渲染方法,包括以下步骤:
6.获取待渲染地图瓦片及其对应的卫星渲染图;
7.根据所述待渲染地图瓦片的位置信息获取待渲染地图瓦片的所有相邻地图瓦片,将待渲染地图瓦片及其相邻的地图瓦片进行拼接后得到纹理图;
8.获取所述待渲染地图瓦片及其相邻的地图瓦片对应的数字高程模型,所述数字高程模型用于表示地面高程的起伏形态;
9.将所述纹理图渲染至图形处理器的离屏缓冲区中,根据所述数字高程模型得到纹理图对应的高度图纹理缓冲对象,并根据所述高度图纹理缓冲对象计算得到对应的法线图纹理缓冲对象;
10.设置模拟光源,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,所述光照纹理渲染图用于表示待渲染地图瓦片在所述模拟光源下的光照范围和阴影分布;
11.将所述卫星渲染图和光照纹理渲染图进行合并后得到待渲染地图瓦片的最终渲染图。
12.进一步地,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,具体包括:
13.根据预设次数进行迭代,每次迭代包括以下步骤:在模拟光源中随机确定一个点光源,沿着该点光源到待渲染地图瓦片对应的像素点的方向,构建该点光源射向待渲染地
图瓦片的光线,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象,对在该光线作用下的各像素点进行片元着色;
14.对每次迭代结果进行混合,得到待渲染地图瓦片对应的光照纹理渲染图。
15.进一步地,所述模拟光源的半径大于太阳的半径。
16.进一步地,所述模拟光源的半径为67541100千米。
17.进一步地,所述预设次数为128次。
18.进一步地,所述获取待渲染地图瓦片及其对应的卫星渲染图,具体包括:
19.获取全量数据,对所述全量数据对应的卫星影像进行切片处理得到地图瓦片及其对应的卫星渲染图;
20.根据位置信息获取待渲染地图瓦片及其对应的卫星渲染图。
21.进一步地,基于墨卡托投影对卫星影像进行切片处理得到地图瓦片及其对应的卫星渲染图。
22.进一步地,所述数字高程模型采用maptiler标准封装。
23.另一方面,提供一种基于蒙特卡罗法的阴影渲染装置,包括:
24.获取单元,用于获取待渲染地图瓦片及其对应的卫星渲染图;以及获取所述待渲染地图瓦片及其相邻的地图瓦片对应的数字高程模型,所述数字高程模型用于表示地面高程的起伏形态;
25.拼接单元,用于根据所述待渲染地图瓦片的位置信息获取待渲染地图瓦片的所有相邻地图瓦片,将待渲染地图瓦片及其相邻的地图瓦片进行拼接后得到纹理图;
26.图形处理单元,用于将所述纹理图渲染至图形处理器的离屏缓冲区中,根据所述数字高程模型得到纹理图对应的高度图纹理缓冲对象,并根据所述高度图纹理缓冲对象计算得到对应的法线图纹理缓冲对象;
27.渲染单元,用于设置模拟光源,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,所述光照纹理渲染图用于表示待渲染地图瓦片在所述模拟光源下的光照范围和阴影分布;
28.合并单元,用于将所述卫星渲染图和光照纹理渲染图进行合并后得到待渲染地图瓦片的最终渲染图。
29.进一步地,所述渲染单元具体用于:
30.根据预设次数进行迭代,每次迭代包括以下步骤:在模拟光源中随机确定一个点光源,沿着该点光源到待渲染地图瓦片对应的像素点的方向,构建该点光源射向待渲染地图瓦片的光线,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象,对在该光线作用下的各像素点进行片元着色;
31.对每次迭代结果进行混合,得到待渲染地图瓦片对应的光照纹理渲染图。
32.本发明的有益效果是:本发明所述的基于蒙特卡罗法的阴影渲染方法及装置,通过设置模拟光源来模拟太阳,并基于蒙特卡罗法生成待渲染地图瓦片在模拟光源下的光照纹理渲染图,最后将待渲染瓦片的卫星渲染图和光照纹理渲染图进行合并即可完成对待渲染地图瓦片的阴影渲染,从而提升了卫星影像的显示效果,用户也可以根据阴影渲染后的图像快速识别地形,例如丘陵地带。
附图说明
33.图1为本发明实施例所述的基于蒙特卡罗法的阴影渲染方法的流程示意图;
34.图2为本发明实施例所述的标准z-x-y切片方案下的卫星渲染图;
35.图3为本发明实施例所述的标准z-x-y切片方案下的数字高程模型;
36.图4为本发明实施例所述的阴影区域示意图;
37.图5为本发明实施例所述的随机选中点光源进行一次迭代的示意图;
38.图6为本发明实施例所述的随机选中点光源进行另一次迭代的示意图;
39.图7为本发明实施例所述的光照纹理渲染图;
40.图8为本发明实施例所述的最终渲染图;
41.图9为本发明实施例所述的基于蒙特卡罗法的阴影渲染装置的结构示意图。
具体实施方式
42.下面将结合附图对本发明的实施方式进行详细描述。
43.本发明提供的基于蒙特卡罗法的阴影渲染方法及装置,其主要的技术构思包括:获取待渲染地图瓦片及其对应的卫星渲染图;根据所述待渲染地图瓦片的位置信息获取待渲染地图瓦片的所有相邻地图瓦片,将待渲染地图瓦片及其相邻的地图瓦片进行拼接后得到纹理图;获取所述待渲染地图瓦片及其相邻的地图瓦片对应的数字高程模型,所述数字高程模型用于表示地面高程的起伏形态;将所述纹理图渲染至图形处理器的离屏缓冲区中,根据所述数字高程模型得到纹理图对应的高度图纹理缓冲对象,并根据所述高度图纹理缓冲对象计算得到对应的法线图纹理缓冲对象;设置模拟光源,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,所述光照纹理渲染图用于表示待渲染地图瓦片在所述模拟光源下的光照范围和阴影分布;将所述卫星渲染图和光照纹理渲染图进行合并后得到待渲染地图瓦片的最终渲染图。
44.蒙特卡罗法(又称统计试验法)是描述装备运用过程中各种随机现象的基本方法,而且它特别适用于一些解析法难以求解甚至不可能求解的问题,因而在装备效能评估中具有重要地位。蒙特卡罗法的基本思想是:为了求解问题,首先建立一个概率模型或随机过程,使它的参数或数字特征等于问题的解:然后通过对模型或过程的观察或抽样试验来计算这些参数或数字特征,最后给出所求解的近似值。解的精确度用估计值的标准误差来表示。蒙特卡罗法的主要理论基础是概率统计理论,主要手段是随机抽样、统计试验。
45.由常识可知,无大气散射干扰下,面光源照亮三维表面会产生两个不同类型的阴影区域,本影区域完全无光,半影区域部分有光,越靠近本影区域则光线越弱,并且由于地面集合形状是一个不可预测的离散函数,如果要在数学上精确计算半影区域的光照强度,则需要引入复杂度极高的分部积分,该积分的求解难度集合无法直接用计算机完成。基于此,本发明基于蒙特卡罗法对待渲染地图瓦片对应的卫星渲染图进行阴影渲染,即采用概率学方式,对测试区域进行多次迭代,模拟来自面光源(假想太阳)内部不同随机区域的光线跟踪,并在每次迭代生成用于表示假想面光源在地面所投射出的等效光照范围和阴影分布的阴影灰度图像,测试完成后对迭代结果进行混合,从而生成一张平滑边缘的光照纹理渲染图,即可统计出模拟光源在地面所投射出的等效光照范围和阴影分布,最后通过将卫
星渲染图和光照纹理渲染图进行合并,即可完成对卫星渲染图半影区域的阴影渲染。
46.实施例
47.本发明实施例所述的基于蒙特卡罗法的阴影渲染方法,如图1所示,包括以下步骤:
48.步骤1、获取待渲染地图瓦片及其对应的卫星渲染图;
49.可以理解,gis学科领域下的数据集一般都是极其庞大的,就具体针对卫星影像对应的数据而言,其理论空间尺度就覆盖整个地球表面,而通常情况下现代计算机不具备一次性处理全量数据的性能要求,因此通常会通过切片方案将全量数据集划分成若干个小规模独立单元,形成栅格数据集,采用相邻单元自治的方式进行局部计算,对划分子域的逻辑需求上线仅仅是子域有效数据覆盖子域局部计算的全量输入。
50.栅格数据集的切片方案有很多,本实施例选用谷歌推行的墨卡托投影的标准z-x-y切片方案对卫星影像进行切片处理,如图2和图3所示,执行标准z-x-y切片方案后可以得到地图瓦片对应的卫星渲染图和数字高程模型,其中,数字高程模型用于表示地面高程的起伏形态,本实施例中的数字高程模型采用maptiler标准封装。
51.本实施例可以通过构建切片发布服务,实现可通过传入[z,x,y]实参获取任意地理位置和切片等级数据的http服务,以实现根据位置信息获取待渲染地图瓦片及其对应的卫星渲染图和数字高程模型。
[0052]
步骤2、根据所述待渲染地图瓦片的位置信息获取待渲染地图瓦片的所有相邻地图瓦片,将待渲染地图瓦片及其相邻的地图瓦片进行拼接后得到纹理图;
[0053]
可以理解,待渲染地图瓦片的阴影会受到其相邻地图瓦片地形的影响,因此在待渲染地图瓦片半影区域的阴影渲染过程中,需要考虑相邻地图瓦片的地形,以提升阴影渲染的准确性。本实施例根据待渲染地图瓦片进行八领域扩展,即将待渲染地图瓦片及与其相邻的八个地图瓦片进行拼接,并根据拼接后的纹理图来对待渲染地图瓦片进行阴影渲染。
[0054]
步骤3、获取所述待渲染地图瓦片及其相邻的地图瓦片对应的数字高程模型,所述数字高程模型用于表示地面高程的起伏形态;
[0055]
相邻地图瓦片的地形会对待渲染地图瓦片的阴影产生影响,主要是由于相邻地图瓦片的地面高程不同,进而造成对光线遮挡的效果不同,因而本实施例需要获取纹理图中所有地图瓦片对应的数字高程模型,以确定相邻地图瓦片的地形会对待渲染地图瓦片的阴影产生的影响,进而提升阴影渲染的准确性。
[0056]
步骤4、将所述纹理图渲染至图形处理器的离屏缓冲区中,根据所述数字高程模型得到纹理图对应的高度图纹理缓冲对象,并根据所述高度图纹理缓冲对象计算得到对应的法线图纹理缓冲对象;
[0057]
本实施例需要预先建立映射关系,以使得瓦片式的栅格数据集可供图形处理器gpu计算纹理缓冲,映射关系建立后,将纹理图渲染至图形处理器gpu的离屏缓冲区fbo中,图形处理器gpu根据纹理图对应的数字高程模型得到纹理图对应的高度图纹理缓冲对象,并在高度图纹理缓冲对象的基础上计算法线,得到对应的法线图纹理缓冲对象,以便根据高度图纹理缓冲对象和法线图纹理缓冲对象来确定待渲染地图瓦片上的光照范围和阴影分布。
[0058]
步骤5、设置模拟光源,根据所述法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,所述光照纹理渲染图用于表示待渲染地图瓦片在所述模拟光源下的等效光照范围和阴影分布;
[0059]
本实施例中,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,具体包括:
[0060]
步骤51、根据预设次数进行迭代,每次迭代包括以下步骤:在模拟光源中随机确定一个点光源,沿着该点光源到待渲染地图瓦片对应的像素点的方向,构建该点光源射向待渲染地图瓦片的光线,根据所述高度图纹理缓冲对象和法线图纹理缓冲对象,对在该光线作用下的各像素点进行片元着色;
[0061]
可以理解,本实施例中的模拟光源为圆形面光源,用于将其作为假象太阳。如图4所示,面光源照亮三维表面会产生两个不同类型的阴影区域,本影区域完全无光,半影区域部分有光,越靠近本影区域则光线越弱,为了更加美观的视觉呈现,本实施例扩大了假象太阳的半径,使得最终结果的半影区域显得更大。即模拟光源的半径大于太阳的半径,例如,模拟光源的半径可以为67541100千米。
[0062]
图5示出了随机选中点光源进行一次迭代的示意图,在随机选中点光源后,沿着该点光源到待渲染地图瓦片对应的像素点的方向,构建该点光源射向待渲染地图瓦片的光线,根据纹理图中各地图瓦片对应的高度图纹理缓冲对象和法线图纹理缓冲对象,对在该光线作用下的各像素点进行片元着色,即可得到此次迭代对应的阴影灰度图像。
[0063]
图6示出了随机选中点光源进行另一次迭代的示意图,其迭代流程与前述迭代流程相同,此处不再赘述。
[0064]
步骤51、对每次迭代结果进行混合,得到待渲染地图瓦片对应的光照纹理渲染图。
[0065]
如图7所示,本实施例基于蒙特卡洛法,随机选中点光源进行多次迭代,并分别得到迭代对应的阴影灰度图像,然后将迭代结果进行混合,即可得到待渲染地图瓦片对应的光照纹理渲染图,进而统计出模拟光源在地面所投射出的等效光照范围和阴影分布。本实施例对迭代结果进行混合后得到的光照纹理渲染图。
[0066]
其中,迭代次数可根据实际情况进行设置,迭代次数越多,则计算量越大,但准确性越高,迭代次数越多,则计算量越小,但准确性越低,本实施例中迭代次数为128次。
[0067]
步骤6、将所述卫星渲染图和光照纹理渲染图进行合并后得到待渲染地图瓦片的最终渲染图。
[0068]
如图8所示,在得到待渲染地图瓦片的光照纹理渲染图后,将其对应的卫星渲染图和光照纹理渲染图进行合并,即可得到最终渲染图,完成阴影渲染流程。
[0069]
综上所述,本实施例所述的基于蒙特卡罗法的阴影渲染方法及装置,通过设置模拟光源来模拟太阳,并基于蒙特卡罗法生成待渲染地图瓦片在模拟光源下的光照纹理渲染图,最后将待渲染瓦片的卫星渲染图和光照纹理渲染图进行合并即可完成对待渲染地图瓦片的阴影渲染,提升了卫星影像的显示效果,用户也可以根据阴影渲染后的图像快速识别地形,例如丘陵地带。
[0070]
基于上述技术方案,本实施例还提出一种基于蒙特卡罗法的阴影渲染装置,如图9所示,包括:
[0071]
获取单元,用于获取待渲染地图瓦片及其对应的卫星渲染图;以及获取所述待渲
染地图瓦片及其相邻的地图瓦片对应的数字高程模型,所述数字高程模型用于表示地面高程的起伏形态;
[0072]
拼接单元,用于根据所述待渲染地图瓦片的位置信息获取待渲染地图瓦片的所有相邻地图瓦片,将待渲染地图瓦片及其相邻的地图瓦片进行拼接后得到纹理图;
[0073]
图形处理单元,用于将所述纹理图渲染至图形处理器的离屏缓冲区中,根据所述数字高程模型得到纹理图对应的高度图纹理缓冲对象,并根据所述高度图纹理缓冲对象计算得到对应的法线图纹理缓冲对象;
[0074]
渲染单元,用于设置模拟光源,根据所述法线图纹理缓冲对象并基于蒙特卡罗法生成待渲染地图瓦片对应的光照纹理渲染图,所述光照纹理渲染图用于表示待渲染地图瓦片在所述模拟光源下的光照范围和阴影分布;
[0075]
合并单元,用于将所述卫星渲染图和光照纹理渲染图进行合并后得到待渲染地图瓦片的最终渲染图。
[0076]
可以理解,由于本发明实施例所述的基于蒙特卡罗法的阴影渲染装置是用于实现实施例所述基于蒙特卡罗法的阴影渲染方法的装置,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的较为简单,相关之处参见方法的部分说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1