一种基于GPU的弹坑实时绘制方法

2016-12-01 06:56郑顾平张荣华
图学学报 2016年4期
关键词:实时性顶点纹理

郑顾平, 邢 玥, 张荣华

(华北电力大学控制与计算机工程学院,河北 保定 071003)

一种基于GPU的弹坑实时绘制方法

郑顾平, 邢 玥, 张荣华

(华北电力大学控制与计算机工程学院,河北 保定 071003)

为解决动态地形绘制过程中高逼真性与实时性这一矛盾,提出一种基于GPU的动态地形实时绘制方法。首先基于Geometry Clipmaps算法构建地形层次结构,然后在更新过程中引入真实物理模型与过程纹理映射相结合方法,以使最终绘制的地形达到更为逼真的效果。为验证该方法的有效性,模拟了炮弹在草地上爆炸形成的弹坑效果,并与基于ROAM算法绘制的弹坑效果在绘制三角形数量、平均帧速率及CPU占用率3个方面做了对比。实验结果表明,所提方法能够有效减少绘制的三角形数量,并能获得较高的帧速率及逼真度,满足动态地形绘制对于高逼真性和实时性的要求。

动态地形;Geometry Clipmaps;物理模型;过程纹理映射;可编程GPU

高逼真度虚拟环境的建立是虚拟现实技术的核心内容,而地形是虚拟环境中不可或缺的重要组成部分。相对于静态地形,动态地形更具有其特殊性,地形需要根据仿真实体(如车辆、炮弹、行人等)与地面的交互而发生物理上的实时更新,这种改变不仅发生在绘制阶段,而且系统在底层所维护的数据

结构也要基于特定的物理模型而实时改变[1]。因此,高逼真动态地形绘制对实时性提出了更高的要求。

目前对于动态地形实时绘制技术的研究主要集中在两方面:一是如何有效管理地形的海量数据;二是地形形变策略的选择。对于第一点,目前主流的做法是采用细节层次模型(level of detail, LOD)。LOD算法能够有效地减少绘制的三角形数量,但现有的LOD算法[2-5]都局限于静态地形的领域。对于第二点的研究主要有基于物理和外观两种方法。基于物理的方法[6]能够精确地模拟地表真实的运动,但需要大量的精确计算,占用过多CPU资源。而基于外观的方法则放弃了复杂的计算精度,以纹理贴图的方式达到可以接受的视觉假象,但达不到动态地形绘制对高逼真度的要求。如何在地形逼真度和模型复杂度之间取得较为理想的平衡成为解决这一问题的关键。

基于上述分析,本文围绕解决动态地形绘制的高逼真性与实时性这一矛盾,提出了一种基于GPU的动态地形实时绘制方法。首先基于Geometry Clipmaps算法构建地形层次结构;随后提出了一种基于GPU的地形形变策略,将物理模型与过程纹理映射相结合对地形产生的形变位置进行实时更新;最后在绘制阶段通过顶点纹理获取技术生成实时更新的弹坑效果。实验结果表明,本文提出的方法与ROAM算法相比,能够有效减少绘制的三角形数量,并获得较高的帧速率及逼真度,将大量计算转移到GPU中,满足动态地形对于高逼真性和实时性的要求。

1 基于 GPU的 Geometry Clipmaps算法

基于 GPU的实时绘制已成为大规模地形绘制算法的一个趋势,近年来也出现了一些GPU友好的地形绘制算法,如 Geometrical M ipmapping[7],GPU-Based Geometry Clipmaps[8],小波变换[9]等算法。本文使用2004年Losasso和Hoppe[8]提出的基于GPU的Geometry Clipmaps地形绘制算法。传统的ROAM算法[10]采用层次结构来存储地形的几何数据,地形高程值和层次结构的更新完全由 CPU来动态维护,不适用于大规模的动态地形实时绘制。而Geometry Clipmaps算法是一种新的符合地形几何特性的层次数据结构,可以将地形结构以2D纹理形式存储在 GPU中。可将地形缓存到一组嵌套的规则网格中,其中心为视点所在位置,并随视点的移动而移动。由于可将地形分级合成到不同等级的几何剪切图上,因此可以借助顶点纹理获取技术(vertex texture fetch, VTF)在GPU中快速地更新和绘制。相对于ROAM算法,Geometry Clipmaps算法结构更加简单,退化更加快速合理,绘制地形所需要的运算均可在GPU内部完成,CPU只处理简单的运算,实现了将大量的计算从 CPU转移到GPU中,可满足大规模地形绘制对实时性的要求。

