APP下载

深水铺管起重船作业视景仿真研究

2013-06-12吴有力袁利毫徐家哲周小龙徐金文

船海工程 2013年2期
关键词:视景波浪建模

吴有力,袁利毫,徐家哲,周小龙,徐金文

(中国舰船研究设计中心,武汉430064)

海洋石油201船是中国首艘3 000 m深水铺管起重船,该项目是国内自主设计和建造的第一个深水海洋工程船舶装备项目。船长204.65 m,型宽39.2 m,型深14 m,设有世界上最先进的DP3动力定位系统,全电力推进并设置了7个推进器,具备3 000 m级深水铺管能力和4 000 t级重型起重能力。该船不仅可适用于海上石油平台上部模块等大件的吊装与拆除、导管架的辅助下水与就位,最重要的将用于深海海底油气管道的铺设、维修等作业。基于先进的仿真技术、网络技术、系统集成技术和多媒体技术,研究直观地反应深水铺管起重船海上航行及作业的特点和规律的驾驶模拟视景仿真子系统[1]。

1 系统总体设计

1.1 系统原理概述

基于Vega Prime视景仿真主要包括三部分。视景模型的预处理、LynX Prime图形界面设计和视景仿真程序设计。视景模型的预处理主要有两个部分即MultiGen Creator三维建模软件和Creator Terrain Studio(CTS)大面积地形建模;LynX Prime图形界面设计主要包括基本环境设置、模型初始位置(主要指精细模型在大场景模型中的定位)、常用特效设置(如云、雾、雨、火和声效等)和大场景应用设置等内容;视景仿真程序设计主要完成整个仿真过程,为用户提供实时流畅的视景仿真结果,它可以通过Vega Prime提供的API函数直接调用视景模型预处理生成的模型库,还可以调用由LynX Prime图形界面设计生成的.acf文件实现对视景模型库进行控制,通过接收仿真数据对整个场景进行驱动。主要内容包括波浪仿真、海洋特效仿真、大气环境仿真、碰撞检测与响应、目标船运动仿真、场景调度与管理、视点切换和渲染场景等内容。基于VegaPrime视景仿真三部分之间的关系及仿真框架设计见图1。

图1 基于Multigen Creator和Vega Prime的视景仿真开发流程

1.2 软件开发工具

建立逼真的三维训练视景仿真系统需要基于三维建模软件Multigen Creator和视景渲染软件Vega Prime平台进行视景仿真开发,并利用Visual C++.NET 2005开发程序流程和用户界面。主要分成两部分:建立三维模型数据库和开发视景仿真驱动软件。

2 建立三维模型库

采用三维建模软件MultiGen Creator对201船和地景模型进行建模,不仅有强大的多边形建模功能,而且有独创的用于描述三维虚拟场景的层次化OpenFlight数据结构,其模型数据库可以在获得极高渲染效率的同时保证实时交互的灵活性[2]。根据201船驾驶模拟系统虚拟场景的特点和层次结构,三维模型库主要包含以下模型。

1)训练地形。主要由岛屿、陆地和沿岸背景山脉组成。

2)码头景物及周边建筑。该部分模型主要包括码头上的典型建筑物、起吊设备、桥梁、房屋、树木、岸边实景模型等。

3)船模型。采用Multigen Creator中的LOD建模方法,对201船分别建立3个不同精度的模型,即远、中、近三层模型,精度逐渐增高。纹理也根据模型的不同精度,采用不同精度的贴图[3]。

主要使用放样工具对201船进行船体建模,放样工具可以将一组关键多边形平面放样生成一个三维实体,通过将船体(主要指主甲板以下部分)的一组横剖面按其位置排号,使用放样工具即可将船体建立起来,同样也可以利用船体的一组纵剖面进行放样建模。上层建筑、甲板设备如主吊、辅吊、托管架模型则需要利用基本建模工具和变换参考网格进行建模;根据主吊、辅吊、托管架的结构特点,设置相应DOF节点;参考设计图纸进行驾控台及其操作面板的三维建模,见图2。

图2 201船三维模型效果

4)目标船模型和助航标志模型。主要包括油船、货船、集装箱船等船型,钻井平台,缆桩、灯塔、灯标、方位标志等各类模型。

