我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>行业知识

基于虚拟现实技术的船舶运动仿真

文章来源:第三维度 作者: 发布时间:2012年04月11日 点击数: 字号:

    来源:第三维度
    作者:何金花 叶瑰昀 王莺
    单位:厦门大学信息科学与技术学院

    摘要: 虚拟现实技术是目前国内外最热门的仿真技术之一,由于其有着高效、安全和低成本等特点越来越受到各国的重视。介绍了在虚拟环境下的船舶运动仿真的可行性方法。首先用二维半切片法给出了船舶运动的方程,接着用3DMax软件建立船舶的模型,最后在OpenGL环境中建立场景进行船舶的运动仿真。仿真场景有着较好的感观效果,给人以真实性,同时系统有着较好的可控性。对船舶运动仿真的进一步研究有着重要的作用。

    1 引言

    虚拟现实即VR (Virtual reality )技术,它是在现代科学技术如计算机图形学,图像处理与识、计算机仿真技术、人机接口技术、实时分布处理技术、数据库技术、多媒体技术、多传感器技术和人的行为学研究等的基础上发展起来的一门交叉科学技术。虚拟现实技术有三个基本特征[1] ,他们分别是沉浸感( Immersion) ,交互性( Interaction)和想象( Imagination) 。目前虚拟现实系统可分为四个层次:桌面式,沉浸式,增强式和网络分布式。本文是基于桌面式的仿真。

    国内外船舶仿真模拟器都有了较大的发展,如挪威,英国,美国,日本等都已经建立的较为完善的船舶模拟系统,并且已广泛应用于航海教育和船员培训之中,并在港口与航道的工程设计和方案论证等领域中得到了广泛的应用。采用高性能的PC机,将虚拟现实技术用于船舶仿真系统的开发,已成为模拟器研究与开发的主流,该系统可达到实用、安全、高效和低费用的目的。本文将虚拟现实技术应用于船舶运动的实时动态仿真中,该系统可将船舶运动情况,以三维图像形式表现出来,不仅极大地增强了用户与系统的交互友好性,而且为进一步开发船舶运动模拟器奠定了坚实的基础。

    2 船舶运动的数学模型

    船舶的运动模型有很多种,从最初的单点运动模型即1896年克雷洛夫首先提出了船舶在规则波上的运动方程,该方程实际上是质点振动方程[2] 。

    哈斯金特应用格林定理构造出由于船体存在和运动引起的扰动速度势,并推导了点源格林函数的表达式。按边界条件的提法,最终得到求解速度势的积分方程,并用“窄船理论”进一步解出此方程[3] 。科文一克劳科夫斯基和雅可布,提出的切片理论也使耐波性理论得到了迅速发展,使得在船舶设计阶段可以对各种方案进行比较。切片理论有可以分为二维切片,二维半切片和三维切片。本文采用高速细长法(二维半切片法)来构建船舶得运动模型。

    当船舶以航速U 在深水规则波中迎浪前进,建立随物体平动的直角坐标系o - xyz, oxyz平面与静水面重合, ox轴与U同向, oz轴垂直向上。考虑流场稳态解,速度势可写为:

基于虚拟现实技术的船舶运动仿真

    其中Φs为定常波势, ( x, y, z) 为不定常势。在线性假设下, Φ ( x, y, z) 可以写成:

