APP下载

内河船舶航行三维仿真关键技术研究

2012-09-08陈先桥

关键词:水波格网顶点

徐 敏,陈先桥,王 宇

(武汉理工大学计算机科学与技术学院,湖北武汉 430063)

内河河道水深与季节密切相关,枯水期船舶航行时通航压力大、危险大,船舶容易发生搁浅事故,造成巨大的人员及经济损失。将河道地形三维可视化,不仅可帮助测量人员直观地查看河床地形,同时还可帮助河道管理人员随着季节变化发出水深通告,预防搁浅事故的发生,避免人员与经济损失。如何根据真实的数据快速有效地生成河床三维地形、河水平面及波浪的仿真成为内河船舶航行三维仿真技术的关键。

在如何实现河床的三维可视化问题中,河海大学、天津航道局利用OpenGL基本函数编程技术开发了三维河床地形可视化系统。该系统利用离散数据风格化算法、三维地形建模及真实感图形绘制等过程实现了河床地形的可视化。但该研究过程繁琐,无法快速实现利用现有数据生成三维可视化显示[1]。在波浪仿真方面,PEACHEY、FOURNIER和童若峰等利用数学函数构造出水波的外形,然后使波形随着时间变化而变化[2];徐迎庆、陈前华和JIANG等基于物理方法利用波浪力学构造出水波的模型。但上述方法应用面狭窄且计算复杂,大多只用于滴水产生的涟漪效果仿真[3-5]。吴献等提出的一种基于领域传播的水波模拟方法虽然得到了状态变量的演化规则,但没有进一步结合粘性流体力学将水质的粘性因素考虑进去且没有进一步提取出演化规则的各项比例权重[6-7]。

笔者采用高位图与OGRE(object-oriented graphics rendering engine)快速实现了河床三维可视化,并利用GPU中的硬件顶点缓存来存放创建的水平面几何体中所有的顶点数据,通过综合考虑粘性流体力学[8-10]与细胞自动机理论,推导出流体平面细胞自动机的演化规则,确定了演化规则中的各项比例权重。据此动态更新水平面几何体中各点的高程值,从而实现随船轨迹的水波效果。同时可以通过对水波各参数的动态修改,达到良好的交互性。

1 基于CAD数据的河床地形生成技术

1.1 生成技术总体设计思想

OGRE是一个成熟、稳定、可靠、灵活、跨平台,且具有丰富功能的实时3D图形库。它同时支持OpenGL与Direct3D,带有多种管理器,其强大且成熟的材质管理和脚本系统,方便了材质的维护,支持对GPU的编程技术,可自动渲染状态和进行空间剪裁。其中Terrain场景管理器支持对地形数据的渲染及空间剪裁。三维地形生成的流程如图1所示。

图1 三维地形生成流程图

1.2 DXF文件提取点的方法

DXF文件是以ASCII方式储存图形的顺序文本文件,包含了AutoCAD图形文件的所有信息。DXF文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后值的类型。使用这些组码和值对,可以将DXF文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。实现具体的高程点信息的提取需要分为两种情况具体考虑:

(1)地形图中各图元中点的高程值Z均为有效数据,在这种情况下,直接读取图元各点的X,Y,Z坐标并写入文本文件即可。为了确保最终三维模型的准确性,图元的选取应将常见的图元点信息取全。CAD原文件中常用的图元含LWPOLYLINE、CIRCLE、LINE、POINT 及 POLYLINE。

(2)地形图中各点的高程值Z并不为有效数据,或由于人为的疏忽大部分点的高程值为0。此时不需要读取图中各点的点信息,可换作读取图中所有标注的文本信息的点坐标X、Y,并将文本值作为其Z坐标。虽然文本标注的点远比图中的图元点数据要少,但图中大部分的图元都是通过这些文本标注生成的等高线。

2 河水平面及波浪的仿真

2.1 水平面模型及初始化

河水平面的构建采用格网模型,构建出一个complexity×complexity大小为 PLANESIZE的格网。格网平面由numFaces个三角面及numVertices个顶点组成。使用硬件顶点缓存存放所有顶点的三维位置坐标、法向量及UV纹理坐标。使用索引缓存存放格网面片的顶点索引。格网模型如图2所示。

由平面模型可得:

格网上各顶点的值初始化如式(3)所示:vertex[i][j].x=i/complexity × PLANESIZE

图2 河水平面格网模型

式中:vertex[i][j]为格网上第 i行第 j列处顶点。式(3)是对各顶点三维坐标的初始化,其中当水面平静时,其高程值为0。

格网上每个小正方形点构成的次序为顺时针型,index为索引矩阵,索引初始化伪代码为:

2.2 水波动画的算法原理

要实现尾随船舶的水波就是要确定上述所提出的水平面模型中各顶点的高程值(此处对应为y值)的变化幅度。水平面格网模型中各顶点高程值变化取决于船舶航行时挤压水平面的程度。为了实现随船的波浪效果,方法一是根据笔者将要提出的挤压水面算法更新格网中相应顶点的高程值,二是每帧动态更新格网(即更新格网中顶点位置、法向量、UV坐标)。

2.2.1 船舶航行过程挤压水面算法

笔者提出的算法基本思想是根据船舶航行点,对本点及由本点及正方片邻域各点进行按权重更新邻域各顶点的高程值。正方片模型如图3所示。点(0,0)为船舶当前航行点。实际生活中,将船舶航行时船头点挤压水面力最大权重设为1,周围的点随着离挤压点距离的增大而挤压力逐渐变小。因此构建的权重为:

图3 正方片模型

式中:x、y为船舶当前航行点的坐标;addx、addy为距离增量。

对正方片中各点高程值进行修改,正方片邻域各点的高程值即为权重乘船舶吃水深度,有:

式中:depth为当前船舶吃水深度。

2.2.2 动态更新水面格网的算法

在实际的水波现象中,随船舶航行产生的水波与涟漪散开速度、涟漪波间距、水本身的黏滞性及水波周期有关。

当不考虑流体的粘性,即视水波平面为理想流体时,线性化的二维浅水波方程给出了水波高度与波速、时间和水波平面之间的关系,如式(6)所示。

式中:c为波速;h为水波高度;t为时间;xoz平面为水波平面。

式(6)是无耗散的浅水方程,当加入一定的耗散后得到式(7):

其中,k为耗散系数。水波中各点在任何时刻均需满足式(7)。

细胞自动机是由一些特定规则的格子组成的,每个格子看作一个细胞,每个细胞在每一时刻均有一种状态且格子上的细胞根据周围细胞的状态按照相同的法则改变自己的状态。它具有并行性、局部性与一致性。这些特性决定了所有细胞受同样规则支配,细胞状态的变化只受邻域细胞的影响且所有细胞保持同步更新。将水平面格网中每个节点均视为细胞,节点的高程视为细胞的状态。设定邻域细胞为四细胞环绕,如图2中细胞 A、B、C、D 环绕细胞 E。

一阶偏导与二阶偏导定义为:

整理式(7)后得到式(9):

由于采取的是四细胞环绕模式,因此n=4;将式(9)展开整理得到式(10):

式(10)即为理想流体水波的自动演化规则,只要确定t-Δt与t时刻各细胞状态的值,即可由此计算出接下来任意时刻的水面高度。

考虑到流体的粘性,由粘性流体力学中不可压缩流体的Navier_Stokers方程可知,式(10)可进一步推算出式(11),为:

为了简化演化规则,进一步分离出各项的比例因子,取Δt为水波的周期T,Δx为水波的波长D,水波的粘性系数U为耗散系数。由式(11)易从演化规则中分离出3个因子,即:

式中:C为涟漪速度;D为涟漪波长;U为流体黏滞性;T为水波的周期。

根据邻域传播思想,各顶点高程值的更新公式为:

3 算法实现与结果分析

笔者给出的所有算法均非常高效,由图2所示的针对DXF文件的点提取算法只是对文件数据的分析及读写操作,笔者用到的实验数据是荆州太平口一段长24 km的河道数据,提取时间仅用10 s。由式(8)更新格网所有顶点的高程值时,只需进行complexity×complexity次运算,时间复杂度为O(n2),完全可以满足实时动画的需要。与真实船舶航行过程中产生的水波相比,笔者的水波仿真较为符合实际,如图4所示。同时可知当水波参数不同时,产生的水波效果也不同,进一步说明了该仿真具有良好的交互性。所提出的整套方案能快速解决内河船舶航行三维可视化问题。

图4 内河船舶仿真渲染效果图

4 结论

笔者提出的内河船舶航行仿真方案,给出了一种快速生成三维可视化河道的方法及实现水波动画的一种新算法。基于该方法与该算法,在普通PC机或笔记本电脑上可达到180左右的帧率。完全能满足一般实时渲染的要求,效果良好。

[1]辛海霞,吕秋灵,庞启秀.三维河床地形可视化浏览系统研究与实现[J].计算机仿真,2006(12):179-182.

[2]童若锋,汪国昭.用于动画的水波造型[J].计算机学报,1996,19(8):594-599.

[3]徐迎庆,苏成,李华,等.基于物理模型的流水及波浪模拟[J].计算机学报,1999,21(增刊):153-159.

[4]陈前华.滴水涟漪的计算机动画模拟[J].计算机研究与发展,2001,38(5):524-528.

[5]JIANG Z D,MA L Z,SHI J Y.A physically-based approach to water modeling[C]//Proc the 6thInternational Conference on CAD & Computer Graphics.[S.l.]:[s.n.],1999:675-681.

[6]杨怀平,胡事民,孙家广.一种实现水波动画的新算法[J].计算机学报,2002,24(6):612-617.

[7]吴献,董兰芳,卢德唐.一种基于邻域传播的水波模拟方法[J].中国科学技术大学学报,2010(3):278-282.

[8]夏震寰.现代水力学[M].北京:高等教育出版社,1992:65-98.

[9]ADAM L,ARNON P.Real-time shallow water simulation with opencl for CPUs[EB/OL].[2011-08-09].http://www.khronos.org/developers/library/2011_GDC_OpenGL/Intel-OpenGL-Water-Sim_GDC-Mar11.pdf.

[10]LO M H,JAMES S F.Improving parameter estimation and water table depth simulation in a land surface model using GRACE water storage and estimated base flow data[J].Water Resources Research,2010(5):15-17.

猜你喜欢

水波格网顶点
Your Name
沣河水波
Your Name
戈壁里的水波
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
遥感数据即得即用(Ready To Use,RTU)地理格网产品规范
云南地区GPS面膨胀格网异常动态变化与M≥5.0地震关系分析
实时电离层格网数据精度评估
矢量点状数据抽稀方法的研究与实现