基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx

上传人:sccc 文档编号:4890630 上传时间:2023-05-21 格式:DOCX 页数:30 大小:645.47KB
返回 下载 相关 举报
基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx_第1页
第1页 / 共30页
基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx_第2页
第2页 / 共30页
基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx_第3页
第3页 / 共30页
基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx_第4页
第4页 / 共30页
基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx》由会员分享,可在线阅读,更多相关《基于VTK的二三维GIS核心组件的开发硕士学位论文1.docx(30页珍藏版)》请在三一办公上搜索。

1、 密级: 硕 士 学 位 论 文 论文题目 基于VTK的二三维GIS核心组件的开发作者姓名 赵丽娜 指导教师 陈奇 学科(专业) 计算机应用技术 所在学院 计算机学院 提交日期 2013年1月 A Dissertation Submitted to Zhejiang University for the Degree of Master of EngineeringTITLE: The Development of Core Components for 2-3D GIS Based on VTK Author: Zhao Lina Supervisor: Chen Qi Subject: C

2、omputer Application College: College of Computer Science Submitted Date: Jan. 2013 浙江大学硕士学位论文 摘要摘要在二三维GIS一体化的全新技术理念下,研究如何在同一平台下使用同一绘制引擎展示二维和三维地图具有非常的意义。本文利用VTK作为绘制引擎,开发了一套二三维GIS的核心组件,以同时支持二维栅格地图、二维矢量地图和三维地形图。文中对二三维地理数据的预处理、数据的组织和存储、内存管理、地理数据的选择和实时绘制这一整套流程都做了详细描述。本文的研究重点是对二维栅格地图和三维地形图的实时绘制技术。实现大规模二维栅

3、格地图实时绘制的步骤可概括为:第一步,针对不同规模的单张影像输入和多张影像输入分别执行不同的金字塔切割算法;第二步,建立金字塔的四叉树索引,并将需要绘制的瓦片节点进行内存缓冲管理;第三步,查找符合给定地理范围的瓦片节点,并以纹理的方式用VTK进行绘制。三维地形图实时绘制技术的研究与实现是本文的难点,主要体现在三个阶段:数据预处理阶段,提出将高度图、法向量图和纹理图经分层分块后以二进制文件流的形式存储在Final文件中;地形节点选择阶段,提出了基于可视范围的空间地形节点的LOD选择算法,综合考虑了视点高度和地形节点的空间范围;渲染阶段,在每层的可视范围中划分出一段过渡区域,并把地形接缝的处理粒度

4、从地形块缩小到顶点,设计出了适合GPU计算的顶点平滑过渡算法。最后,本文在Goophy 8.1平台下开发出了基于VTK的二三维GIS所有的核心组件,该系列组件可以被跨语言、跨平台使用,并经实验证明,对大规模二维栅格地图和三维地形的实时绘制表现出良好的效果和性能。关键词:GIS,VTK,二三维一体化,金字塔,可视范围,LOD选择算法,GPU,顶点平滑过渡算法,Goophy 8.1ii浙江大学硕士学位论文 AbstractAbstractThe 2D&3D integration in GIS is a new technology, so the research on displaying 2

5、D and 3D map using the same rendering engine on one platform is very significant. In this paper, we developed a set of 2-3D GIS core components by using VTK as rendering system, the components can support both 2D raster map, vector map and the 3D terrain map. The whole process, including data prepro

6、cessing, data organization and storage, memory management, geographic data selection and real-time rendering, are all discussed in detail. The real-time rendering technology of 2D raster map and 3D terrain map is focused on in this paper.We put forward two pyramid cutting algorithms for different sc

7、ale of input image during data preprocessing of raster map, then a quad-tree index is built and a memory buffer is managed for large scaled pyramid tiles so the tiles will be rendered in time with a limited memory.The research of 3D terrain map is the most difficult part in our system. Blocked heigh

8、t-map, normal-map and texture-map are stored in a binary file to reduce the terrain data file number. In order to select terrain nodes by a given view frustum, we proposed a new LOD selection algorithm based on visual ranges of each LOD layer, which considering both the observers height and the terr

9、ain nodes bounding box. For rendering terrain seamlessly, morph area is defined in each LOD layers view range, making a vertex in a higher complexity mesh morph into the lower one gradually, this method could be run in GPU very well. At last, we developed the whole system with every component as a m

