当前位置: 首页 > 专利查询>北京大学专利>正文

一种海量任意形状多边形的快速可视化方法技术

技术编号:9872832 阅读:171 留言:0更新日期:2014-04-04 07:00
本发明专利技术涉及一种海量任意形状多边形的快速可视化方法,其步骤包括:根据多边形的可视化先后顺序和遮挡关系将多边形输入序列进行局部分层,每层作为一组,根据从底层到高层的顺序安排各组的绘制顺序,使得分组后的绘制顺序不存在冲突关系,得到无冲突分组槽;从无冲突分组槽中取出一组任意形状的且无冲突关系的多边形,在三角扇化之后执行两遍分别具有计数和填充含义的绘制,多次重复以上过程后得到最终可视化结果。本发明专利技术能够提高海量任意形状多边形的可视化并行度,对比现有的ArcGIS以及Mapnik地理信息可视化引擎,速度可以达到2倍以上的提升。

【技术实现步骤摘要】

本专利技术属于计算机图形学、地理信息技术、可视化等
,涉及一种GPU上针对海量任意形状多边形的快速可视化方法
技术介绍
在图形和GIS应用中,通常要处理和可视化大量的曲边、带多个洞、复杂的多边形。对于最简单的凸多边形且无空洞的多边形形式,现有的图形标准API (如OpenGL或者DirectX),都提供了直接绘制/可视化的方法。但是对于其它复杂的形式,尤其是凹多边形的形式以及带有孔洞的多边形,现有的标准图形API都不提供直接的支持,往往都需要大量的额外计算和处理工作。常用的策略有从计算几何角度对凹多边形进行Delaunay (德劳内)剖分处理(宋晓眉;张晓东;李建林,一种高准确度的约束Delaunay三角网生成算法研究,地理与地理信息科学,2009,25 (I),周培德计算几何一算法分析与设计2011 ),或者采用扫描线区域剖分方法(崔璨;王结臣.一种基于梯形剖分的多边形布尔运算方法.测绘学报2011(01)),或者研究采用其他全局或者局部的剖分方法(贺怀清,杨鹏.一种凹多边形凸分解的全局剖分算法[J].中国民航大学学报ISTIC,2011,29(3).)。作为图形标准的API, OpenGL也提供了一个网格化(tessellation)的回调程序框架,支持程序员自定义的网格化方法(即上述各种剖分方法),在转化成凸多边形之后再进行绘制和可视化。无论上述各种对凹多边形进行额外处理的剖分算法,还是OpenGL提供的网格化框架,当面对大规模的甚至是海量的任意多边形时,都面临算法效率低下、处理和可视化速度缓慢的严重问题。尤其是在地理信息系统中(GIS),往往存在大量的凹多边形作为地理信息的要素数据。这些要素代表不同的地理信息含义,每个要素可能由数量庞大的边构成一个凹多边形,如省、市等行政区划以及湖泊、森林的边界等,有些多边形还可能由一个外边界和多个内边界构成(如环形的河流/湖泊)。要素的数目也非常庞大,要素彼此之间还存在复杂的图层先后关系。因此,海量的任意形状多边形(要素)的处理和可视化已经成为近年来地理信息系统的瓶颈之一。
技术实现思路
针对上述地理信息可视化中存在的严重问题,本专利技术提出一种基于GPU的任意多边形的快速并行可视化方法,能够对海量的具有任意形状的多边形(尤其是凹多边形)进行快速可视化。本专利技术采用的技术方案如下:一种GPU上针对海量且任意形状多边形的快速可视化方法,其步骤包括:I)根据多边形可视化先后顺序和相互遮挡关系将多边形输入序列进行局部分层,每层作为一组,根据从底层到高层的次序安排各组的绘制顺序,使得分组后的同组内多边形的并行绘制顺序不存在冲突关系,并将分组数据存储在无冲突分组槽中,当满足一定条件时一层或者多层无冲突分组槽中的多边形数据被调度发送至绘制管线;2)绘制管线端接收到一组任意形状的且无冲突关系的多边形,对每一个多边形进行三角扇化,利用GPU对该组三角扇化之后的多边形并行执行两遍分别具有计数和填充含义的绘制操作以实现可视化;3)重复步骤2)直到所有无冲突分组槽中为空,且不再有新的多边形放置入槽中,得到最终可视化结果。进一步地,步骤I)中如果多边形B在输入图元序列中出现的顺序在A之后,而且B与A的包围盒存在重叠,则B与A存在潜在冲突关系,B不能与A进行并行绘制,B的绘制次序必须在A之后。进一步地,步骤I)采用下列步骤进行分层并建立无冲突分组槽:1.1)新建一个层,每一层对应一个槽结构,将输入多边形序列中的第一个多边形放入该层的空槽位置中;1.2)对于输入多边形序列中剩余的每个多边形,执行如下操作:1.2a)按照从底层向顶层的顺序进行搜索,找到所有与当前多边形存在包围盒重叠关系的多边形所在的层次,将其中的最高层记为第i层;1.2b)如果第i层就是顶层,那么在其上新增加一层,即第i+Ι层,然后将该多边形放入新加的第i+Ι层的空槽位置中;1.2c)如果第i层不是顶层,那么将该多边形按顺序放入第i+Ι层的空槽位置中。进一步地,通过设定限制达到实时运行的要求:层次的数目不能超过N层,并且每一层中的多边形数量不能超过M个。进一步地,采用以下无冲突分组槽调度策略保证槽中数据被合理发送至绘制端并满足上述层次数目和每一层多边形数目的限制:A)如果在添加新层时层次的数量已经达到N层,那么首先将最底层槽中的所有多边形作为一个基本单元,发送到绘制管线中,然后将次底层作为新的最底层,各层顺次下移,最后在顶层再添加最新层;B)设置每一层所对应的无冲突分组槽中的空槽位置的个数为M,如果在向某一个第i层次添加了一个多边形之后该层次中包含的多边形达到了 M个,此时该层分组槽中的空槽数目为0,则从最底层到当前第i层的所有槽以及槽中所包含的所有多边形全部发送到绘制管线中,每一层中的所有多边形作为一基本单元将执行后续的计数和填充操作(即步骤2))中的GPU两遍绘制),然后将该层的下一层(即第i+Ι层)作为新的最底层,第i+1层之上的所有层顺次下移;C)输入流中如果出现非多边形图元,则将所有的无冲突分组槽中的多边形全部发送到绘制管线中,每一层中的所有多边形作为一个基本单元将执行后续的计数和填充操作(即步骤2)中的GPU两遍绘制),将所有非多边形图元从输入中取出,一起送至绘制管线,然后清空无冲突分组槽,继续处理剩余多边形;D)如果A),B),C)中的条件均不满足,但是输入流中的所有多边形均已被处理进入分组槽中,则将所有的无冲突分组槽中的多边形全部发送到绘制管线中,每一层中的所有多边形作为一个基本单元将执行后续的计数和填充操作(即步骤2)中的GPU两遍绘制),然后调度算法结束。进一步地,步骤2)所述执行三角扇化和两遍分别具有计数和填充含义的GPU绘制的步骤包括:2.1)接收到从无冲突分组槽发送过来的作为一个单元的无冲突关系的多边形集合,为该多边形集合关联一个模板缓冲区(或者累积缓冲区),以此缓冲区作为为第一步计数绘制的目标和第二步填充绘制的测试依据;;2.2)对每个任意形状的多边形进行如下处理:对多边形中的每个闭环,以环中的任意一个顶点为轴,按照顶点的排列顺序依次向其他顶点连线,构成一个辐射状的三角形扇网格,如果多边形中含有多个闭环则形成了多个独立无关的三角形扇网格;2.3)进行第一遍具有计数含义的绘制:进行第一遍具有计数含义的绘制:对一个单元中的每个多边形闭环构造出的三角形扇网格并行地进行纯几何的绘制。绘制采用填充模式,此时色彩缓冲关闭,绘制结果写入并保存到2.1)关联的缓冲区中,在该缓冲区中被三角形覆盖到奇数次的点是位于多边形内部的点,覆盖到偶数次的点是多边形外部,或者是多边形内部的空洞区域;2.4)进行第二遍具有填充含义的绘制:同时对一个单元中的每个多边形闭环构造出的三角形扇网格并行地进行正常的可视化绘制,或者以多边形的包围盒替代三角扇网格进行绘制。绘制采用填充模式,此时色彩缓冲开启并打开模板缓冲或者累积缓冲测试,只有落入到缓冲区中并且计数为奇数次的像素才能通过测试。如果所需要绘制的多边形图元为纹理填充模式,则需要计算纹理坐标并进行相应纹理映射,最终得到该组图元的可视化结果;2.5)清空模板缓冲(或者累积缓冲);2.6)如果还有尚未处理的无冲突分组槽及其多边形集合,则转入步骤2.1)继续处理本文档来自技高网
...

