一种基于GPU的气象数据体绘制方法与流程

文档序号:22191185发布日期:2020-09-11 22:04阅读:299来源:国知局
一种基于GPU的气象数据体绘制方法与流程

本发明涉及气象数据绘制领域,具体涉及一种基于gpu的气象数据体绘制方法。



背景技术:

近年来,诸如googleearth、osgearth、worldwind和cesium等虚拟地球的出现,让我们能够将可视化从二维转到三维世界。这种转变对气候数据可视化来说特别重要,因为气候数据本身是空间+时间的多维的数据。因此,结合使用3d数字地球仪进行数据可视化有助于理解气候的空间动态的格局。然而,当前大多数工具均为clientserver(cs),即以独立的应用程序开发。另外,全球网络不断增长及各研究组之间协作的不断增长,通过web进行协作远程可视化解决方案变得越来越重要。而cs版方案极大的限制了以这种web端进行气象可视化展示媒介传播方式的发展。



技术实现要素:

针对现有技术中的上述不足,本发明提供的一种基于gpu的气象数据体绘制方法实现了基于cesium进行气象数据体绘制的方法,解决了现有方案不能实现气象数据在web进行远程协作可视化的问题。

为了达到上述发明目的,本发明采用的技术方案为:

提供一种基于gpu的气象数据体绘制方法,其包括以下步骤:

s1、在客户端上获取服务器的气象体数据;

s2、通过客户端的webworker从获取的气象体数据中提取目标参数的数据及位置信息,得到目标数据,并将目标数据传输至客户端的主线程;

s3、通过客户端的主线程将目标参数的位置信息转换为球体坐标,通过球体坐标插值计算得到待绘制体纹理的纹理坐标;

s4、通过客户端的主线程以纹理坐标和几何体对应为标准,采用球面包围盒作为待绘制体纹理的载体;

s5、通过客户端的主线程以纹理坐标为媒介,在片段着色器中对色带进行采样,得到纹理坐标对应的颜色值和透明度;

s6、通过客户端的主线程由视点向球面包围盒发射射线,在射线穿越球面包围盒的过程中进行等距采样,获取采样点的颜色值和透明度;

s7、对于每个采样点,通过客户端的主线程将其所在射线中位于该采样点之前的所有采样点的颜色值和透明度分别进行合成和累加,将颜色值合成结果和透明度累加结果分别作为该采样点所在体素点的颜色值和透明度,完成气象数据体绘制。

进一步地,步骤s2中的目标参数包括:温度、相对湿度、速度和压力。

进一步地,步骤s2中目标参数的位置信息包括:经度、纬度和海拔高度。

进一步地,步骤s2中将目标数据传输至客户端的主线程的具体方法为:

通过客户端的webworker将目标数据转化为arraybuffer类型化数组,并采用可传输对象功能将类型化数组传输至客户端的主线程。

进一步地,步骤s3的具体方法包括以下子步骤:

s3-1、通过客户端的主线程根据公式:

将目标参数位置信息从wgs84坐标系转换到笛卡尔空间直角坐标系,得到笛卡尔空间直角坐标系下的目标参数位置信息(x,y,z);其中lat、lon、r和h分别为目标参数的纬度、经度、地球半径、海拔高度;

s3-2、根据公式:

将笛卡尔空间直角坐标系下的目标参数位置信息转换到球体坐标中,得到球体坐标下的目标参数位置信息(lon',lat',r');其中lon'、lat'和r'分别为目标参数在球体坐标下的经度、纬度和半径;

s3-3、根据公式:

对球体坐标下的目标参数位置信息进行插值,得到纹理坐标(u,v,w);其中(lon0,lat0,r0)和(lon1,lat1,r1)分别为目标参数的计算范围的最小点和最大点。

进一步地,步骤s6中在射线穿越球面包围盒的过程中进行等距采样的具体方法包括以下子步骤:

s6-1、剔除球面包围盒中深度值大于第一阈值的片段,渲染第一场景深度图,得到每个方向上离视点最近的点,其中该点的颜色值表示该点到视点的距离;

s6-2、剔除球面包围盒中深度值小于第二阈值的片段,渲染第二场景深度图,得到每个方向上离视点最远的点,其中该点的颜色值表示该点到视点的距离;

s6-3、将第二场景深度图和第一场景深度图上的数据相减,得到射线在球面包围盒中的穿过长度;

s6-4、设置体素并将体素的八个相邻体素点作为预采样点,基于预采样点通过三线性插值法对体素内任何点进行属性插值计算,获取任何点的颜色值和透明度,进而获取射线在穿越球面包围盒的过程中所穿过的点的颜色值和透明度;

s6-5、设置采样步长,在穿越球面包围盒的过程中沿着射线选取采样点,并得到采样点的颜色值和透明度。

进一步地,步骤s7的具体方法为:

根据公式:

获取射线在穿过当前采样点后的颜色值cout和透明度αout,即该采样点所在体素点的颜色值和透明度,进而得到所有采样点所在体素点的颜色值和透明度,完成气象数据体绘制;其中cin为当前采样点之前的所有采样点的颜色合成值;αin为当前采样点之前的所有采样点的累加透明度;cnow为当前采样点的颜色值;αnow为当前采样点的透明度。

本发明的有益效果为:

1、本发明将多维气象体数据以体渲染方式进行动态直观展示,清晰动态的展示效果可以方便研究人员洞察分析数据背后的规律。

2、所有用户均从服务器端下载数据并进行可视化,当用户向服务器上传数据时,即可将本地数据分发至各地客户端,实现全球异地协同交互可视化。

3、本发明采用webworker进行数据的获取与预处理,使渲染线程和数据预处理线程分离并进行异步通信,采用gpu渲染所获取的数据,可以有效规避因为网络传输延迟造成渲染卡顿。且多个客户端通过服务器传输新数据的同时,用户可以继续交互式可视化。

4、由于webworker和主线程之间不会共享内存,仅通过传递消息进行通信,本发明采用可传输对象功能用于webworker和主线程之间的数据传输,可以避免复制传递大文件时严重影响客户端性能和内存,保证客户端流畅且稳定的运行本方法。

附图说明

图1为本发明的流程示意图;

图2为球面包围盒作为待绘制体纹理的载体的示意图;

图3为纹理坐标对应的颜色值和透明度的效果灰度图;

图4为气象数据绘制完成后的效果灰度图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

如图1、图2、图3和图4所示,该基于gpu的气象数据体绘制方法包括以下步骤:

s1、在客户端上获取服务器的气象体数据;

s2、通过客户端的webworker从获取的气象体数据中提取目标参数的数据及位置信息,得到目标数据,并将目标数据传输至客户端的主线程;

s3、通过客户端的主线程将目标参数的位置信息转换为球体坐标,通过球体坐标插值计算得到待绘制体纹理的纹理坐标;

s4、通过客户端的主线程以纹理坐标和几何体对应为标准,采用球面包围盒作为待绘制体纹理的载体;

s5、通过客户端的主线程以纹理坐标为媒介,在片段着色器中对色带进行采样,得到纹理坐标对应的颜色值和透明度;

s6、通过客户端的主线程由视点向球面包围盒发射射线,在射线穿越球面包围盒的过程中进行等距采样,获取采样点的颜色值和透明度;

s7、对于每个采样点,通过客户端的主线程将其所在射线中位于该采样点之前的所有采样点的颜色值和透明度分别进行合成和累加,将颜色值合成结果和透明度累加结果分别作为该采样点所在体素点的颜色值和透明度,完成气象数据体绘制。

步骤s2中的目标参数包括:温度、相对湿度、速度和压力。步骤s2中目标参数的位置信息包括:经度、纬度和海拔高度。步骤s2中将目标数据传输至客户端的主线程的具体方法为:通过客户端的webworker将目标数据转化为arraybuffer类型化数组,并采用可传输对象功能将类型化数组传输至客户端的主线程。

步骤s3的具体方法包括以下子步骤:

s3-1、通过客户端的主线程根据公式:

将目标参数位置信息从wgs84坐标系转换到笛卡尔空间直角坐标系,得到笛卡尔空间直角坐标系下的目标参数位置信息(x,y,z);其中lat、lon、r和h分别为目标参数的纬度、经度、地球半径、海拔高度;

s3-2、根据公式:

将笛卡尔空间直角坐标系下的目标参数位置信息转换到球体坐标中,得到球体坐标下的目标参数位置信息(lon',lat',r');其中lon'、lat'和r'分别为目标参数在球体坐标下的经度、纬度和半径;

s3-3、根据公式:

对球体坐标下的目标参数位置信息进行插值,得到纹理坐标(u,v,w);其中(lon0,lat0,r0)和(lon1,lat1,r1)分别为目标参数的计算范围的最小点和最大点。

步骤s6中在射线穿越球面包围盒的过程中进行等距采样的具体方法包括以下子步骤:

s6-1、剔除球面包围盒中深度值大于第一阈值的片段,渲染第一场景深度图,得到每个方向上离视点最近的点,其中该点的颜色值表示该点到视点的距离;

s6-2、剔除球面包围盒中深度值小于第二阈值的片段,渲染第二场景深度图,得到每个方向上离视点最远的点,其中该点的颜色值表示该点到视点的距离;

s6-3、将第二场景深度图和第一场景深度图上的数据相减,得到射线在球面包围盒中的穿过长度;

s6-4、设置体素并将体素的八个相邻体素点作为预采样点,基于预采样点通过三线性插值法对体素内任何点进行属性插值计算,获取任何点的颜色值和透明度,进而获取射线在穿越球面包围盒的过程中所穿过的点的颜色值和透明度;

s6-5、设置采样步长,在穿越球面包围盒的过程中沿着射线选取采样点,并得到采样点的颜色值和透明度。

步骤s7的具体方法为:根据公式:

获取射线在穿过当前采样点后的颜色值cout和透明度αout,即该采样点所在体素点的颜色值和透明度,进而得到所有采样点所在体素点的颜色值和透明度,完成气象数据体绘制;其中cin为当前采样点之前的所有采样点的颜色合成值;αin为当前采样点之前的所有采样点的累加透明度;cnow为当前采样点的颜色值;αnow为当前采样点的透明度。

在本发明的一个实施例中,纹理坐标介于[0-1],对于超出纹理坐标范围的数据可以直接进行剔除操作;当采样点的透明度超过一定阈值时,将不再进行合成操作,可以提高绘制效率。所有用户均从服务器端下载数据并进行可视化,当用户向服务器上传数据时,即可将本地数据分发至各地客户端,实现全球异地协同交互可视化。

综上所述,本发明采用webworker进行数据的获取与预处理,使渲染线程和数据预处理线程分离并进行异步通信,采用gpu渲染所获取的数据,有效规避因为网络传输延迟造成渲染卡顿。且多个客户端通过服务器传输新数据的同时,用户可以继续交互式可视化。

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