基于改进Gerstner波的岛礁近岸波浪实时仿真∗
王家腾;解文彬;殷超;邵妍
【摘要】Inordertosimulatethewavearoundislandinreal-time,with
referencetotheGerstnerWaveandthewaterwavedynamics,amethod
whichcansimulatecomber,waverefractionanddiffractionisprented.
First,therelationshipbetweenGerstnerWave'sandwaterdepth,andthe
,theisland's
wavedirectionandheightareadjustedbythecoefficientstoa-chieve
y,shadercaching
technologyisudtoincreacalculationspeed,al-soastrategyofmulti-
erimentalresults
showthatthemethodhasob-tainedgoodresultinsimulatingcomberand
wingefficiencycansatisfythereal-
timerequirements.%为了实现岛礁附近波浪实时仿真,结合Gerstner波和水波
动力学知识,提出了一种能够模拟波浪卷曲和折射绕射现象的波浪建模与绘制方法。
首先,建立Gerstner波参数随水深变化关系,构建模拟波浪卷曲过程的几何模型;
然后,定义岛礁地形对波浪传播的阻障和遮挡系数,并据此修正波浪传播的波向和
波高,实现折射和绕射现象的仿真;最后,应用着色器缓存技术完成计算的硬件加
速,并构建了基于视点的波浪传播多分辨率绘制策略。实验结果表明,该方法对波
浪的卷曲和折射绕射现象取得了较好的仿真效果,绘制效率能够满足实时性要求。
【期刊名称】《指挥控制与仿真》
【年(卷),期】2016(038)004
【总页数】6页(P113-118)
【关键词】岛礁;波浪传播;卷浪;波浪折射;波浪绕射
【作者】王家腾;解文彬;殷超;邵妍
【作者单位】解放军理工大学指挥信息系统学院,江苏南京210007;解放军理工
大学指挥信息系统学院,江苏南京210007;解放军理工大学指挥信息系统学院,
江苏南京210007;解放军理工大学指挥信息系统学院,江苏南京210007
【正文语种】中文
【中图分类】P731.22
近岸波浪在表现海水与岛礁岸滩交互场景中具有重要作用,是海场景真实性的一个
重要因素。近岸波浪由远海风浪传入浅水区形成。在浅水区运动过程中,波浪与水
下地形相互作用,波长和波速减小,波幅增大,出现折射、绕射、破碎等复杂的现象,进
行实时仿真绘制难度大。
浅水波浪绘制方法主要可分为两种:基于物理的方法和基于几何的方法。基于物理
的方法主要通过求解纳维-斯托克斯方程(Navier-Stokequations,NSE)获得海
浪内部各水质点的运动状态,最后根据这些水质点构建波面[1-5]。这种方法能够描
述海浪的真实运动状态,不受水下地形、风速等条件的限制。但随着场景规模的扩
大,仿真需要的粒子数量迅速增加,计算开销巨大。虽然近年来计算机图形硬件的发
展,尤其是基于图形处理器(GPU)运算的广泛应用,一定程度上缓解了这一问题,但该
方法应用于较大场景水面绘制时仍不能很好地满足实时性需求。基于几何的方法主
要通过构建海浪的数学模型,通过调整模型参数,实现不同条件下海浪模拟,如
Gerstner波模型。这种方法计算简单、实时性好、可用于较大范围的仿真应用,但
直接使用该方法不能模拟波浪的折射、绕射现象,需要对模型进行改造。
基于Gerstner波的海浪建模方法最早由Fournier和Reeves[6]引入图形学,他们
加入仿真时间、浪高变化和水深等因子对波形进行改造,使得波形更加符合波浪的
实际运动变化特点。但该方法基于均匀网格实现,限制了波浪的传播方向,仿真生成
的波浪过于规则。Gonzato和Cieutat等基于波浪跟踪算法[7-9]的思想,沿水波传
播方向使用光学的斯涅尔定律(Snell’sLaw)计算波浪受地形阻障发生的折射现象,
仿真结果比较真实。但该方法存在计算误差累积的问题。为解决这一问题,Gamito
提出一种基于费马最短路径原理的折射计算方法[10],建立了浅水波浪折射现象的
精确模型。使用上述两种方法模拟折射,需要进行大量实时计算,降低了绘制效率。
陈勇等基于视觉效果优先的原则,根据海岸线构建了由波向线和波峰线组成的变形
网格,使用正推和反推结合的方法,迭代式快速确定波峰线,既保证了物理真实性,又提
高了仿真的效率[11]。
与陆地海岸不同,岛礁四面环水,但上述模型只能模拟岛礁迎浪侧波浪运动。当波浪
继续向岛礁背浪侧运动时,受岛礁阻障会在背浪侧形成复杂的绕射现象,使用上述模
型无法模拟。李永进等使用Boussinesq方程预先求解一段时间内的海面运动序列
[12],并对此序列重建,最终构建海面“无限”运动序列。该方法能够比较真实地反
映折射、绕射等现象,但由于海面的绘制基于预先计算好的高度图,因此场景不能根
据波浪的方向和大小实时变化。徐晓刚等预先根据地形数据提取岸线并计算出地形
点到岸线最近的距离和方向,波浪实时绘制时,根据地形点对应水深和到岸线距离与
方向,调整波浪的传播方向和波高[13]。该方法支持波浪方向和大小的改变,但没有
针对绕射现象提供有效的计算方法。
使用Gerstner波构建海面模型,需要保证一定的网格间距。格点间距过大会造成波
面不平滑,甚至造成波峰、波谷丢失。当视点到场景的距离超出该方法的适应范围
时,为避免不必要的计算,需要对该方法进行改造。考虑到真实环境中,随着视点逐渐
远离岛礁,近岸波浪的细节对于场景的真实性影响变小,波峰线上波浪破碎产生的泡
沫成为波浪运动的主要视觉效果,可直接计算提取波峰线。
针对上述问题,本文提出了一种基于改进Gerstner波模型的岛礁近岸波浪多分辨率
绘制方法。引入水波动力学[14]的相关知识对Gerstner波形进行修正;定义前方阻
障系数和后方遮挡系数,模拟水质点受到的外力影响,据此进行波浪折射和绕射仿真;
最后建立了基于视点的波面多分辨率绘制策略。
2.1Gerstner波模型
Gerstner波模型由Gerstner于19世纪初提出,模型从动力学角度描述了海浪各质
点的运动。在XOY面内其基本形式为
其中,OX和OY分别表示水平方向和垂直方向,(x0,y0)是质点的初始位置,A为波
幅,k为波数,ω为角频率。
从Gerstner波水面质点运动方程容易看出其在竖直平面内做圆周运动。当波浪传
到浅水时,与水底地形发生摩擦,水平方向运动速度变慢,质点运动轨迹变为椭圆。此
时,波形又称作Boussinesq椭圆摆线波,质点运动方程为
其中,a、b分别表示椭圆的长轴长和短轴长。图1展示了水质点在水深与波长λ不
同比例下的运动轨迹。h表示水质点距离水下地形的垂直高度,当h→∞时,即水深
很大时,公式(1)、(2)相同。
设波浪传播方向与x轴正方向的夹角为θ,根据公式(2)可推导出波面三维离散形式:
其中,XOZ代表水平面,Y方向代表竖直方向,a和b的含义与式(2)相同。
2.2波浪的浅水区变形
波浪在水下地形影响下发生浅水区变形。波浪的波数、角频率和波高都会发生变化。
根据水波动力学的相关知识,波数k、角频率ω和波高A可由式(4)近似计算:
其中,n为波能传递率,,c为波速,h为水深,g为重力加速度,c∞、λ∞和A∞分别表示
深水区的波速波长和波高。这些值可根据蒲氏风力等级表进行预设,或者根据实际
海域的观测记录结果进行设置。
2.3波浪的卷曲
当波高与波长的比值大于一定值时,波浪便会失去保持波形的能力,在重力作用下发
生卷曲和破碎现象。根据式(3)生成的波面不能表现波浪卷曲,本文通过对波形进行
拉伸和坍落变形模拟波浪卷曲现象。
拉伸变形可理解为:越靠近波峰的点受地形阻滞作用越小,水平运动越快,波浪出现前
倾,并且随着水深变浅,波幅增大,波峰波谷质点移动速度差变大。对描述水质点在水
平方向位移的相位角φ作如下修正:
其中,φ0=k(x0cosθ+z0sinθ)为(x0,z0)处的初始相位角;Δy=y-y0为水质点相对
初始位置的高度差,值越大引起的相位角变化越大为水深对高度差的缩放影响,高度
差相同时,对应水深小的水质点相位角变化大,表示水深截断值,确保h→0时,水深影
响不会变得无限大,H通常可取λ/100~λ/50,Shor表示水平缩放系数,且。
坍落变形可理解为:水质点水平偏移太大时,垂直方向上受到的支持力不足以维持其
继续向上运动,水质点开始下落。越靠近波峰的水质点受到的支持力越小,下落越快。
卷曲发生时,处于卷曲内侧的点,受上方下落水质点压迫,产生的位移更大。当水质点
垂直坐标>A时,对其作如下修正:
其中,Svert表示垂直缩放系数,且Svert∝A-1。Δt为时间影响因子,用来表现坍落
距离随时间的改变。
图2是加入拉伸和旋转因素二维平面内的波形模拟结果,实线表示波面,虚线表示静
止水平面。(a)显示的是深水区波形,(b)显示的是加入水深变化后波形,(c)显示的是
添加拉伸变形后的波形,(d)显示的是同时添加拉伸和旋转变形后的波形。
波浪向岛礁浅滩运动过程中,随着水深变浅,受水下地形阻滞发生折射,波高逐渐增大,
波向线逐渐垂直于岸线。遇岛礁等固定障碍,波浪沿岛礁岸线绕行通过,在岛礁背浪
侧形成复杂的绕射现象。本文通过定义前方阻障系数和后方遮挡系数,近似模拟水
质点所受外力影响,修正波高和波向,实现波浪的折射和绕射的近似模拟。
3.1阻障和遮挡作用
假设忽略风能输入和水质点间粘滞作用,波面形状变化仅受水下地形和阻障物影响。
本文沿波浪传播方向,将水质点在水平方向上受到的作用力分为两部分:水质点前方
阻障作用和后方遮挡作用。波浪在向岛礁迎浪侧运动时受岸线阻障波向和波高产生
变化,出现折射现象。波浪运动到背浪侧后,又在岛礁遮挡作用下形成绕射现象。
为了确保建立的折射和绕射模型更符合实际,本文预先使用物理模型对地形如图3
左上角所示的岛礁附近波浪的波高和波向进行了数值分析。分析结果为主图部分,
颜色表示波浪的有效波高;箭头表示波浪传播方向。
3.1.1阻障作用计算
为确定水质点所受阻障作用,可借鉴环境遮挡技术(Screen-SpaceAmbient
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)}))
定义Dblo(前方阻障系数)为水质点受前方阻障点影响,其大小等于水质点偏离传
播方向角度的正割值,即Dblo=cΔθ。
前方阻障系数反映了受阻障物影响,相邻波向线间的能量更加集中的现象。受阻障
作用影响,测试点波高值增加到原值的Dblo倍。
3.1.2遮挡作用计算
遮挡测试与阻障测试的方法相同,测试方向为波浪传播的反方向,测试半径取深水区
波长的一半,即λ∞/2。若采样点高度大于水面初始高度y0,则定义该点为遮挡点,对
波浪有遮挡作用。若测试方向逆时针偏转指向采样点,遮挡值C记为1,反之记为-1。
采样点高度小于y0时,遮挡值C记为0。
定义Dobs(后方遮挡系数)水质点受遮挡点的影响,其大小等于遮挡点个数与采样
次数的比值,即N。
遮挡系数反映了岛礁背浪侧的水质点受岛礁的遮挡,波能输入减少的现象。在计算
受遮挡影响点的波高时,还需要考虑其到岸线的距离。观察物理模拟结果可以发现,
在背浪侧随着到岸线距离的增大,波高值逐渐降低至深水区波高大小。本文使用与
距离呈正相关的水深代替距离。设靠近岛礁背浪侧岸线的最小波高为Astart(大于
深水区波高A∞),则测试点波高为
其中,KA表示阻障系数趋近与0的点与阻障系数为1的点的波高之比。
3.2岛礁背浪侧绕射
绕射现象在引起波高的变化的同时,会造成波浪传播方向的明显变化,岛礁背浪侧常
见的绕射现象就是回旋流。回旋流指的是背浪侧海浪偏离传播方向,环绕岸线运动
并涌向海岸。回旋流通常发生在距离背浪侧岸线较近的区域,因此可简单假设这些
现象出现在遮挡系数大于0的区域,方便借助遮挡系数修正波向。
观察基于物理方法的模拟结果发现近似存在如下规律:在背浪侧,水质点受遮挡作用
影响越大、距离岸线越近,其实际运动方向与波浪传播方向的夹角越大。受岛礁遮
挡,水质点实际运动方向偏离波浪传播方向的角度,即遮挡偏角为
偏转方向由Ci的符号决定。根据遮挡测试原理可知:该值为正,测试点向逆时针方向
偏转时受到遮挡作用更大,水质点更容易偏向这一侧,传播方向逆时针偏转θobs得
到实际运动方向;值为负时,传播方向顺时针偏转θobs;值为0时,可参考其相邻点的
偏转方向。
4.1折射和绕射绘制
进行折射和绕射仿真绘制前,需要预先计算生成阻障和遮挡纹理。有两种方案可供
选择。方案一:先通过CPU计算生成阻障和遮挡纹理,再将纹理传入GPU进行渲染;
方案二:将全部的计算和渲染工作都交由GPU处理。由于CPU计算速度远低于
GPU,加之CPU与GPU之间的通信耗时,效率上方案二更优。需要指出的是:对一个
顶点进行阻障和遮挡测试时,需要访问多个相邻顶点的地形高度值,并且当波浪方向
发生改变的情况,需要重新计算生成阻障和遮挡纹理。传统的渲染管线中,由于顶点
着色器又无法访问相邻顶点的属性,难以完成这一过程。为解决这一问题,本文使用
着色器存储缓存技术,将水深数据以纹理缓存的方式提供给渲染各阶段作色器使用。
在DirectX中可结合结构化缓存(StructuredBuffer)实现。
首先创建一张大小与地形高度图相同的纹理,分别使用r、g、b、a通道存储前方阻
滞系数Dblo、阻滞偏角θbol、后方遮挡系数Dobs和遮挡偏角θdef;然后将纹理
绑定到StructuredBuffer,再将StructuredBuffer绑定到ResourceView,并在着
色器代码中将该缓存变量声明为可读写,这样管线各阶段的着色器就能访问该缓存
了。当波浪方向发生改变时,顶点着色器即可直接访问StructuredBuffer中的数据,
计算阻障和遮挡作用,并将结果写入StructuredBuffer中。
4.2层次细节模型建立
为在保证真实性的基础上提高场景绘制效率,通常需要为场景建立自适应层次细节
模型。基本思想是扩大仿真间隔或降低采样频率。由于计算正确性的限制,使用
Gerstner波进行波浪模拟时,仿真步长不能过大。为解决这一问题,本文将视点到场
景的距离划分为近、中、远三种,针对各种距离采取不同的绘制策略,如图5所示。
当视点处于近距离范围时,观察者能够清楚的看到波浪的细节。绘制海浪时,首先构
建岛礁周围海面的精细网格,在此网格上应用波面方程,生成海面,结合波浪破碎条件
和粒子系统建立波浪破碎效果,最后合成岛礁附近海面场景。
当视点处于中距离范围时,观察者能够分辨波浪的轮廓形状,但飞溅的水滴和细小的
波形变化较难清楚辨识。进行海浪绘制时,对近距离海面精细网格粗化,以减少不必
要的计算消耗,关闭粒子效果,仅使用泡沫纹理表现波浪的破碎现象。
当视点处于远距离范围时,观察者主要通过波峰线上波浪破碎生成的泡沫感知海浪
的传播运动。绘制海面场景时,仅使用高度纹理移动的方式表现波峰线的运动,根据
阻障测试的结果为岛礁迎浪侧添加泡沫纹理,就减少了大量计算消耗。
实验使用的硬件平台为IntelCorei72.4GHzCPU、NVIDIAGeoForceGT
730M显卡,开发环境为VisualStudio2013和DirectX,运行环境为64位
Windows7系统,实验采用513×513的灰度图作为基础地形数据,海面网格分辨率
与地形相同。波面由3个波高、波长和方向不同的Gerstner波构成,并加入了噪声
纹理。
绘制效率方面,在整个仿真绘制过程中,由于使用了基于视点的多分辨率绘制策略,帧
率始终保持在60FPS以上,能够较好地满足波浪仿真绘制的需求。当波向改变时,使
用CPU进行阻障和遮挡计算,画面会出现大约600ms的停滞,而使用GPU进行计
算画面停滞时间只有50ms左右,效率提高了12倍,已经比较接近1/24s的人眼分
辨上限。
绘制效果如图6所示,(a)中展示的是深水区波浪形状,能够相对真实地模拟海浪形
状;(b)中展示的是波浪卷曲的效果,该时刻波峰即将卷落,比较接近实际场景;(c)中展
示的是波浪在迎浪侧发生的折射现象,从图中可以较为清楚地观察到:随着波浪向
岛礁运动,波峰线逐渐与岛礁岸线平行;(d)中展示的是背浪侧绕射现象,在图中能够
观察回岸流,与图3(b)中的数值分析结果有一定相似性,这说明了该方法的有效性;(e)
中展示的是从岛礁上方俯视看到的波浪在整个岛礁周围传播的效果,波锋线的变形
过渡自然真实,水面反光及浅水区水下刻蚀效果的加入使得整个场景更加生动真实。
本文引入了水波动力学的相关知识对Gerstner波进行改造,并建立了卷浪几何模型,
对波形的模拟取得了较为真实的效果;通过定义阻障和遮挡作用,近似模拟水质点受
岛礁的影响,使用阻障和遮挡系数及偏角修正波高和波向,取得的折射和绕射仿真效
果与基于物理模型的数值分析结果具有较高相似性,有力验证了方法的有效性;利用
GPU进行阻障和遮挡计算提高了绘制效率。本文算法的是一种基于几何模拟方法,
只能近似模拟折射和绕射,尤其是背浪侧绕射现象,今后还有需要研究更加真实高效
绕射的模拟方法。此外阻障和遮挡测试参数的自适应选择也是下一步改进方向。
解文彬(1980-),男,博士,副教授。
【相关文献】
[1]ChenJX,Interactive-RateSimulationofFluidswithMoving
ObstaclesUsingNavier-StokesEquations[J].GraphicalModels&ImageProcessing,1995,
57(2):107-116.
[2]EnrightD,MarschnerS,ionandrenderingofcomplexwater
surfaces[M]∥ACMTransactionsonGraphics(TOG).ACM,2002:736-744.
[3]LosassoF,ShinarT,SelleA,leinteractingliquids[J].ACMTransactionson
Graphics,2006,25(3):812-819.
[4]MüllerM,CharyparD,le-badfluidsimulationforinteractive
applications[C]∥Proceedingsofthe2003ACMSIGGRAPH/Eurographicssymposiumon
aphicsAssociation,2003:154-159.
[5]SolenthalerB,tive-CorrectiveIncompressibleSPH[J].ACM
TransactionsonGraphics,2009,28(3):341-352.
[6]FournierA,emodelofoceanwaves[C]∥ACMSiggraphComputer
,1986,20(4):75-84.
[7]GonzatoJC,llingandrenderingoceanscenes[J].Journalof
Visualization&ComputerAnimation,2000,11(1):27-37.
[8]CieutatJM,GonzatoJC,ficientwavemodelformaritimetraining
simulator[C]∥Sccg.2001:202-209.
[9]GonzatoJC,menologicalmodelofcoastalscenesbadonphysical
considerations[M]∥ComputerAnimationandSimulation’erVienna,1997:137-
148.
[10]GamitoMN,rateModelofWaveRefractionOverShallow
Water[M]∥erVienna,2000:155-171.
[11]陈勇,陈戈,张淑军.近岸海浪实时仿真[J].系统仿真学报,2008,20(3):741-745.
[12]李永进,金一丞,任鸿翔,等.基于物理模型的近岸海浪建模与实时绘制[J].中国图象图形学报,
2010,15(3):518-523.
[13]徐晓刚,郑文庭,徐以波,等.一种基于Gerstner模型的波浪折射模拟方法:中国专利,CN
103413341A[P].2013-11-27.
[14]蔡泽伟.波浪理论及其工程应用[M].北京:国防科技出版社,2000:38-172.
本文发布于:2022-11-28 02:48:59,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/36469.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |