计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

一种基于几何多重映射的地形绘制优化算法(1)

2015-03-04 01:11
导读:计算机应用论文论文,一种基于几何多重映射的地形绘制优化算法(1)怎么写,格式要求,写法技巧,科教论文网展示的这篇文章是很好的参考: 摘 要 为了使地形绘制算法更好适应现代图形卡的硬件架构,达
摘 要 为了使地形绘制算法更好适应现代图形卡的硬件架构,达到CPU和GPU的均匀负载,提出一种基于几何多重映射的地形绘制优化算法。该算法利用线性插值的方法改善了几何多重映射算法中由于网格分辨率变化引起的图像突变,经实验数据证明,优化后的算法绘制速度得到极大提高,并且分辨率不同的网格间过渡自然,图像质量得以提高。 关键词 地形绘制;线性插值;LOD
1 引言 地形绘制在3D游戏、GIS、计算机仿真中应用很多,关于这方面的算法也一直是计算机图形学领域研究的热点。地形的绘制需要很多数据参与,对系统资源消耗巨大。加上早期图形卡的数据吞吐能力相当有限,缺乏计算功能,因此当时对地形绘制算法的研究主要集中简化网格模型,减小绘制多边形数目,以期减轻图形卡的数据负载,达到实时渲染大地形的目的。在二十世纪九十年代中后期,出现的Progressive meshes[1],ROAM[2],Continues LOD[3],以及相关的改进算法都称为LOD(Level of detail)算法,其基本思想都是根据视点的位置和地形几何复杂度实时产生细节分辨率不同的网格简化模型。即离视点近或总体起伏较大的模型用高精度的网格来绘制,离视点较远或起伏不很明显的模型用相对低精度的网格绘制。很显然,这中间需要实时计算很多评价参数,需要实时构建全部的地形网格,CPU工作量极大。 随着图形卡数据吞吐能力的不断提高,每秒钟处理上亿个三角形已不再困难。很多计算,比如几何变换和光栅处理都可以交给GPU去计算。所以在GPU数据吞吐量很大的情况下,如果一个算法在剔除渲染顶点的过程中占用了太多CPU资源,出现GPU等待CPU的情况,那么即使算法在剔除多余顶点方面做的很好,但总体绘制效率也不是高效的。而传统的LOD算法都存在这方面的缺陷。并且,受硬件带宽的限制,频繁的传输量巨大的顶点数据,使得时间集中消耗在数据“迁移”过程中。过多的DP(Draw Primitive)也使得图形卡不能发挥最大功效,造成资源极大浪费。所以要适应现代图形卡的硬件架构,算法必须改进,几何多重映射(Geometrical Mipmapping)[4]等算法由此产生。 本文在GeoMipMap(Geometrical Mipmapping)算法的基础上,改进了原算法抑制不同细节分辨率模型之间突变的处理方法,使得在提高绘制效率的同时,保证了绘制图形的质量。通过使用查表法的分块网格顶点数据组织方式,使得CPU的工作进一步减轻。此外,本文还利用了现代图形卡的存储功能来优化地形的绘制。2 GeoMipMap 算法2.1 基本思想 GeoMipMap算法是Willem根据纹理多重映射的概念提出的,他把整个地形场景在xz平面上进行分块(block),比如用33×33的block把1025×1025的地形表示为32×32个block。每个分块可用不同分辨率的网格模型来描述。在同一分块内,网格模型的分辨率相同。采用隔行采样的方式生成不同分辨率的网格。整个地形的模型表示和组织如图1所示。 不同的block之间互相拼接时,如果分辨率不同则可能产生裂缝。为了消除裂缝,在较高分辨率的block边界上,忽略一些点作为网格顶点,如图2所示。 每个block分辨率是通过屏幕空间误差[4]来决定的。在地形数据预处理阶段,对每个block的每个分辨率模型,都取一个屏幕误差阀值ε(一般取4个像素),预先计算出当ε等于4个像素时,视点到block的距离d,并保存在查找表中。当实时绘制时,根据视点到每个block的距离查找表中的d,从而决定该block的网格分辨率。2.2 优点和不足 GeoMipMap算法的网格生成方式显然和ROAM算法以及基于四叉树的连续性LOD算法大不一样。以基于四叉树的连续性LOD算法为例,他是通过自顶向下的方式用四叉树递归地将地形分成一个个小地形块,越往下细分,地形块的大小越小,直至不能细分。当视点发生改变时,所有的顶点都必须重新参与细分的递归运算,这种算法能根据实际情况最大程度确定整个地形的网格分辨率,但计算量很大,并且递归层次很多。而对于GeoMipMap算法来说,当视点改变时,只需要判断可见的每一个block的网格分辨率应该是多少,block内部的顶点并不参与计算。虽然这种做法不能最大化减少进入渲染管道的顶点,减少三角形面片,但是增加的这些渲染顶点对现代图形卡来说是不会影响绘制速度的。相反,由于他减小了实时绘制时模型简化的计算复杂度,速度得到极大提高,所以他是符合现代图形卡硬件架构的地形绘制算法。此外GeoMiaMap相对固定的三角形面片组织方式,也使得进入固定渲染管线的顶点能更好的组织成三角形带,大大减少传入图形卡的顶点个数。 但是,这种算法由于不是连续的LOD算法,也就是说LOD的粒度比较粗放,因此在block的网格分辨率发生改变时,会产生网格形状的突变,使得在地形漫游时,图形过渡不自然。虽然通过屏幕投影误差来选择block的网格分辨率可以使突变的效果有所减轻,但对用户来说比较明显。本文通过线性插值的思想,使层次过渡由突变转为逐步递进,极大减小了这方面的不足。3 地形绘制优化算法3.1 地形数据的总体组织和表示 我们首先读入一个场景的DEM数据(高程数据),保存在一个顶点线性表中,然后把这个场景在xz平面上划分成均匀大小的多个block。block的大小按需求而定,其边长满足 ,如9×9,17×17,33×33等。如果地势总体比较平坦,我们可以选得大一点,如果对地形的细节要求较高我们可以选得小一点。本文以19×19作为block的大小。 block通过顶点索引所组成的三角形带描述他负责的一片小的区域。整个场景用一棵完全四叉树把这些blocks组织起来。实时渲染时完全四叉树负责场景的裁剪,决定哪些blocks应该绘制,然后计算可见block的网格分辨率,从而得到整个地形要渲染的三角形面片。其数据组织如图3所示。
上一篇:语音合成技术及其应用(1) 下一篇:没有了