10、odule on the Goophy 8.1 platform, making it can be application developed by C+, C# and java. The experiments show that the system has good performance on the real-time rendering of large scaled 2D vector map and 3D terrain map.Keywords:GIS, VTK, 2D&3D integration, pyramid, visual range, LOD selectio

11、n algorithm, GPU, vertex morph, Goopy 8.1iii浙江大学硕士学位论文 目录目录摘要iAbstractii第1章 绪论11.1 课题背景与意义11.2 国内外研究现状31.2.1 二维栅格地图的研究现状31.2.2 二维矢量地图的研究现状41.2.3 三维地形技术的研究现状51.2.4 二三维GIS一体化技术的研究现状71.3 研究目标和内容81.4 本文特色81.5 本文内容组织9第2章 三维可视化引擎VTK112.1 VTK简介112.2 VTK的管线技术132.2.1 可视化模型132.2.2 图形模型142.3 VTK的数据集142.3.1 VTK

12、数据集的组成142.3.2 VTK数据集的类型162.4 本系统对VTK的抽取和封装182.4.1 对VTK的抽取182.4.2 对VTK的封装192.5 本章小结21第3章 地理数据的预处理和存储223.1 二维栅格地图数据的预处理和存储223.1.1 图像金字塔原理223.1.2 卫星遥感影像的金字塔切割算法233.2 二维矢量地图数据的预处理和存储283.3 三维地形数据的预处理和存储303.3.1 对原始数据的初次处理303.3.2 对中间数据的采样和存储323.4 本章小结36第4章 二维地图实时绘制的技术研究374.1 二维栅格地图实时绘制374.1.1 提取金字塔瓦片374.1.

13、2 图像金字塔在内存上的实现384.1.3 利用VTK可视化二维栅格地图414.2 二维矢量地图实时绘制424.2.1 根据指定范围提取矢量图层424.2.2 利用VTK可视化二维矢量地图434.3 本章小结44第5章 三维地形实时绘制的技术研究455.1 基于可视范围的空间地形节点LOD选择算法455.2 地形数据在内存上的管理475.2.1 数据的载入475.2.2 内存管理策略485.2.3 渲染数据的连接505.3 基于GPU的顶点过渡算法505.3.1 算法描述515.3.2 算法实现525.4 利用VTK可视化三维地形545.4.1 基于VTK的GPU编程545.4.2 利用VTK

14、可视化三维地形555.5 本章小结57第6章 基于VTK的二三维GIS核心组件系统的实现586.1 系统架构586.2 Goophy8.1简介596.3 系统性能分析606.4 本章小结62第7章 总结与展望647.1 总结647.2 展望65参考文献66攻读硕士学位期间主要的研究成果69致谢70II浙江大学硕士学位论文 表目录图目录图 1.1 Google Map和 Google Earth的二三维地图展示3图 1.2 动态地形接缝算法示意图6图 1.3 静态地形接缝算法示意图7图 1.4 本文的内容组织架构图9图 2.1 VTK的可视化管线的对象模型13图 2.2 数据集的组成15图 2.

15、3 数据集的例子-四边形图15图 2.4 各种数据集在VTK中的表现形式17图 3.1 图形金字塔原理示意图23图 3.2 单输入金字塔切割原理25图 3.3 从底层金字塔构造高层金字塔27图 3.4 二维矢量地图数据的预处理步骤28图 3.5 矢量类型的类图关系28图 3.6 一个R树实例29图 3.7 计算地形法向量32图 3.8 视棱锥示意图33图 3.9 地形四叉树实现LOD技术34图 3.10 三维地形数据预处理流程34图 3.11 地形四叉树到高度值金字塔的映射36图 4.1 BufferEntry的状态更新流程40图 4.2 图像金字塔取图的工作原理41图 4.3 用VTK可视化

16、金字塔瓦片的流程图41图 4.4 R树搜索实例43图 4.5 用VTK可视化二维矢量类型43图 5.1 地形LOD选择后的俯视图45图 5.2 地形四叉树各层的可视区域分配图46图 5.3 父节点和2个子节点同时被选中后的绘制模型47图 5.4 数据块的状态变化流程图48图 5.5 三维地形内存管理的工作流程图50图 5.6 地形块间裂缝的产生51图 5.7 可视区域中的过渡区域52图 5.8 对morphValue的计算52图 5.9 morphValue从0到1时的地形网格平滑过渡示意图53图 5.10 地形顶点过渡算法的实现54图 5.11 利用VTK可视化三维地形的过程55图 6.1

17、基于VTK的二三维GIS核心组件的系统架构图58图 6.2 Goophy 8.1平台结构图60图 6.3 二维栅格地图运行效果图61图 6.4 三维地形数据运行效果图61图 6.5 二维栅格地图绘制性能分析图62V表目录表 1.1 二三维GIS地图综合比较2表 1.2 二维矢量地图中空间索引技术对比4表 2.1 抽取的可视化数据集部分的VTK类列表18表 2.2 抽取的图形绘制部分的VTK类列表19表 6.1 系统各模块的功能介绍59表 6.2 系统实验数据的说明60表 6.3 三维地形绘制性能分析表62 浙江大学硕士学位论文第1章 绪论第1章 绪论1.1 课题背景与意义地理信息系统(Geog

18、raphic Information System,GIS)是利用计算机存贮、处理地理信息的一种技术与工具,是一种在计算机软硬件支持下,把各种资源信息和环境参数按空间分布或地理坐标,以一定格式和分类编码输入、处理、存贮、输出,以满足应用需要的人-机交互信息系统1。由于GIS在发展过程中和多个学科和专业相互渗透,GIS的应用也深入各个行业,诸如电子地图查询、资源与环境管理、国土管理、城市规划、旅游信息、自然灾害监测与防治等。我国国家测绘地理信息局也明确指出,要加快推进地理信息资源整合和数字城市建设,要在2015年,建成数字中国地理空间框架和信息化测绘体系,争取把地理信息产业纳入国家战略性新兴产业

19、规划2。电子地图以GIS技术为基础,融合了数据库技术,其信息的可视化程度大大提升,表现形式更加丰富。基于地理信息系统的电子地图拥有多媒体功能,可以对其进行地图操作,可以分析查找特定范围内的目标,可以准确查找两点间最短路径,可以对属性信息进行可视化分析、统计,可以进行规划管理,并具有网络功能3。对于所有的GIS,地图既是输入数据的来源,又是输出数据的一种形式。根据数据在空间上的表现形式,GIS分为二维GIS和三维GIS,三维GIS中,空间目标通过X、Y、Z三个坐标轴来定义,二维GIS只是对平面的扩展。二维GIS的地图表现有二维矢量地图和二维栅格地图,三维GIS对应的主要是三维地形图。栅格地图(R

20、aster Map)是用栅格数据表示并以栅格的数据结构存储的数字地图,栅格数据存储的就是平时我们所看到的位图结构,栅格数据的来源可以是遥感数据、航测数据、航空雷达数据、各种摄影的图像数据4,一般为便于管理和存储,栅格数据需要进行重新组织。矢量地图(Vector Map)是用矢量数据表示地图要素的图形位置和颜色的数据集合,矢量数据就是几何学中的点、线、面及其组合体来表示地理实体的空间分布,几乎所有的GIS软件都有自己的矢量数据格式,如Arc/Info的Coverage文件、MapInfo的MIF文件、ArcView支持的SHP文件等。由于人类的生活空间就是一个三维的环境,二维GIS本质上是基于抽

21、象图形符号的系统,不能给人以自然界的真实感受,所以三维GIS的可视化技术尤其是三维地形图(Terrain Map)的虚拟化是非常必要的,它将我们的地形在三维空间上展现出来,能够很好地实现灵活的人机交互。文章5认为,构建三维虚拟环境需要大规模的三维场景数据,这些数据可以从二维GIS中提取、转换或者重新组织得到三维的数据源,例如文献6提出将二维栅格数据的遥感图像与栅格化后的DEM数据融合,来生成立体的三维景观图像,以显示逼真的现实效果。二维矢量地图、二维栅格地图和三维地形图之间的优缺点789如表格1.1所示,可以看出它们分别有适合的应用场景,虽然各自存在着不足,但是目前为止,三者都是GIS的发展方

22、向,缺一不可。表 1.1 二三维GIS地图综合比较优点缺点应用场景二维栅格地图数据结构简单;现实性较强;便于和三维地形结合使用;便于描述复杂模糊的事物数据存储量大;精度较低适合描述色彩、阴影或形状变化复杂的影像地图二维矢量地图数据存储量小,结构紧凑;地图显示质量好、精度高;空间关系全面;方便查询和导航数据结构复杂;地图表达较抽象适合需要对矢量图层分析处理的GIS场景三维地形图对地理环境的显示更逼真;容易以多种形式显示地形;便于对GIS的空间分析数据结构复杂,存储量大;三维GIS可视化框架不统一适合需要空间交互和空间分析的三维GIS场景在国内外比较知名的GIS可视化服务系统中,Google Ma

23、p和Baidu Map都是在以网站的形式提供二维矢量地图和二维栅格地图(卫星地图),对三维地形可视化的优秀软件有Google Earth、Skyline等,如图1.1所示,可以看出,传统的二维GIS和三维GIS都是在不同的平台下处理和绘制的,这对于用户的使用和程序的再次开发都是非常不便的,在这种情况,在同一个平台下基于同一种绘制引擎的二三维GIS系统的开发是非常有意义的。 (1)Google Map下的矢量地图 (2)Google Map下的卫星地图(3)Google Earth下的三维地形图图 1.1 Google Map和 Google Earth的二三维地图展示1.2 国内外研究现状1.

24、2.1 二维栅格地图的研究现状由于二维栅格地图的数据量非常大,所以对二维栅格地图研究的难点就在于对遥感地图等原始地图数据的组织和管理。据统计,在使用过程中,更多的用户都仅仅关注于一个相对较小的区域或是原始图像的某种分辨率的图像,所以,传统的做法,像Google地图、Oracle 10g Spatial,都提供了数据分块创建影像金字塔(Pyramid)的机制10。分块的思想在二三维GIS中实现在有限的内存绘制海量地图的机制上非常有用,它是将原始地图数据分割成规则的块状数据,使系统可以逐块地处理这些地图数据,对栅格地图进行图像金字塔处理就是依据这样的策略。在此基础上,文献11提出了多金字塔混合组织

25、模型,以支持栅格地图的分布式存储;文献12将小波变换和传统的多分辨率金字塔模型结合在一起,提出小波金字塔模型,来减少栅格数据的存储量和增大网络传输效率。虽然这两者的扩展模型都是非常好的技术,但是由于本文设计的系统中没有涉及网络传输和分布式存储,而且在三维地形中也会使用到金字塔切割的原理,所以为了系统的统一,本文采用的仍然是传统的多分辨率图像金字塔模型。1.2.2 二维矢量地图的研究现状表 1.2 二维矢量地图中空间索引技术对比索引名称适应对象适应维度存储效率算法复杂度优点缺点K-D树点对象多维较低一般存储要求较低,高效查询删除操作复杂,无法管理海量的数据、更新更困难网络索引任意空间对象多维较低

26、一般结合编码,索引速度快,索引可调整数据冗余大,单一分辨率,变长记录,难以维护点四叉树任意空间对象二维一般一般操作简单,支持动态更新,查找快非平衡树,空间利用低面四叉树任意空间对象二维一般一般空间划分无重叠,可控分辨率,隐含空间关系,查找快深度相差大,数据结构复杂,动态维护困难R树任意空间对象多维较高较高比K-D树,四叉树更灵活,效率更高区域重叠,影响效率,动态维护性能较差R变种树任意空间对象多维较高高区域重叠度改善,效率改善算法复杂,动态维护性能较差矢量地图是二维GIS最主要的数据源,其显示效率是评价GIS平台性能的最重要因素之一,不管是在桌面端、嵌入式上还是在基于Web的服务端都是如此。和

27、二维栅格地图类似,如何有效地对矢量地图数据进行空间索引管理一直是研究的基础问题。现在常用的二维矢量地图的空间索引技术主要有K_D树、R树、四叉树、网格型等,或者基于这些技术而优化的索引技术,表1.213是对各种索引性能的比较,它们各有优劣所在,目前多采用多种索引并存的机制以互相弥补。本文主要用到的是R树和网格型的四叉树索引。1.2.3 三维地形技术的研究现状三维地形的可视化技术是本文研究的重点,与二维地图不同的是,三维地形的可视化研究的难点在于如何改善各方面因素提高渲染效率,这包含数据的处理和组织、内存空间管理、地形节点选择算法等,另外,在不影响渲染速度的基础上,一个合理的消除地形之间裂缝的算

