一种基于GPU进行超高效绘制GIS空间三维体素数据的方法技术

技术编号:29678399 阅读:19 留言:0更新日期:2021-08-13 22:01
本发明专利技术提供的一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,包括:创建一个与体素要表达的真实场数据范围大小一样的数值边长的体素立方体,并运用GPU对体素进行采样,得到真实场数据中的采样数据;创建正面帧缓存,利用采样数据绘制体素立方体的正面,使用非常规方法将正面深度数据保存到正面帧缓存中;创建背面帧缓存,利用采样数据绘制体素立方体的背面,使用非常规方法将背面深度数据保存到背面帧缓存中;创建体素渲染的后处理过程,在其片元着色器中,获取之前的正面和背面两个帧缓存中保存的深度数据,沿当前视线进行步进采样,完成体素立方体的绘制与显示。本发明专利技术的有益效果是:解决了体素立方体绘制过程中的遮挡问题,提高绘制效率。

【技术实现步骤摘要】
一种基于GPU进行超高效绘制GIS空间三维体素数据的方法
本专利技术涉及三维体数据处理领域,尤其涉及一种基于GPU进行超高效绘制GIS空间三维体素数据的方法。
技术介绍
近年,越来越多的GIS厂商使用三维体素图层来表示多维空间和时间信息。例如:ArcGisPro将大气或海洋数据、地下地质模型或时空立方体作为三维体素图层进行可视化,在应用中展现出更直观、更准确的分析结果。当前的三维体素的渲染技术,主要有光线投射法(RayCasting)、剪切曲变法(Shear-Warp)、最大强度投影算法(MaximumIntensityProjection)、抛雪球法(Splatting)和物体空间扫描绘制法,其中又以光线投射算法最为重要和通用。光线投射算法是一种基于图像序列的直接体绘制算法。这种算法的基本思想是:从图像的每一个像素,沿固定方向(通常是视线方向)发射一条光线,光线穿越整个图像序列,并在这个过程中,对图像序列进行采样获取颜色信息进行累加,直至光线穿越整个图像序列,最后得到渲染的颜色。传统的基于GPU的光线投射算法的实现思路:首先,创建一个边长为1的体素立方体,借助这个立方体,在剪切空间坐标系使用GPU进行体素采样。其次,开启深度检测,在剪切空间使用帧缓存技术,分别绘制体素立方体的正面和背面(在绘制背面时,需要启用前向面剔除功能),缓存其正面和背面深度数据。使用直接渲染方法,将正面深度数据和背面深度数据直接传入片元着色器,在片元着色器中,沿视线方向,从正面深度位置,以特定的步长,多次采样体素数据,直至背面深度位置中止,绘制体素立方体,送达显示。这种方法实际上进行了三次绘制。但是前两次绘制的速度很快,而第三次绘制时由于不需要再判断光线上的各个点是否在长方体内,其运算速度也较快。当体素数据量的较多(GIS应用中体素信息)、采样步长较小,其绘制速度会显著下降。
技术实现思路
本专利技术提供的一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,该方法主要解决以下技术问题:(1)解决当体素立方体的正面完全(或部分)在视点之后时,显示结果不正确的问题。(2)解决当体素立方体的背面完全(或部分)被场景中其他物体遮挡后,显示结果不正确的问题。(3)解决体素数据量较大、采样步长较小时的绘制效率较慢的问题。一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,包括以下步骤:S101:创建一个与体素要表达的真实场数据范围大小一样的数值边长的体素立方体,并运用GPU对体素进行采样,得到真实场数据中的采样数据;S102:创建正面帧缓存,利用采样数据绘制体素立方体的正面,使用非常规方法将正面深度数据保存到正面帧缓存中;S103:创建背面帧缓存,利用采样数据绘制体素立方体的背面,使用非常规方法将背面深度数据保存到背面帧缓存中;S104:创建体素渲染的后处理过程,在其片元着色器中,获取之前的正面和背面两个帧缓存中保存的深度数据,沿当前视线进行步进采样,完成体素立方体的绘制与显示。进一步地,步骤S101中的采样数据包括:实际场景深度数据、体素立方体的正面深度数据和体素立方体的背面深度数据。进一步地,步骤S102和步骤S103中,创建和使用正面帧缓存和背面帧缓存时,均关闭深度检测功能。进一步地,步骤S102~步骤S103中所述的正面深度数据和背面深度数据,其取值范围为正负50000米之间的任意值。步骤S104中,沿当前视线采样时,还依据实际场景深度值判断是否提前结束绘制。本专利技术提供的有益效果是:(1)修正了“当体素立方体的正面完全(或部分)在视点之后”的情况下绘制结果错误问题。(2)修正了“当体素立方体的背面完全(或部分)被场景中其他物体遮挡”的情况下绘制结果错误的问题。(3)提升了“当体素数据量较大、采样步长较小时”的情况下的绘制效率。附图说明图1是本专利技术一种基于GPU进行超高效绘制GIS空间三维体素数据的方法的流程图;图2是传统基于GPU光线投影方法创建体素立方体的示意图;图3是体素立方体的正面完全(或部分)在视点之后的情况;图4是体素立方体的背面完全(或部分)被场景中其他物体遮挡的情况;图5是传统方法记录的深度数据示意图;图6是绘制体素立方体的过程示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地描述。请参考图1,一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,包括以下步骤:S101:创建一个与体素要表达的真实场数据范围大小一样的数值边长的体素立方体,并运用GPU进行体素采样,得到真实场数据中的采样数据;步骤S101中运用GPU进行体素采样的过程,基于世界坐标系进行。步骤S101中的采样数据包括:实际场景深度数据、体素立方体正面深度数据和体素立方体背面深度数据。在实际采样过程中,采样数据还包括:要表达的真实的场数据的待采样数据,这部分数据包括:天气质量、风力、光照强度等,但与本方法核心无较强关联性。为了更好诠释本申请与传统方法的不同之处,本专利技术先解释传统方法在创建体素立方体时的具体过程:请参考图2,图2是传统基于GPU光线投影方法创建体素立方体的示意图。图2中的立方体,即为传统方法创建的体素立方体,边长为1,其完整的被包含在剪切空间坐标系中,即图中近平面和远平面之间,视点位于近平面之前;在图2所示的这种情况中,能够完整的绘制出体素立方体。但是,如果体素立方体不能完整的被包含在剪切空间中,即当仅有一部分的体素立方体被包含于剪切空间内时,则会出现如图3和图4的情况。请参考图3,图3是体素立方体的正面完全(或部分)在视点之后的情况(被近平面截断)。图3上半部分为现有传统技术的处理结果,在当前情形下,体素立方体的最左边的角部的正面部分,由于超出近平面而被裁切,而体素的背面被图形管线剔除,因此,被近平面裁切部分无任何体素立方体的片元被光栅化。造成这个区域形成了一个三角形孔洞(如图3右侧),如果仍然采用传统方法,会导致最终绘制结果不正确。请参考图4,图4是体素立方体的背面完全(或部分)在视点之后的情况(被远平面截断)。图4上半部分为现有传统技术的处理结果,在当前情况下,有部分的体素立方体伸入到了非透明物体的内部。由于体素立方体是独立绘制,所以,在传统方法的绘制过程中,并没知道其采样线段有一部分无效(进入到非透明物理内部,视线被遮挡而阻断),因此,采样会继续,直至碰到体素立方体的背面中止,造成增加了多余的采样,导致最终绘制结果错误。这里总结传统方法的两个特点:(1)基于剪切空间坐标系采样,体素立方体边长只能为1;(2)在采样过程中,不能实时获取实际场景中的其它模型数据,无法解决体素立方体绘制过程中的遮挡问题。本专利技术中,创建体素立方体对应本文档来自技高网
...

