面向互联网三维地图的顺序无关透明渲染方法和系统与流程

文档序号:36132833发布日期:2023-11-22 20:41阅读:21来源:国知局
面向互联网三维地图的顺序无关透明渲染方法和系统与流程

本发明涉及三维地图渲染,尤其是指一种面向互联网三维地图的顺序无关透明渲染方法和系统。


背景技术:

1、基于可视化技术的快速发展,互联网地图由二维升级为三维。三维地图在原有二维矢量、栅格地图图层的基础上融合了地上地下、室内室外模型的展示。比如在轨道交通三维系统中,存在站点模型贯穿地表、三维建筑室内外切换、楼层切换等场景。为了更好地展示地下、室内模型,会将二维图层(地表)、建筑轮廓模型、建筑分层模型等设置为半透明。当三维场景中同时存在不透明与半透明要素,渲染流程就会变得复杂。如果采用传统渲染方法,例如按离摄像机距离将半透明要素遍历排序并进行叠加渲染,半透明要素的前后关系无法体现,即无法满足三维地图中正确显示半透明要素互相穿插、半透明要素相互包含等空间关系的要求。此外,互联网三维地图中要素覆盖范围广、数据量大,通过排序渲染半透明要素性能的开销较大,会给客户端造成巨大压力。

2、为了解决上述问题,出现了顺序无关的半透明渲染算法(order independenttransparency,oit)。oit的核心思想是不对半透明要素进行远近排序,比较常见的现有技术有wboit(weighted blended oit)和深度剥离(depth peeling)。wboit按照与深度和透明度相关的权重函数加权平均计算颜色值,虽然性能较佳,但是最终的渲染效果极大依赖权重函数的设置,需要针对每个场景进行权重函数调节;此外,渲染结果中半透明要素交叠的地方无明显界限,不能体现正确的三维空间层次。深度剥离的基本思想是利用n次渲染通道分别渲染出距离摄像机第n近的片元,最后再从远到近依次将剥离出的n个图层根据透明度混合叠加,渲染结果最接近真实世界的效果,但是使用多次渲染通道渲染场景中所有的半透明物体性能消耗大,特别是如果要实现菲涅尔反射、折射等复杂的表面效果时,性能消耗会更大,常用的计算设备无法满足性能需求,渲染成本大且会出现渲染时间长的问题。

3、综上所述,现有技术中不管是对半透明要素进行排序、从远及近进行颜色混合渲染,还是主流的顺序无关半透明渲染技术,都无法兼顾效果和性能。并且,在实际的互联网三维可视化项目中,受限于浏览器性能,如何更好地渲染半透明要素仍面临较大的挑战。


技术实现思路

1、为此,本发明所要解决的技术问题在于克服现有技术中的不足,提供一种面向互联网三维地图的顺序无关透明渲染方法和系统,可以降低渲染过程中的性能消耗,保证半透明要素的正确渲染,兼顾性能和渲染效果。

2、为解决上述技术问题,本发明提供了一种面向互联网三维地图的顺序无关透明渲染方法,包括:

3、获取互联网三维地图数据,将所述互联网三维地图数据分为不透明要素和半透明要素;

4、渲染所述不透明要素,记录不透明要素渲染后的颜色值和深度值,所述颜色值包含透明度;

5、根据不透明要素渲染后的深度值多次渲染所述半透明要素,结合每次渲染所述半透明要素得到的颜色值、透明度和最后一次渲染所述半透明要素时的深度值计算半透明要素渲染的初始颜色值和初始透明度;

6、结合所述初始颜色值、初始透明度和半透明要素渲染过程中的背景颜色值、背景透明度,计算半透明要素渲染的最终颜色值和最终透明度;

7、输出不透明要素渲染后的结果和半透明要素渲染后的结果,得到最终的渲染画面。

8、在本发明的一个实施例中,渲染所述不透明要素,记录不透明要素渲染后的颜色值和深度值,包括:

9、创建用于不透明要素渲染的帧缓冲对象,创建不透明要素渲染的纹理一和不透明要素渲染的纹理二并与所述不透明要素渲染的帧缓冲对象关联;

10、打开深度测试和深度写入,渲染当前相机视锥体内所有的不透明要素,将渲染后的颜色值记录到所述不透明要素渲染的纹理一中,将渲染后的深度值记录到所述不透明要素渲染的纹理二中。

11、在本发明的一个实施例中,所述渲染当前相机视锥体内所有的不透明要素时,使用距离相机近的要素数据遮盖距离远的要素数据。

12、在本发明的一个实施例中,所述根据不透明要素渲染后的深度值多次渲染所述半透明要素,具体为:根据不透明要素渲染后的深度值对所述半透明要素进行三次渲染;

13、所述结合每次渲染所述半透明要素得到的颜色值、透明度和最后一次渲染所述半透明要素时的深度值计算半透明要素渲染的初始颜色值和初始透明度,具体为:结合第一次半透明要素渲染后的透明度、第二次半透明要素渲染后的颜色值和透明度、第三次半透明要素渲染后半透明要素的对应深度最小的片元的颜色值和透明度,计算半透明要素渲染的初始颜色值和初始透明度。

14、在本发明的一个实施例中,所述半透明要素渲染的初始颜色值和初始透明度的计算方法为:

15、,

16、;

17、其中,为所述初始颜色值,为所述初始透明度, t是根据第二次半透明要素渲染后的颜色值得到的颜色累加值, g是根据第二次半透明要素渲染后的透明度得到的透明度累加值,是第三次半透明要素渲染后半透明要素的对应深度值最小的片元的透明度,是第三次半透明要素渲染后半透明要素的对应深度值最小的片元的颜色值, p是根据第一次半透明要素渲染后的透明度得到的取反累乘值。

18、在本发明的一个实施例中,所述根据第一次半透明要素渲染后的透明度得到的取反累乘值 p的计算方法为:

19、,

20、其中, n是半透明要素的总数,是第 i个半透明要素渲染到屏幕上的对应片元的透明度。

21、在本发明的一个实施例中,所述根据不透明要素渲染后的深度值对所述半透明要素进行三次渲染,具体为:

22、创建用于第一次半透明要素渲染的帧缓冲对象,创建第一次半透明要素渲染的纹理一和第一次半透明要素渲染的纹理二并与所述第一次半透明要素渲染的帧缓冲对象关联;打开深度测试并关闭深度写入,使用颜色混合的方法第一次渲染当前相机视锥体内所有的半透明要素,将第一次渲染后的半透明要素的颜色值记录到所述第一次半透明要素渲染的纹理一中,将不透明要素渲染后的深度值记录到所述第一次半透明要素渲染的纹理二中;

23、创建用于第二次半透明要素渲染的帧缓冲对象,创建第二次半透明要素渲染的纹理一和第二次半透明要素渲染的纹理二并与所述第二次半透明要素渲染的帧缓冲对象关联;打开深度测试并关闭深度写入,使用颜色混合的方法第二次渲染当前相机视锥体内所有的半透明要素,将第二次渲染后的半透明要素的颜色值记录到所述第二次半透明要素渲染的纹理一中,将不透明要素渲染后的深度值记录到所述第二次半透明要素渲染的纹理二中;

24、创建用于第三次半透明要素渲染的帧缓冲对象,创建第三次半透明要素渲染的纹理一和第三次半透明要素渲染的纹理二并与所述第三次半透明要素渲染的帧缓冲对象关联;打开深度测试和深度写入,使用目标颜色第三次渲染当前相机视锥体内所有的半透明要素,将第三次渲染后的半透明要素的对应深度值最小的片元的颜色值记录到所述第三次半透明要素渲染的纹理一中,将第三次渲染后的半透明要素的对应深度值最小的片元的深度值记录到所述第三次半透明要素渲染的纹理二中。

25、在本发明的一个实施例中,所述使用颜色混合的方法第一次渲染当前相机视锥体内所有的半透明要素,具体为:

26、第一次渲染后的半透明要素的颜色值的计算方法为:

27、,

28、其中,为第 i个半透明要素第一次渲染后渲染到屏幕上的对应片元的颜色值,是第一次渲染时第 i个半透明要素对应的源颜色值,是第一次渲染时目标片元的新颜色值,是第一次渲染时第 i个半透明要素对应的乘数因子,是第一次渲染时第 i个半透明要素对应的目标片元的乘数因子,是结合操作;

29、第一次渲染后的半透明要素的透明度的计算方法为:

30、,

31、其中,是第 i个半透明要素第一次渲染后渲染到屏幕上的对应片元的透明度,是第一次渲染时第 i个半透明要素对应的源透明度,是第一次渲染时第 i个半透明要素对应的目标片元的新透明度。

32、在本发明的一个实施例中,所述半透明要素渲染的最终颜色值和最终透明度的计算方法为:

33、,

34、;

35、其中,为半透明要素渲染后的所述最终颜色值,为半透明要素渲染后的所述最终透明度,为所述初始颜色值,为所述初始透明度,为半透明要素渲染过程中的所述背景颜色值,为半透明要素渲染过程中的所述背景透明度。

36、本发明还公开了一种面向互联网三维地图的顺序无关透明渲染系统,包括:

37、数据获取模块,用于获取互联网三维地图数据,将所述互联网三维地图数据分为不透明要素和半透明要素;

38、不透明要素渲染模块,用于渲染所述不透明要素,记录不透明要素渲染后的颜色值和深度值,所述颜色值包含透明度;

39、半透明要素渲染模块,用于根据不透明要素渲染后的深度值多次渲染所述半透明要素,结合每次渲染所述半透明要素得到的颜色值、透明度和最后一次渲染所述半透明要素时的深度值计算半透明要素渲染的初始颜色值和初始透明度;结合所述初始颜色值、初始透明度和半透明要素渲染过程中的背景颜色值、背景透明度,计算半透明要素渲染的最终颜色值和最终透明度;

40、输出模块,用于输出不透明要素渲染后的结果和半透明要素渲染后的结果,得到最终的渲染画面。

41、本发明的上述技术方案相比现有技术具有以下优点:

42、本发明通过划分不透明要素和半透明要素,先渲染不透明要素再根据不透明要素的渲染结果对半透明要素进行多次渲染,是一种顺序无关的渲染方法,有效降低了渲染过程中的性能消耗;同时,本发明在半透明要素渲染时考虑了最近一层的渲染结果,从而保证半透明要素的正确渲染,保证了三维场景中空间层次关系的正确,实现了性能和渲染效果的兼顾。

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