28、法也是当前国内外研究的热点和难点。金字塔的分层分块策略可以完好地延续在三维GIS中,现在的三维地形对地形数据的处理和组织大多数采用的都是文献14中的地形四叉树索引的方法,对于地形节点的空间选择,该文作者提出了Chunked LOD技术,文献15对其进行了改进,提出了一种基于地形节点纹理分辨率的LOD选择算法,但是该算法只考虑到了地形块在二维平面上的精度,即单单计算出了应该选择哪一层的地形四叉树节点,而没有考虑到每个地形节点在高度上的最大最小范围;文献16克服了这一缺点,但是它使用的地形LOD选择算法只与视点位置的X和Y坐标有关,而与视点的高度无关,这样会导致不合理的结果,因为当视点远离地形时是

29、不需要显示所有层次细节的。为了克服两者的缺陷,本文提出了一种综合考虑视点高度和地形节点空间范围的算法,称为基于可视范围的空间地形节点LOD选择算法。地形的接缝算法基本在每一个地形绘制的系统中都有涉及,文献17中把地形接缝算法分成了动态接缝算法和静态接缝算法两大类,其中动态接缝算法的主要思想是在绘制过程中动态地分裂和合并三角形来实现接缝,在两个不同精度的地形块相邻时,要么在较低精度的地形块边界上分裂出更多的三角形,要么在较高精度的地形边界上合并一些三角形,以达到过渡衔接的效果,如图1.2所示;动态接缝算法的主要代表是ROAM算法18,以及在其基础上的一些改进算法192021,这种算法会破坏原先地

30、形的网格结构,而且基于CPU的实时绘制系统中三角形的分裂和合并是比较耗时的。静态接缝算法的主要思路是通过数据预处理把地形块的网格数据都存储起来,在构建这些地形块网格数据的同时,把原先地形的网格周围加上一圈额外的边界网格带,来过渡两个地形块之间的裂缝;静态裂缝的主要代表是Chunked LOD中提出的垂直边缘填充方法(Vertical Skirt)和与它类似的算法,这种算法应用比较广泛,开源三维游戏引擎Ogre的地形绘制就是采用这样的算法,图1.3描述了一种多重边界的静态接缝算法17。但是静态接缝算法要预先存储所有的网格数据,这是相当浪费的,而且每个地形块都要绑定一些额外的三角网格,会使渲染的三

31、角形数量增多,一旦边界处理不佳还会产生裂缝。这两种算法出现不足的根本原因在于,它们对裂缝消除的粒度都是以地形块为基本单位的,本文将提出一种以顶点为处理单位的基于GPU的顶点过渡算法来消除地形裂缝。 (1)分裂三角形 (2)合并三角形图 1.2 动态地形接缝算法示意图由于整个三维地形实时绘制算法的复杂性,传统的基于CPU的地形渲染算法使计算机图像硬件和CPU之间的信息交换常常形成一个严重的传输瓶颈,导致图形不一致或者较低帧速,另一方面,随着图形处理器GPU的功能更新越来越快,即便是一个简单的基于GPU的处理也会比经过复杂的CPU计算的视觉效果要好和快的多22。一些基于GPU的大规模三维实时渲染系

32、统的实现162324也证实了GPU的高效。 (1)建立于同等精度地形块衔接的边界 (2)建立于较高精度地形块衔接的边界图 1.3 静态地形接缝算法示意图1.2.4 二三维GIS一体化技术的研究现状二三维GIS一体化技术是全新一代的GIS技术,目前只有GIS行业非常有限的垄断的软件公司才对这以技术加以研究和实现,比如我国的超图Super Map和国外的Skyline两大平台,超图公司在2011年发布了“一张图”概念下的二三维一体化GIS共享概念25,将GIS中的二维空间数据与三维空间数据整合在一个平台下,打破了以前三维GIS系统相对于二维GIS系统在数据、功能、结构上需要另起炉灶的弊端。这样,用

33、户建设一套系统,就可以同时拥有二维和三维两种应用形式。文献26将SuperMap的这种一体化技术和Skyline进行了对比:Skyline将二三维地理数据分别处理并展示,SuperMap GIS 6R则对二三维数据存储管理一体化;Skyline对海量三维地形数据可以流畅绘制,而SuperMap则稍微逊色。两者同时存在的弊端是,都是商业化软件,在二次开发上接口的封装程度比较高,开放程度较低,不便于进行研究。本文提出的基于VTK的二三维GIS核心组件系统也是一种二三维GIS一体化技术。我们吸纳上述两者技术上的优势,在数据管理上,将二三维数据分别处理但在绘制上不区分对待,可以存储在同一个数据库中;在