基于GPU的Geometry Clipmaps所使用的数据结构可以存储在顶点纹理中,这样二维的地形网格和顶点纹理之间可进行方便的映射。剪切图分为L层,每层包含N×N个几何数据采样点,每个采样点包含3个数据(x, y, z),x,y坐标由顶点缓冲存储。这个顶点缓冲可以在初始化时一次性发送到GPU中,并由其实现,所以后期不需要CPU进行干预更新。z坐标存储在一张单通道高程纹理中。N的大小选择2的幂减1,这种处理方式具有一定的优势。首先硬件只能处理 2的幂次方的纹理,使用2k-1可以最大程度利用2k×2k的顶点纹理。在绘制时留最右一列和最下一行不用。其次,因每层剪切图的边界需落在下一个比较粗糙的层的网格上,若选择两个层的中心不对齐,就可使精细层在粗糙层的中心位置进行一定的偏移。这样可以不用更新全部的粗糙层数据,这对于提高更新效率很重要。例如,选择N为255,此时仅需要4层就可以覆盖1024×1024范围的高程图。图1为系统实现所用到的地形剪切图,依次为从第 0层至第3层,最后一张为地形的真实高程图。

图1 地形生成的Clipmaps剪切图

2 基于GPU的地形形变策略

2.1 弹坑物理模型

动态地形与静态地形的区别在于其交互性以及地形结构的实时变化,而地形结构的实时变化

是由于仿真实体与地形交互产生的。因此,为了逼真地模拟现实世界中的现象,首先要提出合理的物理模型。文献[11]给出了一种弹坑基本物理模型,如图2所示。

图2 弹坑基本物理模型剖视图

弹坑内部高程值的偏移量计算公式如下

其中,C1为与地形表面特性相关的半径系数,C2为与地形表面特性相关的深度系数,A为爆炸物质的当量。在现实生活中,弹坑的几何形状以及弹坑的方向与爆炸冲击力的方向有关。为了使仿真结果更加真实,本文使用改进的椭圆形弹坑物理模型,如图3[11]所示。

图3 改进的弹坑物理模型俯视图[11]

2.2 过程纹理映射

当实时绘制动态地形时,仅改变地形的顶点数据不足以逼真地展现地形的细节形变,还需对形变位置的非几何属性(如地形纹理等)做出相应的改变。文献[1]提出了绘制地形变形映射图的方法,该方法对整张高程图进行更新,而在实际应用中,为了满足系统的实时效率,仅需要更新发生形变位置的地形纹理。因此,本文引入了基于片元着色器的动态地形过程纹理映射方法。

下面以炮弹在草地上留下的弹坑为例来说明本文的动态地形过程纹理映射方法。首先将更新后的纹理分成 3个区域,新纹理区域、过渡纹理区域和旧纹理区域,如图4所示。

图4 过程纹理示意图

由于弹坑中心区域受到的爆炸冲击最大,所以越靠近弹坑中心,地形形变越明显,顶点颜色的取值主要依赖新纹理区域。相反,越靠近弹坑的边缘区域,地形形变越微小,顶点颜色的取值主要依赖旧纹理区域。因此,本文用顶点到弹坑中心的距离d作为参数,对两种基本纹理图的元素颜色值进行加权平均运算。设权值为Pd,计算过程如下:

经上述方法得到的纹理混合效果如图5所示。

图5 纹理混合示意图

3 动态弹坑绘制

3.1 动态弹坑绘制流程

为了验证提出方法的有效性,本文模拟了炮弹在草地上形成的弹坑效果。动态弹坑绘制流程图(图6),主要分为3部分:地形初始化、地形更新以及弹坑渲染。

地形初始化主要是基于第 1节介绍的Geometry Clipmaps算法构建地形的层次结构,以及设备的初始化和顶点、索引缓冲区的填充。下面详细介绍地形更新及地形渲染。

3.1.1 地形更新

更新部分是动态弹坑绘制的关键部分,需要获取各种输入设备的交互信息并进行处理。由于2.2节介绍了过程纹理映射方法,下面重点介绍几何剪切图的更新。

随着视点的移动,每个剪切图窗口在其的视见体棱锥层内进行平移,并保持以当前视点在地面投影位置为中心。由于精细层和粗糙层的中心不对齐,所以较精细层可以在粗糙层内进行一定的偏移。视点的运动是连续的,每一帧只需要处理一个小的L层区域。视点的相对运动从第0层到第 L-1层呈指数级减少,大部分更新只对较精细层进行。

