田娟秀,廖 智,梁九妹,龚军辉
(1.湖南工程学院 计算机与通信学院,湘潭 411104;2.湖南工程学院 电气信息学院,湘潭 411101)
基于GPU的海面实时仿真的研究与实现
田娟秀1,廖 智1,梁九妹1,龚军辉2
(1.湖南工程学院 计算机与通信学院,湘潭 411104;2.湖南工程学院 电气信息学院,湘潭 411101)
海面的仿真研究不仅在计算机图形学领域具有重要的意义,同时对于水力学、流体力学、波动力学、海洋学等都具有重要的实际意义.本文采用基于海洋统计和经验的模型,该模型采用大量正弦波的叠加来模拟海面,通过FFT合成一个类似海浪谱分布的高度场;通过实时纹理映射技术实现水面的反射和折射,从而增强水波动画的真实感;充分利用图形处理单元(Graphics Processing Unit,GPU)提供的可编程特性及强大的计算能力,用GPU来提高水面绘制速度,实现海面实时绘制.
海面仿真;实时绘制;GPU;Cg
自然景物的模拟一直是计算机图形学最具挑战的问题之一,关于山脉、树、大海、草地等自然景物的模拟,在计算机游戏、影视、广告各领域中有着广泛的用途.水波现象一直是计算机图形学领域的研究热门,涉及到几何建模、光照处理、流体力学研究分析等多个方面,对实时性要求高的水域场景进行实时渲染更是被公认为有相当难度的研究领域,因此,对海面和海浪的实时绘制对增加虚拟现实的真实感和沉浸度有着非常重要的作用.
本文在研究经典水波模拟算法与技术的基础上,结合GPU可编程特性,研究实现了真实感较强和实时性好的海面动画.
近年来,国内外已有不少人进行了真实感水面的绘制及水波的模拟,取得了不错的效果.Peachey[1]采用正弦函数和二次函数的线性组合,求出高度场以表示海面;Fournier[2]则采用参数曲面表示水面,解决了波峰卷曲的波浪建模问题;Kass[3]通过对浅水方程加以简化来模拟水波动画;陈和平[4]等在考虑海浪的大小时,引入了概率统计思想,并采用了视点相关的海浪三角网格技术,实现了海面上的实时漫游;清华大学杨怀平[5,6]利用海浪频谱和方向谱的相关公式,实现了基于海浪谱波浪造型及显示.
概括起来,对海浪进行几何造型的方法可以分为两大类:
(1)基于波形分析的模拟方法,模拟大多数采用类于正余弦函数来表示水流曲面的方法,这一类方法能实现视觉上逼真的效果 ,但不能够反映水流的规律.
(2)基于物理模型的方法,借助于物理模型来模拟物体的运动,将数值计算和图形学结合在一起,模拟出接近真的物理现象.
还有一些文献把模拟的水流看作由无数的水颗粒组成的集合体,这种方法不能模拟作为一个整体的水波,但可用来模拟瀑布、喷泉以及水滴.通过粒子系统建模模拟浪花和飞沫可以增强海浪的真实感.
基于物理模型的方法因涉及到的物理仿真过程极其复杂,虽然逼真度、准确性都非常高,但往往要数分钟甚至数小时才能渲染一帧,实时性不高.这在实时性要求很高的三维游戏等应用领域中是不可取的,必须要很好地权衡画面的质量与性能两方面的矛盾.
为了满足实时性的要求,水波模拟的发展趋势主要下面两种:一是对物理仿真过程进行简化;二是用GPU来提高水面绘制的真实感及实时性.随着计算机图形硬件性能的不断提高,复杂的图形计算已经逐步从CPU转向图形硬件的图形处理单元(GPU).可编程图形处理器的发展和应用成为21世纪在计算领域重要发展的事件之一.基于GPU的图形处理及其通用计算近年来成为图形学及计算领域的热点研究课题.如中科院吴恩华[7]对基于图形处理器(GPU)的通用计算进行了深入的研究,引领了GPU应用研究的热潮.创建真实的实时水波特效的困难性主要是因为表现水面需要使用大量的多边形和复杂的着色器.充分利用GPU提供的可编程特性及强大的计算能力,采用GPU来提高水面绘制的真实感及实时性已成为实时水波特效技术的发展趋势.Cg语言[8]是为GPU编程设计的高级绘制语言,由NVIDIA公司开发.本文采用Cg进行顶点着色、像素着色,以充分利用GPU提供的可编程特性及强大的计算能力,达到实时渲染的目的.
海面模型要能模拟出水波受内、外力作用下的表现,也就是水波如何运动、如何改变形状、如何与周围环境交互.如前所述,利用基于流体力学及光学相关公式来建模,真实感好,但可能满足不了实时性.本文均衡考虑了海面模型的真实感与实时性的问题,采用的是Tessendorf[9]介绍的基于统计模型和FFT来模拟海浪的方法.
海浪仿真的基本模型是将海面看作由一系列不同振幅、频率和传播方向的余弦波叠加而成.因此,海面可用水平面任一点(x,z)在某一时刻t对应的高度场y=h(x,z,t)表示,由下式计算:
其中,y0为自由海面波高(典型值为0);Nω为单元波数量;Ai为第i个波的振幅;ωi为角频率;→k=(kix,kiz)为波数矢量,代表在x-z水平面的传播方向.x轴水平向右,z轴水平向前,y轴代表垂直高度方向.
由式(1)可知,线性波描述的海浪呈三角函数形状,波谷、波峰平滑对称,适合描述相对平静的海面.当风作用在海面时,海浪开始成长,陡度增加,波峰变得陡峭而波谷相对平坦,此时采用式(1)描述海面并不合适,而Gerstner模型却能较好地描述该情况下的海浪形状[2].Gerstner模型以单个水质点为研究对象,认为每个水质点绕垂直平面某一固定点做圆周运动,设未扰动波表面上一点为X0=(x0,z0),其相应波高度为y0=0,当有波幅为A的单个波经过,表面上的该点坐标值会被式(2)替换:
其中,x轴水平向右,y轴垂直向上,z轴水平向前;k=(kx,kz)为波数矢量,代表波在该点水平面上的传播方向,K为k的幅值,且K=2π/λ,λ为波长;ω为角频率.根据k×A的不同乘积值,可获得不同陡峭程度的波浪.当K×A>1时,将会发生波峰“交叠”现象.通过引入波形控制因子μ,可以调节波浪的陡峭程度,并且可避免“交叠”.据此,式(2)可改写为:
Gerstner表面是一组波的叠加,因此,海浪的波数表达式为:
直接计算式(4)效率很低.观察上式,其基本运算是计算正弦(余弦)函数值,正好对应傅立叶变换的虚部(实部),因此,可以通过快速傅立叶变换(FFT)来提高计算效率.若要构建M*N大小的表面,水平面上一点X=(x,z)的高度h(X,t)可用下式计算:
式中,k=(kx,kz)为二维向量,kx=2πn/Lx,kz=2πm/Lz,-N/2≤n≤N/2,-M/2≤m≤M/2.FFT变换通过式(5)为每一个离散点X=(nLx/N,mLz/M)计算高度场.
上述方法构建的海面还是比较光滑,真实感不够,需要加上噪声扰动来提高渲染质量.Perlin噪声函数是Ken Perlin于1985年首先提出的.从本质上来说,Perlin噪声函数是一个随机数生成器,该函数用一个整数作为参数,然后返回一个基于这个参数的随机数.如果把同样的参数传递两次它会产生相同的随机数,而对于普通的随机函数来说,两次传递相同的参数可能产生不同的结果.图1所示是用Perlin噪声生成器产生的不同频率下二维噪声和叠加.
图1 Perlin噪声的叠加
为了提高海面绘制的真实感,本文采用了Fresnel光照模型来计算水面的反射、折射现象,采用凹凸贴图技术来生成水面光照效果.
图2 光的反射与折射
假设海面反射在局部区域上完全接近镜面反射,即把波动的海面视作是由若干个局部镜面组成的,入射角与反射角相等,而折射角遵循Snell法则,因此海面的颜色可以简单的由式(6)算得:
Creflect和Crefract分别代表反射颜色和折射颜色.F是Fresnel系数,可以由如下式计算得到:
其中α是入射光线与表面法线的夹角,k=cosα,g=1.333+k2-1,则F取决于k.当海水波动时,使表面法向量产生变化,入射角也会跟着变化,因此F就频繁的变化,从而导致了海水表面颜色的变化.
用Perlin噪声合成的高度场只是一个海水表面的大致轮廓,为了弥补细节上的缺失,可将一预先定制的凹凸纹理映射到水面轮廓上,来展示水面细小的波纹,从而提高真实感.
海面是大面积的水域,表现水面需要使用大量的多边形和复杂的着色器.一次渲染所有的三角形是不可取的,常用的做法就是采用LOD,即层次细节模型.当场景离视点近时,以较高的分辨率显示;而场景离视点远时,以较低的分辨率显示,这样既可保证好的视觉效果,又可减少绘制的数量,从而加快渲染速度.Hu[10]将LOD技术应用于Tessendorf方法,采用两种分辨率不同的表面来表示海波,将固定的高分辨率的映射图像存放在一个片段着色器中,而另一个映射图像根据远近自适应地调整分辨率,像凹凸纹理映射一样存入于一个顶点着色器,获得了很好的视觉效果,GeForce 3上的绘制速度提高到100帧/s.
本文实验采用式(5)创建海面基本模型,在此基础上合成Perlin噪声;采用立方体纹理贴图技术将6幅1024*1024制作成天空盒来模拟海面所处的空间的周围环境;采用式(6)计算海面颜色值;采用LOD技术进一步加速绘制.在VC2008平台下进行OpenGL编程,利用Cg对GPU编程来加速绘制,GPU为GeForce GTX 650,分辨率为1280*720时绘制速度可达246帧/s,达到了实时渲染要求.
图3 实验结果
本文均衡考虑了海面模型的真实感与实时性的问题,采用了基于统计模型和FFT来模拟海浪的方法,算法思想较为简单,实验效果较为逼真,实时性好.本文只是初步的模拟了在风的作用下海面的波动情况,自然界中的海面场景受多种物理因素的影响,对浪花、泡沫,及与岛屿和海岸的交互等情况还需要进一步研究.在今后的工作中,还需要进一步的改善和提高本文方法,实现更加真实的模拟.
[1]Peachey D R.Modeling wave and surf[J].Computer Graphics,1986,20(4):65-74.
[2]Fournier A,Reeves W·T.A Simple Model of Ocean waves[C].Proceedings of SIGGRAPH'86,1986,20(3):75-84.
[3]Kass M,Miller G.Rapid,Stable Fluid Dynamics for Computer Graphics[J].Computer Graphics,1990,24(4):49-57.
[4]陈和平,王 早.水波特效模拟原理及其快速实现方法[J].计算机应用研究,2005,(4):252-255.
[5]杨怀平,孙家广.基于海浪谱的波浪模拟[J].系统仿真学报,2002,14(9):1175-1178.
[6]杨怀平,胡事民,孙家广.一种实现水波动画的新算法[J].计算机学报,2002,25(6):612-617.
[7]吴恩华,柳有权.基于图形处理器(GPU)的通用计算[J].计算机辅助设计与图形学报,2004,16(5):601-611.
[8]Randima Fernando,Mark J.Kigard.Cg教程-可编程实时图形权威指南[M].北京:人民邮电出版社,2004.
[9]Jerry Tessendorf.Simulating Ocean Water[R].SIGGRAPH Course notes,2001.
[10]Hu Y.,Velho L.,Tong X.,Guo B.,Shum H.Realistic,Real-time Rendering of Ocean Waves[J].Computer Animated Virtual Worlds,2006,17(1)59-67.
Research and Realization of Real-time Ocean Water Simulation Based on GPU
TIAN Juan-xiu1,LIAO Zhi1,LIANG Jiu-mei1,GONG Jun-hui2
(1.College of Computer and Communication,Hunan Institute of Engineering,Xiangtan 411104,China;2.College of Electrical and Information Engineering,Hunan Institute of Engineering,Xiangtan 411101,China)
The simulation of the sea water is very important not only for the computer graphics areas,but also for hydraulic,fluid mechanics,wave dynamics and oceanography.In the paper,statistical models are used,in combination with experimental observations.In the statistical models,the wave height is considered a variable of horizontal position and time.Statistical models are based on the ability to decompose the wave height field as a sum of sine and cosine waves.Computationally,the decomposition uses Fast Fourier Transforms(FFTs),which are a rapid method of evaluating the sums.In order to improve the rendering performance,it has considered the reflection,refracion effects to the sea water color and has realized them by Texture Mapping Techniques.It has used Cg language in the OpenGL platform to fully utilize GPU.The experiments have proved that the methods have accelerated the rendering speed and made the scene more and effective.
ocean simulation;real-time rendering;GPU;Cg language
TP39
A
1671-119X(2014)02-0041-04
2014-03-11
湖南工程学院校级青年科研课题(xj1111);湖南省教育厅科研资助项目(12C0619);湖南省科技计划项目(2013FJ3090)
田娟秀(1979-),女,硕士,讲师,研究方向:图形图像处理和模式识别.