王家腾,解文彬,殷 超,邵 妍
(解放军理工大学指挥信息系统学院,江苏 南京 210007)
基于改进Gerstner波的岛礁近岸波浪实时仿真*
王家腾,解文彬,殷超,邵妍
(解放军理工大学指挥信息系统学院,江苏 南京210007)
为了实现岛礁附近波浪实时仿真,结合Gerstner波和水波动力学知识,提出了一种能够模拟波浪卷曲和折射绕射现象的波浪建模与绘制方法。首先,建立Gerstner波参数随水深变化关系,构建模拟波浪卷曲过程的几何模型;然后,定义岛礁地形对波浪传播的阻障和遮挡系数,并据此修正波浪传播的波向和波高,实现折射和绕射现象的仿真;最后,应用着色器缓存技术完成计算的硬件加速,并构建了基于视点的波浪传播多分辨率绘制策略。实验结果表明,该方法对波浪的卷曲和折射绕射现象取得了较好的仿真效果,绘制效率能够满足实时性要求。
岛礁;波浪传播;卷浪;波浪折射;波浪绕射
近岸波浪在表现海水与岛礁岸滩交互场景中具有重要作用,是海场景真实性的一个重要因素。近岸波浪由远海风浪传入浅水区形成。在浅水区运动过程中,波浪与水下地形相互作用,波长和波速减小,波幅增大,出现折射、绕射、破碎等复杂的现象,进行实时仿真绘制难度大。
浅水波浪绘制方法主要可分为两种:基于物理的方法和基于几何的方法。基于物理的方法主要通过求解纳维-斯托克斯方程(Navier-Stokes equations,NSE)获得海浪内部各水质点的运动状态,最后根据这些水质点构建波面[1-5]。这种方法能够描述海浪的真实运动状态,不受水下地形、风速等条件的限制。但随着场景规模的扩大,仿真需要的粒子数量迅速增加,计算开销巨大。虽然近年来计算机图形硬件的发展,尤其是基于图形处理器(GPU)运算的广泛应用,一定程度上缓解了这一问题,但该方法应用于较大场景水面绘制时仍不能很好地满足实时性需求。基于几何的方法主要通过构建海浪的数学模型,通过调整模型参数,实现不同条件下海浪模拟,如Gerstner波模型。这种方法计算简单、实时性好、可用于较大范围的仿真应用,但直接使用该方法不能模拟波浪的折射、绕射现象,需要对模型进行改造。
基于Gerstner波的海浪建模方法最早由Fournier和Reeves[6]引入图形学,他们加入仿真时间、浪高变化和水深等因子对波形进行改造,使得波形更加符合波浪的实际运动变化特点。但该方法基于均匀网格实现,限制了波浪的传播方向,仿真生成的波浪过于规则。Gonzato和Cieutat等基于波浪跟踪算法[7-9]的思想,沿水波传播方向使用光学的斯涅尔定律(Snell’s Law)计算波浪受地形阻障发生的折射现象,仿真结果比较真实。但该方法存在计算误差累积的问题。为解决这一问题,Gamito提出一种基于费马最短路径原理的折射计算方法[10],建立了浅水波浪折射现象的精确模型。使用上述两种方法模拟折射,需要进行大量实时计算,降低了绘制效率。陈勇等基于视觉效果优先的原则,根据海岸线构建了由波向线和波峰线组成的变形网格,使用正推和反推结合的方法,迭代式快速确定波峰线,既保证了物理真实性,又提高了仿真的效率[11]。
与陆地海岸不同,岛礁四面环水,但上述模型只能模拟岛礁迎浪侧波浪运动。当波浪继续向岛礁背浪侧运动时,受岛礁阻障会在背浪侧形成复杂的绕射现象,使用上述模型无法模拟。李永进等使用Boussinesq方程预先求解一段时间内的海面运动序列[12],并对此序列重建,最终构建海面“无限”运动序列。该方法能够比较真实地反映折射、绕射等现象,但由于海面的绘制基于预先计算好的高度图,因此场景不能根据波浪的方向和大小实时变化。徐晓刚等预先根据地形数据提取岸线并计算出地形点到岸线最近的距离和方向,波浪实时绘制时,根据地形点对应水深和到岸线距离与方向,调整波浪的传播方向和波高[13]。该方法支持波浪方向和大小的改变,但没有针对绕射现象提供有效的计算方法。
使用Gerstner波构建海面模型,需要保证一定的网格间距。格点间距过大会造成波面不平滑,甚至造成波峰、波谷丢失。当视点到场景的距离超出该方法的适应范围时,为避免不必要的计算,需要对该方法进行改造。考虑到真实环境中,随着视点逐渐远离岛礁,近岸波浪的细节对于场景的真实性影响变小,波峰线上波浪破碎产生的泡沫成为波浪运动的主要视觉效果,可直接计算提取波峰线。
针对上述问题,本文提出了一种基于改进Gerstner波模型的岛礁近岸波浪多分辨率绘制方法。引入水波动力学[14]的相关知识对Gerstner波形进行修正;定义前方阻障系数和后方遮挡系数,模拟水质点受到的外力影响,据此进行波浪折射和绕射仿真;最后建立了基于视点的波面多分辨率绘制策略。
2.1Gerstner波模型
Gerstner波模型由Gerstner于19世纪初提出,模型从动力学角度描述了海浪各质点的运动。在XOY面内其基本形式为
(1)
其中,OX和OY分别表示水平方向和垂直方向,(x0,y0)是质点的初始位置,A为波幅,k为波数,ω为角频率。
从Gerstner波水面质点运动方程容易看出其在竖直平面内做圆周运动。当波浪传到浅水时,与水底地形发生摩擦,水平方向运动速度变慢,质点运动轨迹变为椭圆。此时,波形又称作Boussinesq椭圆摆线波,质点运动方程为
(2)
其中,a、b分别表示椭圆的长轴长和短轴长。图1展示了水质点在水深与波长λ不同比例下的运动轨迹。h表示水质点距离水下地形的垂直高度,当h→∞时,即水深很大时,公式(1)、(2)相同。
设波浪传播方向与x轴正方向的夹角为θ,根据公式(2)可推导出波面三维离散形式:
(3)
其中,XOZ代表水平面,Y方向代表竖直方向,a和b的含义与式(2)相同。
2.2波浪的浅水区变形
波浪在水下地形影响下发生浅水区变形。波浪的波数、角频率和波高都会发生变化。根据水波动力学的相关知识,波数k、角频率ω和波高A可由式(4)近似计算:
(4)
2.3波浪的卷曲
当波高与波长的比值大于一定值时,波浪便会失去保持波形的能力,在重力作用下发生卷曲和破碎现象。根据式(3)生成的波面不能表现波浪卷曲,本文通过对波形进行拉伸和坍落变形模拟波浪卷曲现象。
拉伸变形可理解为:越靠近波峰的点受地形阻滞作用越小,水平运动越快,波浪出现前倾,并且随着水深变浅,波幅增大,波峰波谷质点移动速度差变大。对描述水质点在水平方向位移的相位角φ作如下修正:
(5)
坍落变形可理解为:水质点水平偏移太大时,垂直方向上受到的支持力不足以维持其继续向上运动,水质点开始下落。越靠近波峰的水质点受到的支持力越小,下落越快。卷曲发生时,处于卷曲内侧的点,受上方下落水质点压迫,产生的位移更大。当水质点垂直坐标>A时,对其作如下修正:
y=y-Svert(y-A)2Δt
(6)
其中,Svert表示垂直缩放系数,且Svert∝A-1。Δt为时间影响因子,用来表现坍落距离随时间的改变。
图2是加入拉伸和旋转因素二维平面内的波形模拟结果,实线表示波面,虚线表示静止水平面。(a)显示的是深水区波形,(b)显示的是加入水深变化后波形,(c)显示的是添加拉伸变形后的波形,(d)显示的是同时添加拉伸和旋转变形后的波形。
图2 波浪卷曲模拟
波浪向岛礁浅滩运动过程中,随着水深变浅,受水下地形阻滞发生折射,波高逐渐增大,波向线逐渐垂直于岸线。遇岛礁等固定障碍,波浪沿岛礁岸线绕行通过,在岛礁背浪侧形成复杂的绕射现象。本文通过定义前方阻障系数和后方遮挡系数,近似模拟水质点所受外力影响,修正波高和波向,实现波浪的折射和绕射的近似模拟。
3.1阻障和遮挡作用
假设忽略风能输入和水质点间粘滞作用,波面形状变化仅受水下地形和阻障物影响。本文沿波浪传播方向,将水质点在水平方向上受到的作用力分为两部分:水质点前方阻障作用和后方遮挡作用。波浪在向岛礁迎浪侧运动时受岸线阻障波向和波高产生变化,出现折射现象。波浪运动到背浪侧后,又在岛礁遮挡作用下形成绕射现象。
为了确保建立的折射和绕射模型更符合实际,本文预先使用物理模型对地形如图3左上角所示的岛礁附近波浪的波高和波向进行了数值分析。分析结果为主图部分,颜色表示波浪的有效波高;箭头表示波浪传播方向。
图3 岛礁附近波高波向数值分析结果
3.1.1阻障作用计算
为确定水质点所受阻障作用,可借鉴环境遮挡技术(Screen-Space Ambient Occlusion,SSAO)的思想,沿波浪传播方向进行阻障测试,原理如图4所示。测试范围为波浪传播方向顺时针、逆时针分别偏转δ/2扫过的扇形区域,测试半径为R,采样次数为N。设水面初始高度为y0,测试点P的地形高度为EP,第i个采样点的地形高度为Ei。
根据波向线逐渐垂直于水深线的特点,可假设水质点优先向水深更浅的方向运动,以更快抵达岸滩。该假设符合费马最短时间原理。当采样点i的高度Ei>EP时,定义采样点i为测试点的阻障点。设θ(Ei)为第i个采样点对应偏离波浪传播方向的角度,当测试点前方存在多个阻障点时,水质点实际运动方向偏离波浪传播方向的角度,即阻障偏角为:
θblo=θ(max({Ei|Ei>EP,i∈(1,…,N)}))
(7)
定义Dblo(前方阻障系数)为水质点受前方阻障点影响,其大小等于水质点偏离传播方向角度的正割值,即Dblo=secΔθ。
前方阻障系数反映了受阻障物影响,相邻波向线间的能量更加集中的现象。受阻障作用影响,测试点波高值增加到原值的Dblo倍。
3.1.2遮挡作用计算
遮挡测试与阻障测试的方法相同,测试方向为波浪传播的反方向,测试半径取深水区波长的一半,即λ∞/2。若采样点高度大于水面初始高度y0,则定义该点为遮挡点,对波浪有遮挡作用。若测试方向逆时针偏转指向采样点,遮挡值C记为1,反之记为-1。采样点高度小于y0时,遮挡值C记为0。
遮挡系数反映了岛礁背浪侧的水质点受岛礁的遮挡,波能输入减少的现象。在计算受遮挡影响点的波高时,还需要考虑其到岸线的距离。观察物理模拟结果可以发现,在背浪侧随着到岸线距离的增大,波高值逐渐降低至深水区波高大小。本文使用与距离呈正相关的水深代替距离。设靠近岛礁背浪侧岸线的最小波高为Astart(大于深水区波高A∞),则测试点波高为
(8)
其中,KA表示阻障系数趋近与0的点与阻障系数为1的点的波高之比。
图4 阻障和遮挡测试原理图
3.2岛礁背浪侧绕射
绕射现象在引起波高的变化的同时,会造成波浪传播方向的明显变化,岛礁背浪侧常见的绕射现象就是回旋流。回旋流指的是背浪侧海浪偏离传播方向,环绕岸线运动并涌向海岸。回旋流通常发生在距离背浪侧岸线较近的区域,因此可简单假设这些现象出现在遮挡系数大于0的区域,方便借助遮挡系数修正波向。
观察基于物理方法的模拟结果发现近似存在如下规律:在背浪侧,水质点受遮挡作用影响越大、距离岸线越近,其实际运动方向与波浪传播方向的夹角越大。受岛礁遮挡,水质点实际运动方向偏离波浪传播方向的角度,即遮挡偏角为
(9)
4.1折射和绕射绘制
进行折射和绕射仿真绘制前,需要预先计算生成阻障和遮挡纹理。有两种方案可供选择。方案一:先通过CPU计算生成阻障和遮挡纹理,再将纹理传入GPU进行渲染;方案二:将全部的计算和渲染工作都交由GPU处理。由于CPU计算速度远低于GPU,加之CPU与GPU之间的通信耗时,效率上方案二更优。需要指出的是:对一个顶点进行阻障和遮挡测试时,需要访问多个相邻顶点的地形高度值,并且当波浪方向发生改变的情况,需要重新计算生成阻障和遮挡纹理。传统的渲染管线中,由于顶点着色器又无法访问相邻顶点的属性,难以完成这一过程。为解决这一问题,本文使用着色器存储缓存技术,将水深数据以纹理缓存的方式提供给渲染各阶段作色器使用。在DirectX中可结合结构化缓存(Structured Buffer)实现。
首先创建一张大小与地形高度图相同的纹理,分别使用r、g、b、a通道存储前方阻滞系数Dblo、阻滞偏角θbol、后方遮挡系数Dobs和遮挡偏角θdef;然后将纹理绑定到Structured Buffer,再将Structured Buffer绑定到Resource View,并在着色器代码中将该缓存变量声明为可读写,这样管线各阶段的着色器就能访问该缓存了。当波浪方向发生改变时,顶点着色器即可直接访问Structured Buffer中的数据,计算阻障和遮挡作用,并将结果写入Structured Buffer中。
4.2层次细节模型建立
为在保证真实性的基础上提高场景绘制效率,通常需要为场景建立自适应层次细节模型。基本思想是扩大仿真间隔或降低采样频率。由于计算正确性的限制,使用Gerstner波进行波浪模拟时,仿真步长不能过大。为解决这一问题,本文将视点到场景的距离划分为近、中、远三种,针对各种距离采取不同的绘制策略,如图5所示。
当视点处于近距离范围时,观察者能够清楚的看到波浪的细节。绘制海浪时,首先构建岛礁周围海面的精细网格,在此网格上应用波面方程,生成海面,结合波浪破碎条件和粒子系统建立波浪破碎效果,最后合成岛礁附近海面场景。
当视点处于中距离范围时,观察者能够分辨波浪的轮廓形状,但飞溅的水滴和细小的波形变化较难清楚辨识。进行海浪绘制时,对近距离海面精细网格粗化,以减少不必要的计算消耗,关闭粒子效果,仅使用泡沫纹理表现波浪的破碎现象。
当视点处于远距离范围时,观察者主要通过波峰线上波浪破碎生成的泡沫感知海浪的传播运动。绘制海面场景时,仅使用高度纹理移动的方式表现波峰线的运动,根据阻障测试的结果为岛礁迎浪侧添加泡沫纹理,就减少了大量计算消耗。
图5 多分辨率绘制流程
实验使用的硬件平台为Intel Core i7 2.4GHz CPU、NVIDIA GeoForce GT 730M显卡,开发环境为Visual Studio 2013和DirectX,运行环境为64位Windows 7系统,实验采用513×513的灰度图作为基础地形数据,海面网格分辨率与地形相同。波面由3个波高、波长和方向不同的Gerstner波构成,并加入了噪声纹理。
绘制效率方面,在整个仿真绘制过程中,由于使用了基于视点的多分辨率绘制策略,帧率始终保持在60FPS以上,能够较好地满足波浪仿真绘制的需求。当波向改变时,使用CPU进行阻障和遮挡计算,画面会出现大约600ms的停滞,而使用GPU进行计算画面停滞时间只有50ms左右,效率提高了12倍,已经比较接近1/24s的人眼分辨上限。
图6 岛礁附近波浪仿真效果图
绘制效果如图6所示,(a)中展示的是深水区波浪形状,能够相对真实地模拟海浪形状;(b)中展示的是波浪卷曲的效果,该时刻波峰即将卷落,比较接近实际场景;(c)中展示的是波浪在迎浪侧发生的折射现象,从图中可以较为清楚地观察到:随着波浪向岛礁运动,波峰线逐渐与岛礁岸线平行;(d)中展示的是背浪侧绕射现象,在图中能够观察回岸流,与图3(b)中的数值分析结果有一定相似性,这说明了该方法的有效性;(e)中展示的是从岛礁上方俯视看到的波浪在整个岛礁周围传播的效果,波锋线的变形过渡自然真实,水面反光及浅水区水下刻蚀效果的加入使得整个场景更加生动真实。
本文引入了水波动力学的相关知识对Gerstner波进行改造,并建立了卷浪几何模型,对波形的模拟取得了较为真实的效果;通过定义阻障和遮挡作用,近似模拟水质点受岛礁的影响,使用阻障和遮挡系数及偏角修正波高和波向,取得的折射和绕射仿真效果与基于物理模型的数值分析结果具有较高相似性,有力验证了方法的有效性;利用GPU进行阻障和遮挡计算提高了绘制效率。本文算法的是一种基于几何模拟方法,只能近似模拟折射和绕射,尤其是背浪侧绕射现象,今后还有需要研究更加真实高效绕射的模拟方法。此外阻障和遮挡测试参数的自适应选择也是下一步改进方向。
[1]Chen J X, Lobo N D V. Toward Interactive-Rate Simulation of Fluids with Moving Obstacles Using Navier-Stokes Equations[J]. Graphical Models & Image Processing, 1995, 57(2): 107-116.
[2]Enright D, Marschner S, Fedkiw R. Animation and rendering of complex water surfaces[M]∥ACM Transactions on Graphics (TOG). ACM, 2002: 736-744.
[3]Losasso F, Shinar T, Selle A, et al. Multiple interacting liquids[J]. ACM Transactions on Graphics, 2006, 25(3): 812-819.
[4]Müller M, Charypar D, Gross M. Particle-based fluid simulation for interactive applications[C]∥Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium on Computer animation. Eurographics Association, 2003: 154-159.
[5]Solenthaler B, Pajarola R. Predictive-Corrective Incompressible SPH[J]. ACM Transactions on Graphics, 2009, 28(3): 341-352.
[6]Fournier A, Reeves W T. A simple model of ocean waves[C]∥ACM Siggraph Computer Graphics. ACM, 1986, 20(4): 75-84.
[8]Cieutat J M, Gonzato J C, Guitton P. A new efficient wave model for maritime training simulator[C]∥Sccg. 2001:202-209.
[10]Gamito M N, Musgrave F K. An Accurate Model of Wave Refraction Over Shallow Water[M]∥Computer Animation and Simulation 2000. Springer Vienna, 2000: 155-171.
[11]陈勇, 陈戈, 张淑军. 近岸海浪实时仿真[J]. 系统仿真学报, 2008, 20(3):741-745.
[12]李永进, 金一丞, 任鸿翔,等. 基于物理模型的近岸海浪建模与实时绘制[J]. 中国图象图形学报, 2010, 15(3): 518-523.
[13]徐晓刚, 郑文庭, 徐以波,等. 一种基于Gerstner模型的波浪折射模拟方法: 中国专利, CN 103413341 A[P]. 2013-11-27.
[14]蔡泽伟.波浪理论及其工程应用[M]. 北京:国防科技出版社, 2000: 38-172.
Real-time Simulation of Wave Around Islands Based on Improved Gerstner Wave
WANG Jia-teng, XIE Wen-bin, YIN Chao, SHAO Yan
(Institute of Command Information and System, PLA University of Science and Technology, Nanjing 210007, China)
In order to simulate the wave around island in real-time, with reference to the Gerstner Wave and the water wave dynamics, a method which can simulate comber, wave refraction and diffraction is presented. First, the relationship between Gerstner Wave’s and water depth, and the geometric model of wave propagation are developed. Then, the island’s block and obstacle coefficient of wave propagation are defined. And the wave direction and height are adjusted by these coefficients to achieve the wave refraction and diffraction effect. Finally, shader caching technology is used to increase calculation speed, also a strategy of multi-resolution rendering is built based on viewpoint. The experimental results show that the method has obtained good result in simulating comber and wave refraction and diffraction. And drawing efficiency can satisfy the real-time requirements.
island; wave propagation; comber; wave refraction; wave diffraction
1673-3819(2016)04-0113-06
2016-03-12
2016-04-04
中国博士后科学基金
王家腾(1991-),男,河北沧州人,硕士研究生,研究方向为军事仿真。
解文彬(1980-),男,博士,副教授。
P731.22
A
10.3969/j.issn.1673-3819.2016.04.023
殷超(1992-),男,硕士研究生。
邵妍(1989-),女,本科。