基于虚拟现实技术的船舶运动仿真

    式中Φj ( j = 1 ~ 6) 表示船体以j态单位振幅运动的辐射势,ξj 为其振幅; A为入射波波幅, Φ0 和Φ7为单位波幅的入射波势和绕射势。辐射势Φj ( j = 1~ 6) 和绕射势Φ7 在流体域中要满足拉普拉斯方程,在自由面满足有航速的线性自由面条件, 在物面的平均位置处满足船体表面的法向不可穿透的条件。在无穷远处满足有适当的辐射条件。

    求解Φj ( j = 1 ~ 6) 和绕射势Φ7 完全满足上述的定解条件的解,就是三维有航速的船舶定解问题。

    为了求解上述船舶的定解问题, 结合高速细长船体的流动特性和几何特性,可以用二维半理论来求解。假设航速较高, 满足船前无波的条件, 此时Brard数:基于虚拟现实技术的船舶运动仿真流场沿纵向的变化不大,在船体的各剖面内满足二维的拉普拉斯方程。这是常规的二维切片法。同时在线性的自由位置处,流场的解满足三维有航速的自由条件,在一定的假设下辐射势Φj ( j = 1 ~ 6) 和绕射势Φ7 构成如下定解问题:

基于虚拟现实技术的船舶运动仿真

    这就是被称为高速细长体理论,由于流场的控制方程是二维的自由面条件事三维的因此也被称为二维半理论。我们用二维时域边界积分方程的方法来求解,从头到尾逐步求解具体的参见文献[4]由此可以得到一系列的状态值,把其作为表格的形式保存备用。

    3 基于虚拟现实技术的船舶运动仿真

    目前虚拟现实技术中, 较为常用的软件VRML, OpenGL, Cult3D, MutiGen, Vega, CooL3D等。由于OpenGL 软件有着场景环境渲染方面和交互式编程的优势与建模中过于复杂的不足,本文采用OpenGL软件和3D相结合共同完成船舶的建模与仿真。硬件构成,配置较好的个人PC机,有条件的可以购买立体头盔,立体眼镜等。本文只基于桌面层次的系统。

    3. 1 船舶模型的建立

    由于OpenGL 的建模功能较弱,采用3D max来建立船舶的三维模型。3DsMAX软件是一种具有很强三维建模技术的软件,应用也十分广泛。3D中轮船的建模有很多种方法,如放样,面片,NURSBS等[5] 。本文采用得是盒子建模法。盒子建模指的是对基本的长方体,圆柱体,球体等进行编辑成型的方法。事先收集一下轮船的设计图纸,这样对船的尺寸会更加准确,在编辑各个面时会更加自如。

    首先建立半个船头。先建立一个长方体,大小要与事先设计好的船尺寸成比例,把它转换成可编辑多边形,用快速切割的方法把长方体按照船头的各方位视图进行切割。用编辑顶点的方法对所做的图形进行调整。用同样的方法编辑船尾。把船头和船尾进行合并,删去中间的端面(为了保证船的大小协调性) ,断开船头与船尾,从船头出拉伸复制出船身至船尾处,用焊接点的方法使得形成一个完整的半个船面。再对它进行光滑处理得到图1。

基于虚拟现实技术的船舶运动仿真
图1 船体的建模

    这只是半个船体,用对称的方法进行复制,并对其各点进行焊接修改,可以得到一个完整的船体。船的上层结构可以加上安全护栏,雷达等设备,可以自行设计,但在尺寸上要注意一致性,使得整体完整,美观。本文的建模结果如图2所示。最后可以对图像添加材质和贴图进行渲染,使得船体显得更加真实美观。

基于虚拟现实技术的船舶运动仿真
图2 船的模型

    3. 2 海面模型的建立

    海面背景得建立有两种方法。一种是平面法,建立一个平面,并对其使用波浪效果和噪波效果,生成海面和波浪;同时再海面的前方与之垂直建立一个平面作为天空,使用贴图并设置灯光摄像机等对整个场景进行渲染。这样就建成了一个简单的海面场景[6] 。或者建立一个半球体构成天空然后对其进行渲染形成海天的场景。本文采用后一种建模形式。

    3. 3 船体在OpenGL中的动态仿真

    OpenGL实际上是一种图形与硬件的接口。与其他图形程序设计接口不同,OpenGL提供了十分清晰的图形函数,他不要求开发者把三维物体模型的数据写成固定的数据格式。开发者不但可以直接使用自己的数据,而且可以用其他不同格式的数据源,如DXF格式文件等。三维图形软件包有很多,在交互式三维图形建模能力和编程方便性上都无法与OpenGL相比[7] 。

    一个完整的窗口OpenGL 图形处理系统的结构为:最底层是图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,第五层为应用软件。OpenGL是网络透明的,在客户机/服务器体系结构中,允许本地或远程调用。OpenGL 在X窗口,Windows或其他窗口系统下都可以以一个独立的图形窗口出现。

    本文是在VC ++ 6. 0 开发环境下,创建的一个控制平台。首先要定义3DS 文件的读入类CLoad3DS ,这个类主要用于处理3DS文件的各种块,如对象块,纹理块,材质块等。声明的部分代码如下:

    //基本块( Primary Chunk ) ,位于文件的开始

    #define PR IMARY 0x4D4D
   
    //主块(Main chunks)

    #define OBJECTIONFO 0x3D3D //网络对象的版本号
    #define VERSION 0x0002 //3ds文件的版本号
    #define ED ITKEYFRAME 0xB000  //所有关键帧信息的头部

    //对象的次级定义(包括对象的材质和对象)
    . . . . . .
    //材质的次级定义
    . . . . . .

    以上的宏定义内容都是3DS文件中各块的在文件的具体位置,根据这些数据可以读取3DS文件中的各种数据。

    导入大海的场景和船舶,由于在3DS中对船体已经进行了一些渲染,在OpenGL中可以较偏重于于整个场景的渲染。如对灯光的设计,场景的雾化等使其更加具有真实感。指定光源,光照模式它们分别用库函数void glL ight , void glL ightModle 可以实现;对场景进行雾化可以用函数void glFog. 利用已有的数据,船舶的运动仿真可以用两种方法来完成。(1)在3DS中按照船的运动情况进行旋转,用设置关键帧的形式设好再引入OpenGL。

    (2)直接在OpenGL中用原来的矩阵再乘上一个变换矩阵的形式得到。用库函数void glRotate ( )和void glTranslate ( ) 来实现。第一种方法虽然在操作上简单些,但动作不能设计的太多(太占内存)不能完全按照给定的数值来调整,且在OpenGL中不好修改,本文采用第二种方法修改简单,编程也简单占用的内存也较小,可以直接利用所给数据进行仿真。运行的结果如图3,图4所示。

基于虚拟现实技术的船舶运动仿真
 图3 渲染后船舶运动中的一帧

基于虚拟现实技术的船舶运动仿真
图4 船舶运动中的一帧

    4 结论及展望

    本文介绍了虚拟现实技术在船舶仿真中的应用。用高速细长法(二维半方法)建立了船舶的运动模型,并在3DSMAX和OpenGL的环境中较好的实现了在虚拟场景中船舶的动态仿真。该实验结果有较好的视觉感和真实感,为进一步的研究船舶在不同海况中的运动及全面的仿真打下较好的基础。

    参考文献

    [1]马利民. 虚拟现实技术及其应用展望[J]. 计算机时代, 2005, (2)

    [2]李积德. 船舶耐波性[M]. 哈尔滨:哈尔滨船舶工程学院出版社, 1992: 1~4

    [3]刘应中,缪国平. 船舶在波浪上的运动理论[M].上海:上海交通大学出版社, 1987: 1~154

    [4]段文祥. 船舶大幅运动非线性水动力[M]. 哈尔滨:哈尔滨工程大学出版社, 1995: 85~105

    [5] Ted Boardman 著, 许小荣译. 3ds max设计艺术[M]. 北京: 清华大学出版社, 2005: 95

    [6]腾龙工作室3ds max7中文版建模技术案例精解北京: 科学出版社2005 P129~170

    [7]和平鸽工作室. OpenGL三维图形系统开发于实用技术[M]. 北京:清华大学出版社,重庆大学出版社, 2003: 1~2

    作者简介:何金花,硕士,控制理论与控制工程专业,主要从事虚拟现实仿真技术的研究。

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料