3 视景仿真驱动软件开发

基于实时仿真软件Vega Prime3.0和编程开发软件Visual Studio 2005开发视景仿真驱动,主要开发以下功能模块:场景漫游、波浪仿真、海洋特效仿真、大气环境仿真和碰撞检测。

3.1 场景漫游

可以切换至不同视角,以驾驶者视角及第三方不同站位视角观察船舶运动;根据驾驶模拟系统的特点,以驾驶室为主视点,切换至船艏、船艉、左舷、右舷等多处视点,便于实时查看201船在海洋场景中的航行状态。

用键盘控制视点的切换。实现该功能的程序框架如下。

//按下键“2”时,观察者在驾驶室内观察船的运动

case vrWindow::KEY_2:

//设置观察对象

m_pObserver->setLookAt(NULL);

//设置观察位置,随Shiptransform运动

m_pObserver->setLookFrom(m_pShiptransform);

/*设置Shiptransform的位置,规定观察者位于船舶中心点前方181.8 m,上方31.2 m的位置上*/

m_pShiptransform->setTranslate(0,181.8,31.2);

//设置观察角度

m_pShiptransform->setRotate(0,0,0);

/*设置观察者在驾驶室中做缓慢的UFO式漫游运动,这种运动模式便于观察者根据意愿用鼠标移动来转换视点,以便于看到驾驶室内的全貌*/

m_pShiptransform->setStrategy(vpMotion::find("myMotionUFO"));……

3.2 海洋特效仿真

主要模拟与201船航行中的船艏浪花、艉迹等海洋特效。

3.2.1 船艏浪花

通常有两种类型,成角度的浪花和水平方向的浪花。成角度的浪花是由于船艏划破水表面时产生的浪花,与水平方向有一定角度,其尺寸大小与船舶干舷、横梁、船艏宽度、船艏长度、船艏到船艏圆心点位移、吃水线长度、船舶在水中的实际航速、旋转速率、纵倾角、横摇角、上下位移等因素有关;水平方向的浪花可以根据粒子系统的船舶兴波模型仿真,它与船舶速度、船艏到原点的偏移量、船艏宽度、干舷等有关。各种参数与船舶的对应关系见图3。

图3 船艏浪花控制参数示意

3.2.2 船艉艉迹

由于推进器气穴现象和艉部的拖动所产生的艉迹,船舶速度和推进器转速越大,艉迹所持续的时间越长,设置相关参数见图4。

图4 艉迹控制参数示意

3.2.3 用键盘调节海洋参数大小

以浪级的控制程序为例,说明如何实现海洋参数的大小的调节。

case SEA_STATE:

//首先为nValue赋初值

nValue=m_pWaveGenerator->getseaState();

/*每按下“+”(或“-”),nValue就增加(或减少)fSign的一倍,nValue变化的范围是0~12*/

nValue=vuLimit(nValue+(int)fSign,0,12);

//重置浪级参数为变化后的nValue值

m_pWaveGenerator->setSeaState(nValue);

同理,还可以调节波浪表面风向和风速、有义波高、运动波浪水平位移计算参数、波形、波幅、波峰检测参数、局部反射影像扭曲因数等海洋参数的大小。

3.3 波浪仿真

为了逼真地模拟波浪效果,采用实时视景仿真软件Vega Prime专用的三维动态海洋模块Marine,其原理是通过一系列正弦波和余弦波叠加,采用快速傅里叶变换(FFT)算法求解叠加值,叠加值表示波的波幅。通过设置影响海况的各种参数模拟不同海况,主要参数如下。

1)海浪的主方向。与风的方向保持一直,波浪沿风的方向传播。

2)波形态。根据外界因素的不同产生不同形态的波浪。

3)纹理变换因子。控制波浪纹理移动速度,动感更强烈。

4)抑制小波因子。控制波浪表面不同波长的波数。

5)波浪起伏因子。控制波浪水平方向的位移量。

6)能量分布因子。控制波幅与波长的分布,值越大,频谱的能量部分向更大和更长的波靠拢。