34、渲染上,二三维地图基于同一个平台同一个绘制引擎,分窗口绘制;在效率上,同Skyline一样,使用三维场景的LOD技术和金字塔分级分块技术,同时采样GPU加速渲染,提高绘制帧率。 1.3 研究目标和内容本文的研究目标为:(1) 分别构建出针对二维矢量数据、二维栅格数据和三维地形数据的预处理工具,使构建出的地理数据能够合理、高效地被开发系统使用。(2) 实现二维矢量地图和二维栅格地图的实时绘制,通过GPU加速的方式实现对三维地形的无缝渲染。(3) 在深入分析和总结前人研究成果的基础上,利用开发工具Visual Studio 2010,在Goophy 8.1平台上开发出一套完整的以VTK为绘制引擎的

35、二三维GIS核心组件系统。基于本文的研究目标,需要研究的内容有:(1) 研究三维可视化引擎VTK的关键技术,以从中抽取出本系统使用到的功能并进行封装。(2) 研究图像金字塔原理,实现将大幅影像图片切割成金字塔的算法;研究二维矢量地图的空间索引机制;研究从给定地理区域中快速获取金字塔瓦片和矢量类型的算法,探索能够在有限内存进行实时渲染海量的二维地图数据的内存管理策略。(3) 研究三维地形数据的预处理和存储方式;提出更合理的空间地形四叉树LOD选择算法和适合GPU使用的地形裂缝消除算法。(4) 研究如何使用VTK可视化二维矢量地图和二维栅格地图,以及如何使用VTK通过GPU的Shader编程实现三

36、维地形的可视化。1.4 本文特色本文的特色有:(1) 设计了整套的二三维地图数据预处理工具,在对二维栅格地图数据的预处理中,根据不同规模的单张影像输入和多张影像输入分别提出了可行的金字塔切割算法。(2) 提出了综合考虑视点高度和地形节点空间范围的三维地形节点的LOD选择算法,把地形接缝的粒度从地形块缩小到顶点,研究出适合GPU使用的地形裂缝消除算法。(3) 使用Goophy 8.1平台开发出各个功能模块组件,使得组件可以跨语言使用、跨平台使用。(4) 本文最大亮点在于最终实现了一个综合的GIS系统,在这样单个系统中,使用VTK可以同时绘制二维矢量地图、二维栅格地图和三维地形图。1.5 本文内容

37、组织本文将所述内容组织如图1.4所示:图 1.4 本文的内容组织架构图第一章 绪论。本章阐述论文的研究背景,介绍与本文研究方向一致的国内外现状,提出解决的问题。第二章 三维可视化引擎VTK。本章介绍系统开发使用到的绘制引擎,即三维可视化引擎VTK及其渲染流程,并从中抽取出本系统需要的功能,完成封装和使用。第三章 地理数据的预处理和存储。本章详细描述二维地图和三维地形的数据预处理部分,为数据的使用和地图的实时绘制做铺垫。第四章 二维地图实时绘制的技术研究。本章研究二维栅格地图和矢量地图实时绘制的理论,最后利用VTK将二维地图以三维的形式展现出来。第五章 三维地形实时绘制的技术研究。本章是全文的重

38、点部分,着重研究三维地形实时绘制的技术,并提出使用到的算法,最后利用VTK下的Shader编程实现三维地形通过GPU的高速渲染。第六章 基于VTK的二三维GIS核心组件系统的实现。本章构造出整个系统的框架并对每个模块进行实现,通过实验数据运行二维栅格地图和三维地形模块,从实验得出的数据分析系统的性能。最后是对全文的总结和展望。10浙江大学硕士学位论文第7章三维可视化引擎VTK第2章 三维可视化引擎VTK我们在选择GIS的绘制引擎时要综合考虑如下因素:跨平台性,即绘制引擎可以很好地工作在Windows、Linux、Unix等平台下,在其之上开发的软件具有较强的可移植性;开源性,即源码可以被公众使