更新中要进行剪切图的平移。为了避免数据的平移,本文在 Hoppe环形访问方式的基础上,分3部分更新剪切图,如图7所示。A、C两部分是由于视点在Z轴方向上运动产生的,B部分是视点在 X轴方向上运动产生的。更新时,先渲染 B区域,然后对于在 Z轴方向运动产生的区块,不重复渲染B部分,只渲染A、C两部分。使用这种方式,可有效避免重复更新剪切图数据。

图6 动态弹坑绘制流程

图7 更新区域示意图

3.1.2 弹坑渲染

利用可编程GPU绘制成流水线完成弹坑的渲染,使用着色器程序在顶点着色器和片元着色器中进行处理。顶点着色器的主要作用是获取剪切图层作为输入,通过读取每个点所记录的整数部分和小数部分,然后通过计算混合参数来混合两个高程得到最终的高度。片元着色器通过法线图的纹理对地形进行光照的计算,再根据顶点着色器传入的纹理混合参数成为像素点混合纹理。

在高程数据渲染中,不同层次的连接处容易

产生T型裂缝,Geometry Clipmaps算法采用过渡带来消除T型裂缝。即在每层Clipmaps外围引入一个过渡区域,再对其进行精细层和相邻粗糙层的高程混合。设取样的位置为(x,y),视点位置为(vx,vy),混合参数的计算如下

ay的计算也如此,ω是过渡宽度,取N/10。然后在当前精细层的高程zf和粗糙层的高程zc之间进行线性插值

粗糙层的点的获取,需通过计算边缘上两个端点样本的平均值获得

为了简化,可直接读取当前纹理层的 2个位于粗糙层上的点并取平均值。这些点和粗糙层相对应的点的高程是相同的,可以免去直接采样粗糙层样本。方法如图8所示,对于取样的点(图中红色空心圆)(x, y),先对其坐标对 2取模。得到(modx,mody),然后取样点的坐标为

图8 粗糙层采样说明

3.2 弹坑绘制环境

本实验使用一张1024×1024的dds格式高程图,地形的大小为4 MB。将L设为4,N设为255,这样第 4层 L3就能覆盖整个地形。实验在 Intel Core2 Duo T6600 2.20 GHz,2 G内存,NVIDIA GeForce G 105 M显卡配置的计算机上测试。在地形静止时可达到平均81帧/秒的绘制速率,当绘制弹坑地形时其平均帧率为63 fps。

3.3 弹坑绘制结果及分析

为了验证本文提出的基于GPU的动态地形绘制方法的有效性,在同一平台上将文献[10]基于ROAM算法与本文绘制结果作对比,如图9~11所示。由图9可以看出,文献[10]由于未引入真实物理模型计算弹坑形变量,绘制出的弹坑边缘不符合现实的物理法则,且弹坑内部的纹理并没有根据土壤的性质发生改变。由图10、11可以得出,本文使用的基于物理模型的方法可以适用于不同情况下的动态弹坑绘制,且绘制出的弹坑形状更加符合自然规律。而过程纹理的引入使弹坑效果更加真实、多样,符合动态地形绘制对高逼真度的要求。

图9 文献[10]方法绘制的弹坑效果图

图10 本文方法绘制的弹坑效果图

图11 本文方法绘制的有方向弹坑效果图

此外,为了验证本文方法能够满足动态地形绘制对实时性的要求,对两种方法在绘制三角形数量、形变时的平均帧速率以及CPU占用率3个方面进行了对比,结果如图12~14所示。由图12可以看出,在同一视点位置下,由于ROAM算法绘制的三角形数量与视点位置有关,而Geometry Clipmaps算法将地形嵌套成一组规则的网格,每次只需更新剪切层窗口大小的区域,因此,使用Geometry Clipmaps算法构建的地形结构能够有效地减少绘制的三角形数量。此外,在地形发生形变时,由于本文方法将大量计算由CPU转移到GPU中完成,绘制出的弹坑效果能够获得更高的帧速率,且占用较少的CUP资源,满足动态地形绘制对实时性的要求。

图12 绘制三角形个数对比图

图13 平均帧速率对比图

图14 CPU占用率对比图

4 结 论

