地图可视化 | 百度前端工程师教你如何在地图上实现炫光可视化效果
大家好,这里是《地图可视化》栏目第三期。前两期我们从产品应用视角为大家带来了:
本期我们邀请了百度地图前端工程师,从技术视角出发,教大家如何在地图上实现炫光可视化效果。在三维可视化中,尤其是海量大数据的地理三维可视化中,我们通常会遇到下面这些问题:
1. 数据量太大,重点不能很好地凸现出来;2. 效果平淡,不够炫酷。为了解决上述问题,MapVGL提供了后处理效果。
什么是后处理效果
而接下来,我们就介绍一下Bloom这种后处理效果,Bloom又称“炫光”效果的制作过程。
离屏渲染
后处理效果
为了让你更好地理解后处理强大的美颜效果,我们先举一个最简单的后处理效果的例子,假如你创建了一个如下的3D场景:
void main(){
FragColor =vec4(vec3(1.0-texture(Sampler2D, TexCoords)),1.0);
}
仅仅1行代码,就能将上面的场景的颜色变反相,很酷吧!
炫光效果
炫光效果用来突出表现很亮的颜色,因为传统的 RGB 只能表现0 - 255范围的颜色,所以对于超出这个范围特别亮的颜色,会通过高光溢出的特效去表现,使我们感觉到物体真的有种明亮的感觉。
首先我们先拷贝一张原图待用,然后在另一个帧缓冲中把原图中亮度超过阈值的部分提取出来。
传统的高斯模糊算法是二次高斯模糊,即进行一次权重为10的模糊,我们需要进行10*10=100次采样,而这个采样过程恰好也还挺消耗性能的。好在高斯方程可以允许我们把二维方程分解成2个一次方程,一个描述水平权重,另一个描述垂直权重。这样我们只需要增加一次帧缓冲绘制,就能实现两步高斯模糊,将采样次数降为10+10=20次,大大节省了性能。进行模糊后的图像如下:
还记得我们在第一步中保存了一张原图吗?现在我们把上面模糊过的图像叠加到第一步中保存的原图上,就完成了我们的炫光效果。
应用场景
在地理时空大数据分析应用中,Bloom效果可以让大数据更直观呈现,帮助我们快速发现数据价值。那么,这些效果能具体应用到哪些工作场景呢?
此外,Bloom效果也可被应用于大屏可视化产品中。(点击查看更多大屏效果)
往期推荐: