中国电子商务进入行业网站时代

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

虚拟战场中基于GPU的动态地形实时可视化技术研究•虚拟战场是指利用虚拟现实技术生成虚拟作战环境,通过计算机网络、计算机图形学、地理信息系统等交叉技术进行战略、战役、战术等交互仿真的应用。•地形可视化指的是将地形的高程DEM数据绘制成3D模型,以便在虚拟的世界中进行实时地浏览。在DEM中,地形空间被分割成规则的几何单元,通常是正方形,而每个几何单元代表了一个高程采样值。在静态地形可视化中,地形的高程数据是不变的。在动态地形中,地形的高程数据会被实时的修改。例如导弹爆炸生成弹坑导弹撞击地面修改地形模型和纹理导弹爆炸生成弹坑不同的导弹入射角产生不同形状的弹坑用细节层次(LOD)技术简化地形网格数据车辆行驶产生轮胎痕迹车痕修改地形模型和纹理用LOD技术简化地形网格数据主要创新点•1改进的LOD算法•LOD(LevelofDetail)技术采用各种细节层次、各种精度的地形模型来描述地形的整体或局部区域,从而达到“近处精细,远处粗略”的效果。•LOD技术减少了所需要绘制的三角形数量,提高了系统的实时效率,保证了输出的地形图像具有一定的逼真度。LOD地形网格近处密度大,远处密度小1.1地形数据LOD的构建我们首先将整个地形的高程数据分割成若干正方形的block其尺寸大小为257X257,并且以四叉树结构进行组织。如图,根节点block代表整个地形,每个父节点都被分成四个子块。而树的层次L越低,节点block的网格精度就越高。为了进一步简化地形网格,从而加速地形绘制,我们将每一个block分成16个tile,每一个tile又分成16个tilelet。1.2LOD的选择•每一个block或者tile的层次都有一个屏幕误差t:•其中δ是地形区域的几何误差,D是视点到地形区域的最近点的距离,W是屏幕空间的像素宽,fovy是视场角。•我们会根据t选择地形的LOD,使得t小于给定的误差阈值。••在实时运行中,先根据误差自顶向下的在四叉树中选择所需的block层次,得到一个粗略的简化地形:•然后根据误差选择每一个block中tile的层次,得到一个精细的简化地形。tile的简化方法就是去掉中间行以及列的顶点,得到新的网格层次。tile的简化方法可以在GPU中快速并行的执行。图中白色的顶点被去除•为了便于后续GPU算法的实现,我们将CPU内存中的block地形高程数据转化成block纹理图,存放于GPU存储器中。block纹理图中每一个元素的颜色值代表了对应顶点的高程值,它可以通过顶点处理器进行访问。1.3视景体裁剪技术视景体裁剪技术就是在绘制前剔除不可见的三角形。首先在CPU中进行初级裁减。红色表示处于视景体外部的tile,它们被直接剔除。黄色表示处于视景体内部的tile,它们被直接送入管线绘制。而灰色表示与视景体相交的tile,它们的tilelet被传输到GPU中进行二级裁剪。为了减轻CPU的负担,我们用Vertexbufferobject(VBO)来建立一个几何模板用于传输tilelet。VBO是一个点阵,它描述了tilelet的索引信息。通过VBO在GPU中找到tilelet四个角的顶点数据,然后就可以进行并行的二级裁剪。如图红色表示处于视野之外的tilelet,它们被剔出。这样就进一步减少了需要绘制的多边形数量1.4动态再细分区域•原始的地形数据有一个最大分辨率,这个分辨率往往不足以表达动态地形的细节。所以我们引入动态再细分区域技术。该技术就是在发生地形形变的区域,用GPU对地形分辨率进行实时的扩展,加入新的顶点与多边形。•具体步骤如下:•1)将最大分辨率为nXn的地形区域的高程数据转化为GPU中nXn的纹理图。•2)用nXn的纹理图绘制并填满一个n’Xn’的屏幕空间。对不匹配的纹理坐标点进行线性插值,从而得到一个n’Xn’的纹理图。下图黑点为插值处:3)将n’Xn’的纹理图还原为n’Xn’的高程数据。于是原来nXn的分辨率扩展为n’Xn’。nXn的地形高程数据n’Xn’的地形高程数据2.物理模型与过程纹理•在虚拟战场动态地形系统中,为了生成实时的弹坑以及车痕,我们就要实时修改地形的高程数据。而这个操作依赖于弹坑以及车痕的物理模型。此外在改变地形表面几何特征的同时,还要改变地形表面的纹理特征。原始的单一纹理无法满足仿真的需求,因此这里提出了一种过程纹理的方法来描述地形表面细节上的变化。2.1弹坑物理模型与过程纹理根据爆炸力学,我们设计弹坑模型如下在导弹撞击地面所引发的爆炸事件中,由于导弹与着弹点区域的地形表面存在一个入射角,而导弹自身的冲量会在水平面上产生一个分量。这个分量就会改变弹坑的形状,因此我们设计了带方向Vc的弹坑模型。它是一个不对称的几何体。为了生成弹坑的过程纹理图,我们采用了三种基本纹理图:焦土,岩石以及草地。由于弹坑中心区域受到爆炸的冲击最大,所以中心区域的地形表面主要由焦土构成。稍微远离弹坑中心的区域主要由岩石构成,而弹坑边缘区域则由草地构成。根据这一原理,我们对三种基本纹理图的元素颜色值进行加权平均运算,得到一个渐变的合成纹理图。公式如下,texturetile[I]是基本纹理图的元素值,percentagei表示权值。2.2车痕物理模型与过程纹理我们根据经典的“压力-下陷”理论设计了车痕物理模型,公式如下。其中其中W表示轮胎的负载重量,b表示轮胎的厚度,D表示轮胎的直径,Kc表示粘聚因子,kØ表示裁剪模量,n表示下陷系数。Y就是轮胎压力作用在地形表面时,顶点高程值的偏移量。•车痕的基本纹理图有两个:上层地貌纹理图以及下层地貌纹理图。越靠近车痕的对称轴,地形表面的下陷越明显,这时主要是下层地貌纹理图。相反越靠近车痕的边缘区域,就主要是上层地貌纹理图。根据这一原理,我们进行加权平均运算,得到一个渐变的合成纹理图。其公式与弹坑纹理类似。3.地形形变策略设计•地形形变策略直接影响着动态地形仿真的实时效率。它主要分为两个步骤:•1)顶点偏移量的计算。•2)形变地形的生成。•以前的算法主要依靠CPU完成地形形变操作,这里我们将该操作移植到了GPU中,大大提高了实时效率。3.1车痕地形形变策略为了用GPU计算车痕地形的偏移量,我们首先将视点移动到车辆模型的底下,并且使其低于整个地形的最低点。然后使视点方向向上并垂直于水平面。最后将投影方式设置为平行投影,并使视口的大小囊括车辆所在的地形区域。这样就可以用framebufferobject(FBO)比较地形与车轮胎的顶点深度,如果轮胎深度大于地形深度则说明该顶点产生了下陷。将轮胎深度与地形深度之间的差值绘制到GPU中,就得到了车痕偏移量纹理图。•然后用GPU将对应的地形高程纹理图与车痕偏移量纹理图进行混合,将两者的数据进行减法运算。然后还原成地形高程数据,就可以生成车痕形变地形。3.2弹坑地形形变策略•弹坑的偏移量是固定的,它可以由弹坑模型直接转换为偏移量纹理图,并且一直保存在GPU中。•然后根据弹坑中心点坐标以及弹坑方向,将地形高程纹理图与弹坑偏移量纹理图进行匹配与混合,就可以生成弹坑形变地形4.动态地形中海量地形数据的管理•由于地形数据的海量性,在可视化过程中我们无法将全部的地形一次性的调入内存里。于是需要将整个地形数据分割成许多子区域(block),然后存储于分布式的外存设备中。在实时运行中,根据需要将数据在内存和外存之间进行读取和交换。•为了高效的管理和调度海量地形数据,我们设计了一种基于GPU的海量地形管理方法,实现了弹坑以及车痕的动态地形管理。4.1地形集群管理系统•地形集群管理系统通过连接大量的普通计算机作为存储节点,从而提供高可靠性、高性能、可扩充的网络存储服务。•地形集群管理系统是独立于虚拟战场可视化系统的外部系统,专门进行地形数据的管理和调度。•地形集群管理系统分为主节点服务器,元数据服务器,I/O节点服务器。•1)主节点服务器•运行着两个主线程,一个是监听服务,负责监听地形可视化系统的数据请求;另一个是调度服务,负责根据地形可视化系统的请求向元数据服务器查询数据,并向I/O节点服务器转发请求。•2)元数据服务器•记录着所有地形block数据的元数据。所谓元数据是关于地形block的地理空间信息,属性信息,存取方式,组织形式等等一些特征。元数据的作用是帮助数据使用者方便地理解和操作数据。•3)I/O节点服务器•提供最终的数据存储服务和数据传输服务,它由许多分布式的存储设备构成。整个地形数据被分割成block后,这些block会以合理的方式进行编码与分配。最后保存在I/O节点服务器中。4.2GPU缓冲池预装载策略•缓冲池的预装载策略是为了提前将需要的地形block从外存设备中调入可视化系统的内存,从而保证实时仿真的流畅性。我们在GPU中建立了一个4X4block大小的缓冲池。将视野里的地形高程数据转化成GPU缓冲池里的纹理图。当试点平移时,需要更新的只有黄色的L型区域。蓝色区域不变,虚线部分被移出缓冲池。当试点上升时,需要将原来16个block合并成4个block(蓝色区域),然后更新黄色的L型区域。当试点下降时,只需要将原来中间的4个block分裂成16个block(蓝色区域。4.3动态地形管理设计•以前大多数的海量地形管理策略都局限于静态地形。在静态地形中由于地形数据不会被实时地修改,外存中的地形数据是只读的。而在动态地形中我们不但要对外存数据进行读操作,而且还要进行写操作用以保存地形的变化量。否则随着block移出内存,地形变化量也随之丢失。当再次调入同一个block时,我们将无法恢复原来的弹坑或者车痕。•以前的方法往往是把改变后的地形block整个保存在外存中,但这样会产生两个问题:1)将block传输到外存会占用大量的网络带宽,增加调度策略的复杂度,甚至严重影响系统实时效率;2)为了不覆盖初始数据,修改后的页面将会占用额外的外存空间,这就使得海量地形变得更加庞杂,从而大大增加了管理与组织的难度。•我们结合前文中的地形形变策略,提出了一个基于GPU的动态地形管理方法。•对于弹坑的仿真,我们为每一个block设置一个元数据Oxy,它记录了弹坑中心点坐标。在调入一个block后,我们可以利用Oxy以及弹坑偏移量纹理图在GPU中快速的恢复弹坑地形。•对于车痕的仿真,我们首先将车痕纹理图简化为中轴线纹理图。这样我们记录的实际上是一系列的点状坐标数据,它的数据量非常小。然后我们将每一个block的中轴线纹理图传输到外存中保存,并且设置一个元数据T。•如果T=1则在调入一个block的同时将对应的中轴线纹理图一起调入,根据轮胎的宽度我们可以在GPU中快速的恢复车痕地形。将地形block转换成地形纹理图储存于GPU中是否已经发生形变绘制地形是否发生发生形变地形block是否超出视野将弹坑纹理图储存在GPU中在GPU中修改地形纹理图外存设备更新Oxy,T以及中轴线纹理图否否是调入blockOxy,T以及中轴线纹理图否是是将内存中的block移除,并输出Oxy,T以及中轴线纹理图5.总结•以前的研究大都局限于静态地形的仿真,而且大都采用的是CPU逐个三角形处理的方式。本文充分利用了GPU的并行计算能力,提出了比较理想的动态地形算法。主要创新点如下:•1)提出了改进的LOD算法以及地形分辨率的动态扩展技术。•2)提出了较为良好的弹坑与车痕物理模型以及高效的地形形变策略。•3)提出了海量动态地形数据的管理方法。

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功