为有效解决高逼真动态地形的实时绘制问题,本文在Geometry Clipmaps算法构建地形结构的基础上,提出了真实物理模型与过程纹理相结合的方法,将大量的计算过程移植到GPU中,充分发挥了现代GPU的强大图形渲染功能。实验结果表明,本文提出的方法能够有效减少绘制的三角形数量,在保证地形绘制实时性的前提下,能够得到较为逼真的仿真结果,满足动态地形绘制对高逼真度和实时性的要求。下一步的研究重点在于将有限元方法应用到动态地形实时绘制中,不仅在地形更新过程中应用有限元方法,在物理模型仿真过程中也应用有限元的相关方法,以得到更为高效的绘制效果。

[1] 张荣华. 基于GPU的动态地形实时绘制技术的研究与实现[J]. 计算机工程与设计, 2010, 31(20): 4434-4437.

[2] 孟 放, 查红彬. 基于LOD控制与内外存调度的大型三维点云数据绘制[J]. 计算机辅助设计与图形学学报, 2006, 18(1): 1-8.

[3] 刘晓平, 凌 实, 余 烨, 等. 面向大规模地形 LOD模型的并行简化算法[J]. 工程图学学报, 2010, 21(5): 16-21.

[4] Kang L, Wu L D, Yang B, et al. Large-scale terrain simplification and visualization based on TIN [J]. Computer Aided Drafting, Design and Manufacturing, 2008, 18(2): 1-8.

[5] 郑 新, 刘 玮, 吕辰雷, 等. 海量地形实时动态存储与绘制的 GPU实现算法[J]. 计算机辅助设计与图形学学报, 2013, 25(8): 1146-1152.

[6] Chen X, Zhu Y. Real-time simulation of vehicle tracks on soft terrain [C]//Advances in Visual Computing. Berlin: Springer Heidelberg, 2013: 437-447.

[7] de Boer W. Fast terrain rendering using geometrical mipmapping [EB/OL]. [2009-10-15]. http://www. flipcode.com/articles/article_geom ipmaps.shtm l.

[8] Losasso F, Hoppe H. Geometry clipmaps: terrain rendering using nested regular grids [C]//Proceedings of ACM Transactions on Graphics. New York: ACM Press, 2004: 769-776.

[9] 陈国军, 徐晓莉, 张 晶, 等. 基于B样条小波的动态地形实时绘制[J]. 工程图学学报, 2009, 30(1): 59-65.

[10] 张荣华. 基于 ROAM 算法的弹坑实时可视化系统设计[J]. 系统仿真学报, 2006, 18(2): 511-516.

[11] 王 达. 虚拟战场中一种基于 GPU的大规模动态地形仿真研究[D]. 武汉: 华中科技大学, 2012.

A Real-Time Crater Rendering Method Based on GPU

Zheng Guping, Xing Yue, Zhang Ronghua

(School of Control and Computer Engineering, North China Electric Power University, Baoding Hebei 071003, China)

In order to solve the problem on high fidelity and real-time during the dynamic terrain rendering process, a real-time rendering method of dynam ic terrain is proposed based on programmable GPU. First, the terrain hierarchy is constructed based on Geometry Clipmaps algorithm. Second, a dynamic terrain rendering method is introduced to achieve a more realistic effect on the final terrain based on real physical model and processing texture mapping during updating process. Finally, the crater effect formed on the lawn is simulated to verify the effectiveness of the method. And the proposed method is compared w ith the method based on ROAM on amount of draw ing triangles, the average frame rate and CPU usage. The experiments results show that the proposed method can reduce the amount of draw ing triangles effectively, and achieve higher frame rates and fidelity. The requirements of high fidelity and real-time in dynam ic terrain rendering can be meted.

dynam ic terrain; Geometry Clipmaps; physical model; processing texture mapping; programmable GPU

TP 391.9

10.11996/JG.j.2095-302X.2016040451

A

2095-302X(2016)04-0451-06

2015-09-03;定稿日期:2016-01-26

国家自然科学基金项目(51407076);河北省自然科学基金项目(F2014502050)

郑顾平(1960−),男,河北石家庄人,教授,博士。主要研究方向为计算机仿真、分布式系统和人工智能。E-mail:zhengguping@126.com

邢 玥(1990−),女,吉林白城人,硕士研究生。主要研究方向为计算机图形学、虚拟现实。E-mail:machange2013@sina.cn

猜你喜欢
实时性顶点纹理
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
基于BM3D的复杂纹理区域图像去噪
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
消除凹凸纹理有妙招!
一种车载Profibus总线系统的实时性分析
数学问答