一种基于裂缝消除的三维虚拟地形LOD模型的生成方法与流程

文档序号:16253964发布日期:2018-12-12 00:17阅读:504来源:国知局
一种基于裂缝消除的三维虚拟地形LOD模型的生成方法与流程

本发明涉及三维gis技术领域,具体涉及一种基于裂缝消除的三维虚拟地形lod模型的生成方法。

背景技术

三维地形可视化是一种利用计算机技术再现三维世界中的地形,使其具有实时交互能力的一种可视化技术。该技术涉及到计算机图形学、地理信息科学,目前被广泛应用于各个领域中,包括军事作战系统、三维手游、数字城市等。

对于近年来海量数据的需求,考虑到现有计算机存储与运算能力的限制,通常采用lod技术对地形进行可视化。在lod技术中,由于相邻网格之间存在层次差,当高层次网格顶点处于低层次网格的边线上时,渲染过程中会出现地形不完整的情况,即为裂缝,如图1所示,图1表达了裂缝产生的原因,其中图a是地形的二维表达方式,可以看出相邻地形的交界处分辨率不一致,图b展示了地形的三维模型,在地形的交界处可以看出由于分辨率的原因,导致交界处产生了裂缝,这对于三维可视化技术来说是非常大的缺陷。

现有技术中,解决裂缝的方法主要分为裙边算法和顶点调整。裙边算法是为各层次所有网格添加垂直向下的包围体,从视觉上挡住裂缝,此种方法最终渲染的网格数大大增加,同时裙边的高度不好控制,太长会占用过多的纹理资源,太短无法达到裂缝消除的目的,此外在地形块分界处,由于裙边的存在会出现垂直的地形显示,因而与真实的地形会产生很大出入;顶点调整包含分裂较低层次网格和合并较高层次网格,该算法适用于相邻网格层次差<=1,同时需要cpu的实时配合计算,对于使用要求较高,适用范围有限,也不易推广。

因而,根据三维gis技术领域的高速发展,针对实际生产的需求,如何设计一种可以使得相邻地形块在交界处顶点重合,避免裂缝的产生,同时减少系统内存的占用率并减少系统响应时间的三维虚拟地形lod模型的生成方法,就变的尤为重要。



技术实现要素:

本发明正是为了克服现有技术中相邻地形块在交界处顶点无法重合,导致裂缝的问题,提供一种基于裂缝消除的三维虚拟地形lod模型的生成方法,网格数据传入gpu中转换成真实世界的坐标值后进行一定的位置调整,使得相邻地形块在交界处顶点重合,避免裂缝的产生,同时利用gpu的大规模并发计算能力,减少系统的响应时间。

为了实现上述目的,本发明采用的技术方案是:一种基于裂缝消除的三维虚拟地形lod模型的生成方法,包括如下步骤:

s1,获取以规则格网模型组织的地形高度图数据和纹理数据;

s2,基于自顶向下的规则根据地形到视点的距离实时生成三维网格;

s3,将所述三维网格根据数据调度规则存入gpu中,对传入的顶点进行调整运算后进行模型绘制。

作为本发明的一种改进,所述s2进一步包括:

s21,读取以规则格网模型组织的地形数据,包括地形高度图数据和纹理数据;

s22,根据所述地形数据以及当前视点的位置确定多分辨率三维地形模型的模型层数;

s23,根据模型层数以及视点位置确定当前地形分块大小,所述分块大小包括地形块在x方向的最大值和最小值,在y方向的最大值和最小值以及地形块的尺寸;

s24,根据模型层数,建立多层网格模型,包括最粗糙网格和最精细网格;

s25,根据所述模型层数和系统的最大可视距离,确定每一层级的可视距离,并建立每一层级的网格顶点变形区间;

作为本发明的一种改进,所述s25中每一层级的可视距离计算公式如下:

di=di-1+sect×2i

其中,di是可视距离,di-1是上一层级的可视距离,sect是可视距离的平均值,far是地形块到视点的最远距离,near是地形块到视点的最近距离。

作为本发明的又一种改进,所述步骤s25中每一层级的网格顶点变形区间包括每一层级地形块离视点的距离变化区间起始值start和地形块离视点的距离变化区间结束值end,所述起始值start和结束值end分别为:

endi=di;

starti=starti-1+(endi-starti-1)×ratio;

其中,ratio为变化系数,di为当前层级的可视距离;

作为本发明的另一种改进,所述步骤s3进一步包括:

s31,将地形高度图以纹理的方式存入gpu中;

s32,将当前地形块的层级,地形块在x方向上的最大值和最小值,y方向上的最大值和最小值,以及视点的位置传入gpu;

s33,根据当前地形块与视点的距离选择相应精度的网格模型,并将该网格模型存入gpu中;

s34,在gpu中将网格模型中的顶点转化成世界坐标系中的顶点,确定该顶点经过变更后的坐标值并绘制。

作为本发明的另一种改进,所述步骤s34中世界坐标顶点vertexx,vertexy的计算公式如下:

其中,clamp函数表示返回值需保持在0和1之前,若计算出的数据大于1,则返回1,若小于0,则返回0;frac函数表示取当前值的小数部分;griddim表示当前层级的精度;d为当前顶点到视点的距离,quadscale表示当前地形块在世界坐标系中的大小,vertexx、vertexy为输入的x、y坐标转换为世界坐标系后的值。

作为本发明的更进一步改进,所述griddim值为8,16或32。

与现有技术相比,本发明具有的技术优势是:

(1)在生成三维多分辨率网格的过程中,对其中的顶点进行适当调整,在相邻地形块交界处,高层级的顶点和低层级的顶点重合,及时相邻地形块之间存在层次差,渲染过程中也不会出此案地形不完整的情况,从根源处消除了裂缝。

(2)将地形高度图保存至gpu中,减少i/o次数,降低内存占用,节省时间。利用gpu的大规模并发计算能力,将一部分顶点变换的工作由cpu转换至gpu,充分利用gpu的大规模并发计算能力,。提高模型渲染绘制速度,减少系统的相应时间,降低cpu占用。

(3)在cpu中构建的三维网格模型,只需保存其尺寸以及在x方向和y方向上的最大值和最小值以及模型的尺寸而不需将所有的顶点数据都保存,大大减少了数据占用的内存,也减少了cpu与gpu之间数据的传递量。

附图说明

图1为裂缝产生的示意图,其中图1a为多层次地形的二维示意图;

图1b为多层次地形的三维示意图;

图2为本发明基于裂缝消除的三维虚拟地形lod模型的生成方法流程图;

图3为本发明实施例中大规模三维地形渲染后的效果图。

具体实施方式

以下将结合附图和实施例,对本发明进行较为详细的说明。

实施例1

一种基于裂缝消除的三维虚拟地形lod模型的生成方法,如图2所示,包括如下步骤:

s1,获取以规则格网模型组织的地形高度图数据和纹理数据;

s2,基于自顶向下的规则根据地形到视点的距离实时生成三维网格,根据内存和地形信息利用地形高度图数据生成多分辨率三维地形模型,进一步包括:

s21,读取以规则格网模型组织的地形数据,包括地形高度图数据和纹理数据;

s22,根据所述地形数据以及当前视点的位置确定多分辨率三维地形模型的模型层数;

s23,根据模型层数以及视点位置确定当前地形分块大小,所述分块大小包括地形块在x方向的最大值和最小值,在y方向的最大值和最小值以及地形块的尺寸;

s24,根据模型层数,建立多层网格模型,包括最粗糙网格和最精细网格;

s25,根据所述模型层数和系统的最大可视距离,确定每一层级的可视距离,并建立每一层级的网格顶点变形区间;所述每一层级的可视距离计算公式如下:

di=di-1+sect×2i

其中,di是可视距离,di-1是上一层级的可视距离,sect是可视距离的平均值,far是地形块到视点的最远距离,near是地形块到视点的最近距离,可取值为零;

所述每一层级的网格顶点变形区间包括每一层级地形块离视点的距离变化区间起始值start和地形块离视点的距离变化区间结束值end,起始值start和结束值end分别为:

endi=di;

starti=starti-1+(endi-starti-1)×ratio;

其中,ratio为变化系数,di为当前层级的可视距离;

对于规则格网数据,获取数据中行和列两者中的较大值max(row,col),根据地形高度图数据确定三维模型的最精细模型的精度和最粗糙模型的精度,每一层模型的数据尺寸控制在(2n+1)×(2n+1)。

处理地形按照分块lod原则,基于自顶向下对地形块划分。创建对象quadtree,该对象保存每一个地形块在x方向上的最大值和最小值,在y方向上的最大值和最小值以及当前地形块的大小quadscale。遍历当前所有地形块并创建vector容器保存所有quadtree对象。

遍历完当前所有地形块后建立多层网格模型,网格模型包含4种精度,包括8、16、32、64。对于其中第i行第j列的顶点,其x坐标为y坐标为griddim表示当前层级的精度,取8,16或32。为每一个地形块建立类似的网格模型,统一处理所有的数据,达到了以往算法中的实时生成网格的效果,同时可以调节每个地形块的精度。

根据所述模型层数和系统的最大可视距离,确定最长可视距离的平均值sect:

其中,far是地形块到视点的最远距离,near是地形块到视点的最近距离,一般取0,根据sect确定每一层级的可视距离d:

di=di-l+sect×2i

根据每一层级的可视距离,建立调整区域,确定每个顶点的开始调整位置和结束调整位置:

endi=di

starti=starti-1+(endi-starti-1)×ratio

其中,ratio为变化系数。在该实例中,每一层级的顶点只能在特定的距离内调整,该距离由start和end共同决定。

s3,将所述三维网格根据数据调度规则存入gpu中,对传入的顶点进行调整运算后进行模型绘制;

s31,将地形高度图以纹理的方式存入gpu中;

s32,将当前地形块的层级,地形块在x方向上的最大值和最小值,y方向上的最大值和最小值,以及视点的位置传入gpu;

s33,根据当前地形块与视点的距离选择相应精度的网格模型,并将该网格模型存入gpu中;

s34,在gpu中将网格模型中的顶点转化成世界坐标系中的顶点,确定该顶点经过变更后的坐标值并绘制;

将读取的地形高度图保存至gpu中,既减少了内外存交互的次数,同时在绘制时可以直接从gpu中获取高度数据,降低了内存运算的复杂度。在地形绘制的过程中,没有按照传统四叉树模型的绘制方法,而是对地形块中的所有顶点进行了适当的调整,在相邻网格交界处实现了平滑的过渡,此外,由于高精度地形块比低精度地形块离视点更近,因此高精度地形块的顶点在交界处逐渐调整到和低精度地形块重合,从根源处消除裂缝。

所述世界坐标顶点vertexx,vertexy的计算公式如下:

其中,clamp函数表示返回值需保持在0和1之前,若计算出的数据大于1,则返回1,若小于0,则返回0;frac函数表示取当前值的小数部分;griddim表示当前层级的精度,可选择8,16或32;d为当前顶点到视点的距离,quadscale表示当前地形块在世界坐标系中的大小,vertexx、vertexy为输入的x、y坐标转换为世界坐标系后的值。

通过上述将网格中的大部分顶点进行了调整,使其相对于原来的坐标产生了一定的偏移,在地形块的边界处,网格中的顶点实现了从高精度向低精度的平滑过渡。同时,裂缝的产生是由于相邻网格中高精度地形块的顶点位于低精度地形块的边线上,经过本发明中的方法,造成裂缝的顶点和低精度地形块中的顶点重合,因而消除了裂缝。

为了说明本发明中算法的有效性,本发明专利选取云南某县地形数据进行相关实验,图3即为本算法的效果图。从图3中可以看出,同一地形块中,随着顶点离视点的距离越来越远,其相对于原来位置的偏移量也越来越大,直到它与相邻层级的某个顶点重合。由于高精度地形块的顶点逐渐偏移,在地形的交界处,两个相邻地形块的顶点完全重合,从根源处解决了当前多分辨率地形中存在的裂缝问题,同时不需要控制相邻地形块之间的层次差不能超过1。

在上述实例中,大部分数据计算过程在gpu中进行,考虑到gpu的计算能力高于cpu,实时生成多分辨率模型的时间复杂度在可接受范围内,大规模三维地形渲染时帧与帧之间的切换比较流畅,没有因为数据量的增加导致帧速率的下降。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实例的限制,上述实例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。

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