【技术保护点】
一种GPU上针对海量且任意形状多边形的快速可视化方法,其步骤包括:1)根据多边形可视化先后顺序和相互遮挡关系将多边形输入序列进行局部分层,每层作为一组,根据从底层到高层的次序安排各组的绘制顺序,使得分组后的同组内多边形的并行绘制顺序不存在冲突关系,并将分组数据存储在无冲突分组槽中,当满足一定条件时一层或者多层无冲突分组槽中的多边形数据被调度发送至绘制管线;2)绘制管线端接收到一组任意形状的且无冲突关系的多边形,对每一个多边形进行三角扇化,利用GPU对该组三角扇化之后的多边形并行执行两遍分别具有计数和填充含义的绘制操作以实现可视化;3)重复执行步骤2)直到所有无冲突分组槽中为空,且不再有新的多边形放置入槽中,得到最终可视化结果。

【技术特征摘要】
1.一种GPU上针对海量且任意形状多边形的快速可视化方法,其步骤包括: 1)根据多边形可视化先后顺序和相互遮挡关系将多边形输入序列进行局部分层,每层作为一组,根据从底层到高层的次序安排各组的绘制顺序,使得分组后的同组内多边形的并行绘制顺序不存在冲突关系,并将分组数据存储在无冲突分组槽中,当满足一定条件时一层或者多层无冲突分组槽中的多边形数据被调度发送至绘制管线; 2)绘制管线端接收到一组任意形状的且无冲突关系的多边形,对每一个多边形进行三角扇化,利用GPU对该组三角 扇化之后的多边形并行执行两遍分别具有计数和填充含义的绘制操作以实现可视化; 3)重复执行步骤2)直到所有无冲突分组槽中为空,且不再有新的多边形放置入槽中,得到最终可视化结果。2.如权利要求1所述的方法,其特征在于:步骤I)中如果多边形B在输入图元序列中出现的顺序在A之后,而且B与A的包围盒存在重叠,则B与A存在潜在冲突关系,B不能与A进行并行绘制,B的绘制次序必须在A之后。3.如权利要求1所述的方法,其特征在于,步骤I)采用下列步骤进行分层并建立无冲突分组槽: 1.0新建一个层,每一层对应一个槽结构,将输入多边形序列中的第一个多边形放入该层的空槽位置中; 1.2)对于输入多边形序列中剩余的每个多边形,执行如下操作: 1.2a)按照从底层向顶层的顺序进行搜索,找到所有与当前多边形存在包围盒重叠关系的多边形所在的层次,将其中的最高层记为第i层; 1.2b)如果第i层就是顶层,那么在其上新增加一层,即第i+Ι层,然后将该多边形放入新加的第i+Ι层的空槽位置中; 1.2c)如果第i层不是顶层,那么将该多边形按顺序放入第i+Ι层的空槽位置中。4.如权利要求3所述的方法,其特征在于,通过设定限制达到实时运行的要求:层次的数目不能超过N层,并且每一层中的多边形数量不能超过M个。5.如权利要求4所述的方法,其特征在于,采用以下无冲突分组槽调度策略保证槽中数据被合理发送至绘制端并满足所述限制: A)如果在添加新层时层次的数量已经达到N层,那么首先将最底层槽中的所有多边形作为一个基本单元,发送到绘制管线中,然后将次底层作为新的最底层,各层顺次下移,最后在顶层再添加最新层; B)设置每一层所对应的无冲突分组槽中的空槽位置的个数为M,如果在向某一个第i层次添加了一个多边形之后该层次中包含的多边形达到了 M个,此时该层分组槽中的空槽数目为O,则从最底层到当前第i层的所有槽以及槽中所包含的所有多边形全部发送到绘制管线中,每一层中的所有多边形作为一基本单元将执行后续的计数和填充操作,然后将该层的下一层即第i+Ι层作为新的最底层,第i+Ι层之上的所有层顺次下移; C)输入流中如果出现非多边...

【专利技术属性】
技术研发人员:李胜徐泽骅汪国平
申请(专利权)人:北京大学
类型:发明
国别省市:

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

1