39、用,并且此软件的使用、修改和发行也不受许可证的限制;面向对象的封装性,由于整个GIS的二维地图和三维地形核心组件中包括地图数据的预处理和存储、地图的实时绘制、载入策略等复杂算法,所以我们希望底层的绘制引擎能具有很好的封装性,便于抽取,方便开发人员使用;多语言性,希望绘制引擎可以同时支持C+,java甚至脚本语言的开发。此外,还要综合考虑可视化引擎的绘制效率、同时绘制二三维图形的通用性、实用性等因素。我们知道OpenGL和DirectX是专业的图形程序接口,但是OpenGL是以C语言函数的形式供用户使用,基本不具有面向对象的特征,而且发展比较缓慢,而DirectX又对Windows平台依赖性太强

40、。开源的三维绘制引擎中具有跨平台性且适合地形绘制的有Irrlicht, OGRE (Object-Oriented Graphics Rendering Engine), VTK(Visualization Toolkit)等。但是Irrlicht比较适合小型地形的开发;OGRE偏于注重架构和设计,不太关注绘制效率,而且对于重新封装比较困难;VTK的再次开发和功能抽取都非常方便,而且也有很多使用VTK可视化三维地形的先例272829,所以综合考虑,我们选择使用VTK作为本系统的绘制引擎。下面就介绍一下VTK的特性以及它独特的管道技术和对象模型,并描述本系统中抽取使用的一些VTK类及其可视化流水

41、线。2.1 VTK简介VTK(Visualization Toolkit)是一个开放资源的免费软件系统,是基于Windows和Unix环境的面向对象的可视化工具。VTK在面向对象原理的基础上,底层使用三维函数库OpenGL,将一些常用算法和细节屏蔽起来,以类库的形式给开发工作以直接支持,提高了工作效率。它的内核是用C+构建的,包含有大约250,000行代码,650多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用VTK。VTK几乎可以在任何一个基于Unix的平台上操作,以及Windows 95/98/NT/2000/XP30。因此,采用VTK作为

42、地形三维可视化的开发工具是极为合适的。VTK还支持GPU编程和并行处理,本系统就用到了VTK提供的Shader编程,后文会详述。VTK曾用于处理大小近乎1个Petabyte的资料,其平台为美国Los Alamos国家实验室所有的具1024个处理器之大型系统。2005年曾被美国陆军研究实验室用于即时模拟俄罗斯制反导弹战车ZSU23-4受到平面波攻击的情形,其计算节点高达2.5兆之多31。VTK以用户使用的方便性和灵活性为主要原则,具有如下的特点31:(1) 具有强大的三维图形功能。VTK既支持基于体素(Voxel-based rendering)的体绘制(Volume Rendering),又保

43、留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件;(2) VTK的体系结构使其具有非常好的流(streaming)和高速缓存(caching) 的能力,在处理大量的数据时不必考虑内存资源的限制;(3) 能够更好的支持基于网络的工具比如Java和VRML,随着Web和Internet 技术的发展VTK有着很好的发展前景;(4) 能够支持多种着色如OpenGL 等;(5) 具有设备无关性,使其代码具有良好的可移植性;(6) VTK中定义了许多宏,这些宏极大地简化了编程工作并且加强了一致的对象行为;(7) 具有更丰富的数据类型,支持对多种数据类型进行处理;(8)

44、 既可以工作于Windows操作系统,又可以工作于Unix操作系统,极大的方便了用户。本文对VTK知识的介绍都节选自Visualization Toolkit: An Object-Oriented Approach to 3D Graphics32这本书。2.2 VTK的管线技术VTK的可视化设计是基于管线流的设计模式,将要处理的数据作为流动介质在管线中流动,即某一个对象需要上一对象处理结果作为输入,又把自己的输出传给下一对象,不同的阶段对数据有不同的处理方式。VTK设计的管道在下一对象请求数据时,上一个管道对象才进行数据集的相关处理,这对提高系统实时性有很大好处。这样,开发人员可以根据自己的需求将各种类型的数据进行转换和处理,建立自己的可视化管线。VTK的可视化管线主要由可视化模型(Visualization Models)和图形模型(Graphics Models)组成,如图2.1所示: 图 2.1 VTK的可视化管线的对象模型可视化模型主要对数据进行处理,生成可被绘制的几何体,而图形模型主要对生成的几何体进行绘制。2.2.1 可视化模型VKT的可视化过程就是数据在管线中流动,被管线不同的对象处理,最终以图形的方式表现出来。可视化模型就是把用户输入的原始数据,经过变换,成为图形模型可以接受的VTK自定义的数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号