基于保持边界的计算机三维地形网格的绘制方法

文档序号:6377469阅读:268来源:国知局
专利名称:基于保持边界的计算机三维地形网格的绘制方法
技术领域
本发明涉及计算机三维图形绘制辅助设计领域,尤其涉及一种适合于大范围地形场景实时绘制的基于保持边界的计算机三维地形网格的绘制方法。
背景技术
实时可交互地渲染带有大范围地形的户外场景一直是计算机图形学中的一项重要挑战,广泛应用在模拟飞行、虚拟战场、三维游戏等虚拟现实系统中。但实时地形绘制的工作负荷很大,尤其是涉及范围较广、逼真度较高的数据。为减轻工作负荷,目前主要有两种方法一种是层次细节(level of details, LoD)技术,另一种是地形数据分块技术。
LoD的基本思想是在不影响视觉效果的前提下,通过简化模型、降低需要绘制的三角面片数量,达到减轻硬件负担、加速绘制的目的。LoD技术主要分面向CPU设计与面向GPU 设计这两种实现方式。
面向CPU设计的LoD方法通常是在显示运行时,依靠CPU计算能力对模型的三角面片等底层基本图元进行细化或者简化操作,从而获得在当前视觉条件下最合适的网格模型进行绘制。面向CPU设计的LoD有两种典型的实现算法一种是Lindstrom在1996 年《Real-time, continuous level of detail rendering of height fields》一文中提出的基于四叉树的地形渲染算法,他将所有顶点数据自底向上地组织成四叉树三角网,根据与视点的远近关系逐层简化网格;另一种是Duchaineau在1997年《ROAMing terrain real-time optimally adapting meshes))一文中提出的基于三角形二叉树的ROAM算法,并引入三角形分裂和合并两个优先队列来控制算法的执行效率,是应用较广泛的一种算法。 但面向CPU的LoD方法由于操作过于底层和精细,需要耗费大量CPU计算资源,而且这些算法更着重对一整块地形进行视相关多分辨率优化,对地形块内的裂缝采用顶点依赖关系进行修补,但没有对多块地形之间的边界裂缝避免进行阐述,这是面向CPU的LoD方法两大缺陷。
面向GPU的LoD算法将简化和细化的操作转移到GPU上,同时操作粒度由基本图元上升到批量图元集合,在运行时对模型进行粗粒度优化,充分发挥了 GPU的并行处理和高效计算倉泛力。Boer 在〈〈Fast terrain rendering using geometrical mipmapping))—— 文中提出著名的Geometrical Mipmapping方法,将地形块如同图片一样进行分级采样,形成金字塔状LoD结构用作切换,并通过改变边界点的连接方式来填补不同LoD级别地形块间的裂缝。Boer的方法思想简单易行,但Mipmapping是均勻采样,各处简化程度一致,导致粗略模型误差较大,而且实际运行时需要监视所有在显示地形块级别并不断调整边界连接方式,占用 CPU 资源。Ulrich 在 2002 年《Rendering massive terrains using chunked level of detail control))一文中描述了 ChunkLoD的方法,基本思想是对每个地形块进行预处理,根据视相关条件和误差阈值在地形块内预生成不同精度等级的瓦片,显示时根据视觉信息在这些瓦片间切换,另外给这些瓦片加上垂直裙边,这样无论是地形块内还是块间裂缝都可以被遮掩。ChunkLoD是GPU友好的批处理LoD算法,但最大的缺点是遮掩裂缝用的垂直裙边会造成几何以及纹理空间的不连贯,影响视觉效果。Hao在2007年《A method for terrain rendering real-time based on two-level model》一文中米用了高精度规则格网和简化不规则三角网相结合的地形显示方式,而用图像空间融合方法掩饰裂缝,实际上并没有真正填补裂缝问题。从上面看出,面向GPU的LoD方法平衡了 CPU与GPU的负载,但无法或不便在图元层面上精确修补裂缝,更多是简单地弥补或掩饰,影响视觉效果。
地形数据分块是应对数据量规模过大,不适合一次性完全加载到内存而采取的策略,基本思路是将大地形数据分成大小适中的块,运行时只加载视点邻近相关范围的地形块用于显示。分块思想不仅减轻了计算机硬件的压力,在实际运行时也因为可以有次序地分批处理显得灵活方便。在上一段分析面向GPU的LoD方法时,地形分块思想已经体现在了诸如Mipmapping、ChunkLoD等方法中。分块的最大问题就是如何处理不同地形块间因为精细程度不同而产生的裂缝,上文中也提及了相应措施,总的来说,都因为无法精确修补而影响视觉效果。
为使LoD技术与地形分块思想更好地结合,克服占用计算资源和精确修补裂缝两者之间的矛盾,本发明提供了一种计算机三维地形网格的绘制方法,使大范围地形场景中的地形显示在保证高效流畅的同时也具有很好的视觉效果。发明内容
(一 )要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种保证大范围地形场景平滑流畅显示, 基于保持边界思想的地形网格简化与组织的方法。
(二)技术方案
为达到上述目的,本发明提供了一种计算机三维地形网格的绘制方法,包括对数字高程模型进行重采样生成地形规则网格数据;将地形规则网格数据转换为网格简化辅助信息;利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化;将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果
I、本发明提供的这种计算机三维地形网格的绘制方法,是基于保持边界的思想来避免块间裂缝问题的,以此方法形成的地形无论处于什么精度等级,都能保持边界在几何与纹理空间的一致性,从而在显示时不用耗费额外计算资源去做裂缝修补工作。
2、本发明提供的这种计算机三维地形网格的绘制方法,是基于不规则边折叠简化的思想进行网格简化的,一方面不规则的简化方式可以用更少的顶点构成地形,减少数据量,另一方面选择好的边折叠简化规则可以更大限度地保留地形特征,降低简化误差。
3、本发明提供的这种计算机三维地形网格的绘制方法,是基于层次结构表示方法来组织地形格式的,层次结构表示方法能够支持面向GPU的LoD算法,即方便对图元集合进行批量操作,有利于快速绘制大范围地形场景。


图I为依照本发明实施例的计算机三维地形网格的绘制方法流程图2为依照本发明实施例的地形规则网格的行列坐标与顶点经纬度的示意图3为依照本发明实施例的由地形规则网格中一点映射到数字高程模型中对应位置的示意图4为依照本发明实施例的地形规则网格的三维坐标系统的示意图5为依照本发明实施例的地形规则网格的三角面片顶点索引数组的存储方式示意图6为依照本发明实施例的计算边折叠代价时两点间的曲率量几何意义示意图7为依照本发明实施例的按照层次结构表示方法组织的地形格式的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图I所示,图I为依照本发明实施例的计算机三维地形网格的绘制方法流程图, 主要步骤包括
步骤101、对数字高程模型进行重采样生成地形规则网格数据;
步骤102、将地形规则网格数据转换为网格简化辅助信息;
步骤103、利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化;
步骤104、将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式。
步骤101所述的重采样过程具体如下
第一,确定规则网格顶点的数目。通常规则网格一边的定点数取为2n+l(n = 6或 7)最为合适,因此顶点总数目VertNum = (2η+1)2,分配顶点三维坐标数组的存储空间为 VertPos [VertNum], VertPos []每一项为 Vector3 类型,Vector3 类型的结构如下
struct Vector3{float x, y, z}.
第二,确定每个顶点的经纬度。如图2所示,假设生成规则网格的左下角经纬度为 llLong、IlLat,右上角经纟韦度为ruLong、ruLat,则可以认为网格内任一点v(c, r) (O ( c, r ( 2n+l)的经讳度vLong、vLat分别是
stepLong = (ruLong-llLong)/(VertNum-I);
vLong = llLong+c*stepLong ;
stepLat= (ruLat-llLat) / (VertNum-I);
vLat = IlLat+r*stepLat.
第三,根据每个顶点的经纬度,将顶点映射到数字高程模型中的对应位置。如图3 所示,假设数字高程模型有Nr行Ne列数据,左下角经纬度分别为demllL0ng、demllLat,采样间隔弧度为cellsize。则从规则网格的点V映射到数字高程模型中的点v’,其行列坐标计算方法为
cd= (vLong-demllLong)/cellsize ;
rd = (vLat-demllLat)/cellsize.
此时,cd、rd不一定是整数。
第四,找出数字高程模型中与上述位置最近的四个高程数据,使用双线性插值计算得出结果,作为规则网格中对应顶点的高度值。仍如图3所示,与V’最接近的四个高程数据以及它们的坐标分别为
hll (floor (cd), floor (rd));
hlu (floor (cd), floor (rd) +1);
hru (floor (cd) +1, floor (rd) +1);
hr I (floor (cd) +1,floor (rd)).
因此使用双线性插值计算点V的高度y为
hi = hll*(floor(rd) +1-rd) +hlu*(rd-fIoor(rd));
hr = hrI* (floor (rd)+1-rd)+hru*(rd-fIoor(rd));
y = hi* (floor (cd) +l_cd) +hr* (cd-fIoor (cd)).
第五,对地形规则网格的所有顶点进行上述计算,生成地形规则网格数据。地形规则网格数据包括顶点三维坐标数组和顶点索引数组。顶点三维坐标数组VertPos [VertNum] 中,每一项的y值已经由双线性插值重采样获得,计算x、z的方法如图4所示,X轴指向地形的正东方向,Z轴指向地形的正南方向,原点0(0c,Or)位于地形中心点,假设点距为dist, 则任一点v(c, r)的三维坐标X, z分量计算如下
Oc = 2n_1 ;
Or = 2n 1 ;
X= (c_0c)*dist;
z= (0r-r) *dist.
通过上述过程,按照顶点经度由西向东、纬度由南向北的顺序计算并得到顶点三维坐标数组 VertPos [VertNum]。
对于三角面片顶点索引数组,如图5所示,图5右侧是地形规则网格三角化之后的状态,三角面片数目TriNum = 22n+1,因此需要的索引数目为IndexNum = 3*TriNum,设三角面片顶点索引数组的存储空间为TriIndex[IndexNum], Trilndex[]每一项均为int型,记录某一顶点在三维坐标数组VertPos [VertNum]中的序号。
TriIndex[IndexNum]存储顶点索引的顺序,从三角面片层次上看,如图5右侧箭头线所示,是按ζ字型方式存储的,实线箭头代表了同一行中三角面片的存储顺序,虚线箭头代表一行存储结束后折返到上一行的起始处。对具体三角面片顶点进行存储的顺序,如图5左侧的局部放大图所示,首先存储三角面片I的顶点V (O, O)、V (I, O)、V (O, I),按箭头指示顺序,然后存储三角面片2的顶点V (0,I)、V (I,O)、V (I,I),按箭头指示顺序,其他以此类推。任一顶点V(c, r)在三维坐标数组VertPos[VertNum]中的序号id的推算公式为
id = r*(2n+l)+c.
通过上述计算可完全得到三角面片顶点索引数组TriIndex [IndexNum]。从而最终完成地形规则网格数据的生成。
步骤102,将地形规则网格数据转换为网格简化辅助信息。
网格简化辅助信息包括顶点信息和三角面片信息。顶点信息的具体实现为
struct Vertex { intVector3boolList<Vertex *> LisKTriangle *> float Vertex *\d//顶点在三维坐标数组中的序号position;//顶点的三维坐标boundary,//是否是边界点adj Vertices·,//相连接的顶点列表adjFaces;//相连接的三角面片列表 cost;//边折叠代价 collapse//边折叠目标顶点
面片信息具体实现为struct Triangle {Vertex *verlcx[ >];Vector3normal·,boolvalUt//三角面片的顶点 //三角面片的法向 //三角面片是否有效
分别设两者存储空间为Vertex [VertNum]和 Triangle [TriNum]。
步骤102中,由地形规则网格数据转换到顶点信息和三角面片信息的过程如下
第一,遍历顶点三维坐标数组VertPos [VertNum],填充顶点信息Vertex [VertNum] 中的 id、position、boundary 等内容;
第二,遍历三角面片顶点索引数组Tri Index [IndexNum],填充三角面片信息 Triangle [TriNum]中的 vertex[3]、valid 等内容,并对 vertex[3]中的每一项,更新其 adjVertices 与 adjFaces 的内容;
第三,计算Triangle [TriNum]中的normal的值,公式如下
normal = (vertex[I]-vertex
)X (vertex[2]-vertex[I]).
计算出的normal须做归一化处理。
步骤103,利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化。
根据保持边界的原则,对顶点信息Vertex [VertNum]中的cost、collapse等内容进行初始化。对于边界点,cost直接置为无穷大,collapse置为NULL ;对非边界点v, cost 计算方法如下
第一,计算点V折叠到与其连接的某一点u的代价cost (V, u)
权利要求
1.一种计算机三维地形网格的绘制方法,其特征在于,包括对数字高程模型进行重采样生成地形规则网格数据;将地形规则网格数据转换为网格简化辅助信息;利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化;将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式。
2.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述对数字高程模型进行重采样生成地形规则网格数据,是采用双线性插值法进行重采样计算的。
3.根据权利要求2所述的计算机三维地形网格的绘制方法,其特征在于,其中双线性插值法重采样计算的具体步骤包括确定规则网格顶点的数目;确定规则网格每个顶点的经纬度;根据每个顶点的经纬度,将顶点映射到数字高程模型中的对应位置;找出数字高程模型中与上述位置最近的四个高程数据,使用双线性插值计算得出结果,作为规则网格中对应顶点的高度值;对地形规则网格的所有顶点进行上述计算,生成地形规则网格数据。
4.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述对数字高程模型进行重采样生成地形规则网格数据,其中地形规则网格数据是采用顶点三维坐标数组和三角面片顶点索引数组来表达的。
5.根据权利要求4所述的计算机三维地形网格的绘制方法,其特征在于,其中顶点三维坐标数组的每一项记录了某个顶点在三维空间中的坐标信息,三维空间采用直角坐标系,原点水平位置在地形网格中央,高度为0,X轴指向正东,Z轴指向正南,Y轴垂直向上。
6.根据权利要求4所述的计算机三维地形网格的绘制方法,其特征在于,其中顶点三维坐标数组的存储顺序,是按照顶点的经度由西向东、纬度由南向北的顺序依次记录坐标信息的。
7.根据权利要求4所述的计算机三维地形网格的绘制方法,其特征在于,其中三角面片顶点索引数组的每一项,记录三角面片某个顶点在顶点三维坐标数组中的序号。
8.根据权利要求4所述的计算机三维地形网格的绘制方法,其特征在于,其中的三角面片顶点索引数组,从起始处开始每三项隐式地表示一个三角面片,整个三角面片顶点索引数组隐式地表达了一串三角面片序列,这串三角面片序列是按照经度由西向东、纬度由南向北的顺序排列的。
9.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述将地形规则网格数据转换为网格简化辅助信息,其中网格简化辅助信息包括顶点信息和三角面片信息。
10.根据权利要求9所述的计算机三维地形网格的绘制方法,其特征在于,其中顶点信息具体内容包括该顶点在三维坐标数组中的序号;该顶点的三维坐标;该顶点是否是边界点;与该顶点相连接的顶点列表;与该顶点相连接的三角面片列表;该顶点的边折叠代价;该顶点的边折叠目标顶点。
11.根据权利要求9所述的计算机三维地形网格的绘制方法,其特征在于,其中三角面片信息具体内容包括该三角面片的顶点;该三角面片的法向;该三角面片是否有效。
12.根据权利要求9所述的计算机三维地形网格的绘制方法,其特征在于,其中网格简化辅助信息的具体转换步骤包括遍历地形规则网格数据中的顶点三维坐标数组,据此更新顶点信息中的序号和三维坐标内容;遍历地形规则网格数据中的三角面片顶点索引数组,据此更新三角面片信息中的顶点内容,并对各顶点更新其包含的相连接顶点列表和相连接三角面片列表内容,最后计算三角面片法向。
13.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化,包括以下步骤确定保持边界的原则;初始化所有顶点信息中的边折叠代价和边折叠目标顶点;获取当前具有最小边折叠代价的顶点,并将其折叠到目标顶点,同时更新目标顶点的相连接顶点列表、相连接三角面片列表、边折叠代价、边折叠目标顶点;重复上一步直到需简化的顶点数目满足预设条件。
14.根据权利要求13所述的计算机三维地形网格的绘制方法,其特征在于,其中确定保持边界的原则,是指位于网格边界上的顶点其边折叠代价始终为无穷大,边折叠目标顶点始终为空,且当计算其他顶点到边界顶点的边折叠代价时,代价值直接置为无穷大。
15.根据权利要求13所述的计算机三维地形网格的绘制方法,其特征在于,其中顶点信息中的边折叠代价,是从与该顶点相连接的顶点列表中,选取计算出的多个边折叠代价里最小的值。
16.根据权利要求14所述的计算机三维地形网格的绘制方法,其特征在于,其中的边折叠代价,是用待折叠顶点与预选目标顶点之间的距离,乘以它们之间的曲率,所得结果再进行平方来计算的,但若两个顶点中有一个是边界点,边折叠代价直接置为无穷大。
17.根据权利要求13所述的计算机三维地形网格的绘制方法,其特征在于,其中顶点信息中的边折叠目标顶点,是从与该顶点相连接的顶点列表中,选取具有最小边折叠代价值的那个顶点。
18.根据权利要求13所述的计算机三维地形网格的绘制方法,其特征在于,其中更新目标顶点的相连接顶点列表、相连接三角面片列表,是将已折叠顶点的相连接顶点列表、三角面片列表添加到目标顶点的相连接顶点列表和三角面片列表中,并去除无效项,无效项包括重复的顶点或三角面片、不再构成三角形状的面片。
19.根据权利要求13所述的计算机三维地形网格的绘制方法,其特征在于,其中更新目标顶点的边折叠代价、边折叠目标顶点,是在已更新目标顶点的相连接顶点列表后,重新计算选取。
20.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式,其中不规则边折叠简化结果可以是多个满足不同简化预设条件的结果。
21.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式,其中层次结构表示方法是指将地形分为上层精细层和下层粗略层这两个主要层次来表示。
22.根据权利要求21所述的计算机三维地形网格的绘制方法,其特征在于,其中的上层精细层,是由地形规则网格数据构造。
23.根据权利要求21所述的计算机三维地形网格的绘制方法,其特征在于,其中的下层粗略层,是由不规则边折叠简化结果来构造,粗略层根据简化结果的数量细分成相应数量的若干子层,每种简化结果是一个子层,并且简化结果保留的顶点数目越少,子层的级别越低。
24.根据权利要求21所述的计算机三维地形网格的绘制方法,其特征在于,其中的层次结构表示方法,在选择使用哪一层次的数据来表示地形时,是根据视觉信息来决定的,通常使用视点距离信息,距离越近,使用层次级别越高的数据。
25.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式,其中的保持边界特性是指,由于不规则边折叠简化结果是在保持边界的前提下完成的,因此在边界处与地形规则网格具有相同的顶点。
26.根据权利要求I所述的计算机三维地形网格的绘制方法,其特征在于,所述将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式,其中的地形格式具体记录存储方式为首先使用单精度浮点数存储所有顶点的三维坐标数据;其次存储地形规则网格的所有三角面片,三角面片用整型存储的顶点索引值表示;最后按照保留顶点数目由多到少的顺序存储不规则边折叠简化结果,对每个简化结果同样存储其保留的三角面片序列的顶点索引值。
全文摘要
本发明公开了一种计算机三维地形网格的绘制方法。该方法包括对数字高程模型进行重采样生成地形规则网格数据;将地形规则网格数据转换为网格简化辅助信息;利用网格简化辅助信息对地形规则网格数据进行保持边界的不规则边折叠简化;将不规则边折叠简化结果与地形规则网格数据按层次结构表示方法组织成具有保持边界特性的地形格式。利用本发明,可以完全避免三维虚拟场景显示中地形分块间的裂缝问题,在运行时无需占用额外计算资源即可获得无缝拼接平滑过渡的视觉效果,同时它采用的不规则边折叠简化方式能够很好地保留地形原始特征,提高远景时的显示质量。
文档编号G06T17/00GK102930594SQ20121035319
公开日2013年2月13日 申请日期2012年9月20日 优先权日2012年9月20日
发明者蒋永实, 刘思江, 杨一平 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1