基于OpenGL的海面场景模拟

2013-12-17 10:42梁梦洁薛万军
电子科技 2013年3期
关键词:海浪海面波浪

梁梦洁,石 万,薛万军

(1.西安电子科技大学电子工程学院,陕西西安 710071;2.二滩水力发电厂电力运行部,四川攀枝花 617000)

近年来,三维模拟在计算机游戏、广告、影视、国防科技等视觉仿真领域得到了广泛应用。随着军事科技的发展,三维模拟技术在国防事业中的重要性日益剧增。由于自然景物的随意性和复杂性,模拟自然景物成为计算机图形中最具挑战性的研究方向。众所周知,海浪现象是一种复杂的自然现象,它的形成除了受其自身的动力影响以外,风、温度、日月的吸引力、地震等都会对其造成影响。目前,较常用的海浪建模方法主要有:基于流体力学的建模方法、基于几何造型的建模方法、基于动力模型的建模方法、基于分形的建模方法、基于海浪谱的建模方法。文中的海浪建模主要考虑风对海浪形成的作用,采用海浪谱模型,通过OpenGL仿真实现动态海面场景的模拟。

1 基于海浪谱的三维海浪模型

20世纪40年代初,海洋动力学家 Neummn及Pierson等人提出了用随机过程理论来分析海浪的方法,即谱分析法。经过大量研究和观察表明:海浪属于狭带谱的正态随机过程,它的幅值服从瑞利分布。基于此人们提出了多种描述海浪的模型,如:Longuet-Higgins模型[1],该模型用多个随机余弦波的叠加,来描述海面上一固定点的水面波动η(x,z,t)

式中,aij、wi、ki、θj、εij分别表示第 i个频率、第 j个方向的组成波的振幅、圆频率、波数、方向角和初始相位;(x,z)为波点位置;t为时间矢量。其中x,z通常可取为,而εn为在0~2π范围内均匀分布的随机数。

式(1)中aij可由海浪谱反演理论得到

其中

式(3)中,S(wi)为频谱,G(wi,θj)为方向函数。在模拟海浪时采用具有单一参数的Pierson-Moskowitz模型,简称 PM 谱[2-3]

其中,a=8.1 ×10-3为 Phillips常数,β=0.74;g为重力加速度。U为海面上19.5 m高处的风速。由=0,可求得谱峰频率为

根据 SWOP(Stereo Wave Observation Project)可得[4]

其中

2 OpenGL实现动态海面

OpenGL作为一个图形硬件的软件接口,不提供描述三维物体模型的高级函数,如绘制船舶、波浪等的函数。使用OpenGL,必须由一系列简单的点,直线和多边形等几何图元的组合来建立需要的模型[5]。

在OpenGL场景初始化时,首先将海面绘制区分割成N×M个均匀网格,其中N和M的值越大,网格越密集,仿真效果越逼真,但相应的计算量也会大幅增加,影响画面的实时效果。文中经过多次试验,结果显示取N=64,M=64产生的仿真效果最佳。网格中每个顶点对应的坐标、幅值都存储在points[N][M][3]中,points三维数组中对应的 points[n][m][0],points[n][m][1],points[n][m][2]分别代表第 n 行、第 m列的点对应在海面绘制区的x,y,z轴的值,其中points[n][m][2]为海浪的瞬高度。points[n][m][2]的值由式(1)计算得出。则随着OpenGL每一帧都对海面进行重新绘制,通过改变式(1)中的时间,即每重画一帧都给时间t加上相应的时间间隔Δt,达到绘制动态海面的效果。

上述过程仅实现了海面的动态效果,为使绘制的场景更加逼真,还需要选择合适的纹理图对绘制的海域进行贴图。选择与海水颜色接近的蓝色图片,最好带有细小的波纹,可以弥补仿真时网格过大引起的失真。在OpenGL中,纹理图片的大小通常为2n,文中取图片大小为256×256。

3 结论分析

根据上述理论和方法,在Windows XP平台上实现了对海面场景的实时模拟,实验环境为Visual Studio 2008和OpenGL;硬件配置:Pentium 4主频 1.6 GHz,内存1 GB。如下图所示,图1~图4分别为海面水深一定时,风速U=1.0 m/s;U=2.0 m/s;U=3 m/s;U=4 m/s时波浪的大小。

4 结束语

从Longuet-Higgins海浪谱模型出发,根据海浪的功率谱密度,采用对多个随机正弦波迭加来模拟动态海面,通过调整波浪纹理贴图及海浪谱中的相关参数,最终实现了动态海面场景实时、逼真的可视化仿真。文中详细介绍了基于OpenGL仿真海面场景的计算机仿真方法,无论是海面场景的实时性还是逼真度都有大幅提高。

自然界中的海面场景受物理因素的影响,变化多端,形态各异。文中的方法只是初步的模拟了在风的作用下,海面呈现的不同状态。因此当要求天气情况比较复杂时还不能满足需求,今后可以在文中方法的基础上进一步的改善和提高,以满足武器试验时对不同场景的需求。

[1]俞聿修.随机波浪及其工程应用[M].大连:大连理工大学出版社,1992.

[2]BOCCOTTI P.A method to obtain the directional wave spectrum[J].Ocean Engineering,2004(31):539 -545.

[3]TESSENDORF J.Simulating ocean water[C].Newyork:Proceeding of ACM SIGRAPH,1999:348-367.

[4]吴家铸,党岗.视景仿真技术及应用[M].西安:西安电子科技大学出版社,2001.

[5]潘雨田,马新谋,杨栋.三维随机波浪的数值仿真研究[J].火炮发射与控制学报,2012(3):5-8.

猜你喜欢
海浪海面波浪
波浪谷和波浪岩
丫丫和小海浪
海浪
海面床,轻轻摇
樊应举
第六章 邂逅“胖胖号”
波浪谷随想
去看神奇波浪谷
海面上的“一千座埃菲尔铁塔”
波浪中并靠两船相对运动的短时预报