【技术保护点】
1.一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,其特征在于:包括以下步骤:/nS101:创建一个与体素要表达的真实场数据范围大小一样的数值边长的体素立方体,并运用GPU对体素进行采样,得到真实场数据中的采样数据;/nS102:创建正面帧缓存,利用采样数据绘制体素立方体的正面,使用非常规方法将正面深度数据保存到正面帧缓存中;/nS103:创建背面帧缓存,利用采样数据绘制体素立方体的背面,使用非常规方法将背面深度数据保存到背面帧缓存中;/nS104:创建体素渲染的后处理过程,在其片元着色器中,获取之前的正面和背面两个帧缓存中保存的深度数据,沿当前视线进行步进采样,完成体素立方体的绘制与显示。/n

【技术特征摘要】
1.一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,其特征在于:包括以下步骤:
S101:创建一个与体素要表达的真实场数据范围大小一样的数值边长的体素立方体,并运用GPU对体素进行采样,得到真实场数据中的采样数据;
S102:创建正面帧缓存,利用采样数据绘制体素立方体的正面,使用非常规方法将正面深度数据保存到正面帧缓存中;
S103:创建背面帧缓存,利用采样数据绘制体素立方体的背面,使用非常规方法将背面深度数据保存到背面帧缓存中;
S104:创建体素渲染的后处理过程,在其片元着色器中,获取之前的正面和背面两个帧缓存中保存的深度数据,沿当前视线进行步进采样,完成体素立方体的绘制与显示。


2.如权利要求1所述的一种基于GPU进行超高效绘制GIS空间三维体素数据的方法,其特征在于:步骤S101中运用GPU进行体素采样的过程,基于世界坐标系进行。

【专利技术属性】
技术研发人员:任康成池晶白文博冯德润沈雷沈文斐武永波余磊
申请(专利权)人:武大吉奥信息技术有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1