模拟海洋环境可通过创建波浪生成类Marine Wave Generator FFT的实例,即可生成动态波浪效果,可以设置网格单元大小、网格单元的分辨率、风向、风速、波高、浪尖泡沫密度等参数。Marine模块提供了功能强大的API函数,可以根据海况和蒲福风级的对应参数修改波浪的风度和波高,模拟不同海况下的波浪效果。

另外通过设置Marine模块Marine Ship类的宽度、与船舶原点坐标的距离、扩散角度、消隐时间等参数来实现船艏浪花、艉迹的海洋特效模拟。

3.4 大气环境仿真

模拟不同的气象环境,包括晴天、雨、雪、雾等恶劣天气,提供按航海习惯划分能见度等级的雾景,日昼光照连续变化,能够反映白天、夜间、不同能见度等级时的逼真、精细的图像。大气环境仿真主要采用粒子系统模拟雨、雪效果,能够反映风对雨、雪的影响。粒子系统随着时间的推移,系统中己有粒子不仅不断改变形状、不断运动,而且不断有新的粒子加入,并有旧的粒子消失。利用粒子系统模拟雨雪特效的流程是:①在固定间隔时间内产生新的粒子加入系统中;②赋予每一新粒子以一定的属性,其属性主要包括:位置、大小;运动速度和方向;颜色;透明度;形状;生命周期;③删除那些已经超过其生命周期的粒子;④根据粒子的动态属性对粒子进行移动和变换;⑤绘制并显示由有生命的粒子组成的图形[3]。

3.5 碰撞检测

碰撞检测软件主要用于检测201船是否与训练场景、目标船只发生碰撞,并将这个信息发送到船舶操纵运动数学模型进行相应解算,调整201船运动姿态。

本系统采用自定义Box型Volume检测法来测试碰撞。

Vega Prime通过Isector(分扇区)模块和Volume(卷标)模块提供了这样一种机制,它可以在Isector实例所指定的目标和该Isector实例设定的方法所对应的Volume之间进行相交检测,从而使程序方便地获得许多有用的相交测试结果。Isector实例中都包含了一个对应的Volume,而在Vega中包括点、线、面在内的几何图元都可以用来定义Volume。为了让系统区分出相交测试的目标对象,Isector和作为目标对象的地形模型的Isector类掩码必须一致,或至少有一位相同。相交检测中使用的Volume是由Isector的Method来确定的。本系统的Volume是由多条线段围成的长方体,其大小和位置需要自己来定义。这需要用到Volume方法,它能关联一个Volume实例,在运行过程中,把其它类型的Volume简化为近似的Segment类型的Volume来进行相交测试。

这里用一个长方体盒形区域将船舶的待检部分包围起来,通过控制长方体对角点的坐标来控制盒形区域的大小和位置。使用这种检测器可以良好地实现物体间的碰撞效果,防止穿墙。程序的实现过程见图5。

图5 程序基本构成

当检测棒未检测到碰撞目标时显示为红色,一旦发生碰撞,检测到碰撞的检测棒呈绿色作为提示,同时船舶急停,用编程的方法制造出巨大的碰撞声,反馈出发生碰撞的位置信息提示。

对视景仿真平台进行碰撞检测要兼顾效率和精度,而在基于Vega Prime的视景虚拟仿真中,Vega Prime自带的基于相交矢量的碰撞检测方法在效率和精度上都不尽如人意。盒型检测体与海洋船舶船体的下部结构形状相似,因此设置适当的Box型检测体恰好能将船体下部包围起来,同时提高了碰撞检测的效率和精度,从而获得较好的环境真实性和用户沉浸感。

3.6 三通道视景显示

系统采用三通道图像生成系统,水平180°、垂直40°视场角视景。为了使训练效果最佳、临场感觉更逼真,需要将几个投影通道进行水平拼接,从而得到连续的全景效果。每一通道的图像由1台计算机产生,如果生成的图像相差太大,拼接后形成的画面就不是一个整体。因此,多通道同步技术是系统的一个难点。

采用三通道图形生成系统—主要由1个主节点计算机和3台图形节点计算机组成。由主节点计算机负责向从节点计算机发送视点参数和场景控制命令,保证视景画面实时更新和各图形显示通道应能够精确同步,不能出现肉眼可察觉的延迟或使场景出现跳跃感,每个通道都要达到30帧以上刷新速率以满足用户交互的需要,见图6。

图6 三通道视景硬件系统结构

3.6.1 Vega Prime DR模块实现原理

Vega Prime分布式渲染(DR)模块是实现完全同步的多通道应用开发和调度的理想工具,能够在多台图形节点上进行连续一致的渲染,包括能够通过局域网对多通道应用进行简单设置和配置的工具DR Utilities(distributed rendering utili)和MPI Agent(multiGen-paradigm agent)。DR Utilies用来设置主机和从机的角色,所在分布式渲染组(Group),所用的虚拟管道(visual pipeline)等等。MPI Agent通过网络来响应这些设置,完成启动/关闭应用程序、修改配置、响应主机的参与请求等。Vega Prime DR模块的同步原理图见图7。

3.6.2 三通道视景系统的具体实现

图7 Vega Prime DR模块的同步原理

要实现三通道视景仿真系统,需要建立三通道的ACF文件,用DR Utilies和MPI Agent正确的设置主机和从机的参数,利用Vega Prime API函数生成应用程序,最后分别在主机和从机中建立相应的数据库。

1)建立三通道ACF。在Vega Prime的Lynx Prime面板中创建3个channel,并将它们是视锥体设置为非对称形式,分别设置左、中、右3个channel的边界值参数。然后,建立3个Window和3个Pipeline,让每个通道都对应1个Window和1个Pipeline。

2)配置主从机参数。在主机和每个从机上运行MPI Agent。在DR Utilies设置主机的Role为Master,从机的Role为Slave。将主机和从机的所在分布式渲染组设置为相同,为主机和从机各分配一个虚拟管道(Visual Pipeline),并且这3个虚拟管道的名称,要和ACF中建立的3个Pipeline名称相同。

3)生成应用程序。主要代码如下。

//设置同步标志vuDistributed::setSyncEnable(vuDistributed::SYNC_LABEL_PRE_SWAPBUFFERS,true);

vuDistributed::SetSyncEnable(vuDistributed::

SYNC_LABEL_POST_SWAPBUFFERS,false);

//同步ACF

vuDistributed::setSyncEnable(vuDistributed::SYNC_

IABEL_ACF,true);

//同步时间

vuDistributed::SetSyncEnable(vuDistributed::SYNC_lABEL_TIME,true);

//同步窗口消息

vuDistrihuted::setSyncEnable(vuDistributed::SYNC_LABEL_MESSAGES,true);

//同步输入设备

vuDistributed::setSyncEnable(vuDistributed::SYNC_LABEL_INPUT,true);…………

4)建立数据库。将做好的*.exe文件和*.acf文件拷贝到主机和从机中。为了方便,在主机和从机中,将文件放在同一路径下。

4 结束语

基于MultiGen Creator和Vega Prime仿真软件平台开发出了深水铺管起重船作业视景仿真子系统。采用真实的照片纹理和LOD技术来弥补了为降低内存消耗而减少实体模型面数引起的模型表现力上的不足;自定义Box型Volume检测法符合船型特点,减少资源浪费,提高了碰撞检测的效率和精度;逼真的海洋环境和特效模拟,再配上一定的音响效果,使受训人员通过视觉、听觉等感官信息获得接近实船操作的体验。经过测试,视景仿真系统的稳定性、安全性和实用性均达到了令人满意的效果。

[1]金一丞,尹 勇.航海模拟器的视景系统[J].大连海事大学学报,2001,27(2):16-20.

[2]洪 光,李洪儒,牟建国.基于Creator三维模型的简化研究[J].计算机仿真,2004,21(1):57-55.

[3]袁利毫.船舶操纵模拟器视景仿真研究[D].哈尔滨:哈尔滨工程大学,2007.

猜你喜欢

视景波浪建模
波浪谷和波浪岩
虚拟现实技术在游戏设计中的应用及研究
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
求距求值方程建模
某炮模拟训练系统中三维视景的设计与实现
波浪谷随想
基于PSS/E的风电场建模与动态分析
基于预测和双缓冲区的直升机视景仿真
全回转拖轮运动建模与视景仿真
波浪中并靠两船相对运动的短时预报