APP下载

破损船舶运动三维视景展示软件的设计与实现

2021-04-04管芳景林达

现代信息科技 2021年18期
关键词:仿真

管芳景 林达

摘  要:文章主要对破损船舶运动及进出水运动结果三维视景展示进行研究,开发了一款仿真软件,首先对软件进行功能需求分析,确定了软件总体方案和基本结构,并给出了软件主界面原型,软件中实现了船型建模、运动控制、模拟、颜色设置等功能模块,然后给出软件中主要的功能模块的设计思路和实现方法,最后,展示了软件主要功能模块的实现效果。

关键词:破损船舶;三维视景展示;进水过程;仿真

中图分类号:TP311.1 文献标识码:A 文章编号:2096-4706(2021)18-0001-04

Abstract: This paper mainly studies the three-dimensional visual display of damaged ship motion and water Inflow and outflow movement results, and develops a simulation software. This paper firstly analyzes the functional requirements of the software, then determines the overall plan and the basic structure, gives the prototype of the main interface of the software. The software realizes ship shape modeling, motion control, simulation, color setting and other functional modules. functional module  Then the design idea and implementation method of main function modules in software are given. Finally, the effect of main function modules in the software is showed.

Keywords: damaged ship; 3D visual display; water inflow process; simulation

0  引  言

船舶经常在航行过程中由于碰撞等因素造成不同程度的船体破损,船舶破损后吃水增加,在波浪中运动,对破损船体造成极大的危险,造成人员和财产的损失[1]。当前一些仿真软件不能满足试验需求,为了更清楚了解不同船型在试验过程中破损船体运行和进水过程[2],可以使用试验人员更直观了解船体进水的时间和吃水情况,需建设成一款可积累、高复用的船舶破损进出水仿真集成软件,从而成为船舶试验中了解破损船舶运行和进出水过程的有效手段。

1  软件功能分析

破损船舶运动和进出水运动结果三维视景展示软件[3]主要用于船舶后处理展示,根据用户提供的船体模型、船体运动结果、进水时域结果等,在计算机中建立起虚拟试验场景,模拟仿真求解过程中船舶的运动状态及进出水状态。软件功能需求主要包括如下几个方面。

1.1  前处理功能模块

该模块主要实现对船型的模型转换及三维展示。在友好的用户界面下实现参数定义,并进行合法性检查。前处理阶段输入的参数主要包括用户基本信息、船型信息、工况信息等,能够实现针对不同船型的三维展示。可利用开发平台对接相关API,在三维场景中对船型进行相应的调整、视角切换、缩放等操作。

1.2  求解器调用模块

该模块主要实现对软件所输入的参数进行校验,确保软件中各部分功能之间的协调工作。在友好的用户界面下实现求解参数设置,并进行合法性检查。求解阶段所需的输入参数主要包括求解控制参数和求解输出选项等。并具备在计算开始前对参数具备初步检查功能,如判断参数数值选择范围等,提供完善的报错机制,支持流程自动及交互式运行,各功能既可以独立运行,又可在流程管理环境内按照具体业务流程形成有机整体,实现模块间按逻辑执行及数据的自动流转。

1.3  后处理功能模块

读入求解器生成的结果文件,对结果数据进行处理,并采用曲线、云图、报告等多种形式展示后处理数据内容。根据计算功能对不同计算结果显示实现差异化,具备后处理结果截图、视频或动态图片录制功能,计算结果数据能够采用通用格式(txt、dat等)导出。

后处理展示中,具备船舱破损进水动画效果,突出展示船舱破裂时,波浪进入舱内的效果。

2  软件总体设计

根据破损船舶运动和进出水运动结果三维视景展示软件功能分析结果,搭建了软件集成架构和软件原型界面。

如图1所示软件主界面主要由左侧工具欄和右侧视景展示区两部分组成。

工具栏主要包括导入、运动模拟、波浪模拟[4]、进水模拟[5]等控件,具体功能如以下所示:

(1)导入船体模型和计算结果。

(2)控制运动模拟的显示、隐藏以及开始、暂停、结束。

(3)控制进水效果的显示、隐藏以及开始、暂停、结束。

(4)控制波浪的波高、波长、周期、相位等。

(5)控制时间进度。

视景展示区主要用于展示船舶模型、运动及进出水模拟,同时可以协同展示运动和舱室进水的数据曲线,以及物理试验视频。

3  软件设计方案

3.1  开发平台选取

三维视景展示软件其重点在于三维场景的交互,结合软件功能需求,在开发平台选取时,采用了Unity作为开发平台。Unity(Unity 3D),是由Unity Technologies公司开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。全世界在工业VR/AR内容中的60%是Unity驱动,很多领先汽车品牌中使用了Unity的技术,所以,软件开发平台选用了Unity。gzslib202204051020

3.2  船舶模型转换

在本软件中,船舶模型转换是前处理功能模块中的重要功能,能够将计算采用的型值点数据文件转换成标准3D模型文件,便于导入视景仿真软件进行后处理制作,同时在模型文件中保留有船舶各部件的信息。

实现方法分三步完成:

第一步:数据处理。设置一个容差(可由用户修改),剔除间距小于该容差的数据点,防止节点过于密集导致网格连接错误。由于船体的对称性,二维数据文件中仅存有横剖面一般站点的数据,因此需要补全缺少的节点,形成整船的节点数据。

第二步:节点信息写入。从船尾开始,按照Y坐标值从小到大的顺序记录每一个型值点的三维坐标,以便网格数据正确匹配节点。

第三步:网格信息写入。根据船体形状特征,以船中为分界,对船尾部的站面求取任意两个相邻型值点Y坐标的平均值,并将该值与相邻站面上的型值点Y坐标比对,获取最接近的节点,由这三个节点构成一个三角形网格,在模型文件中记录此网格三个节点的编号。对于船尾部,则求取相邻两节点的Z坐标,后续步骤同上,从而形成完整的船体网格信息,并且网格之间不发生重叠。

3.3  船型三维展示模块

3.3.1  船型三维展示模块功能

船型三维展示模块属于前处理功能模块,实现读取并展示用户导入的船体模型,具体功能如以下所示:

(1)通过鼠标按键操作自由调整视角位置及大小。

(2)显示船体内部的舱室结构及破损口。

(3)设置吃水大小来调节液面与船体的位置。

(4)支持用户自定义船体、舱室的颜色。

3.3.2  实现方法

建模,在软件运行过程中通过读取模型文件内容重新构建船体模型。将读取到的节点、网格信息以Unity中数据类型存储到MeshFilter组件中,按照模型文件中船体部件创建空对象并修改名称为部件名,添加相应的MeshFilter组件,同时创建MeshRender组件并赋予该部件相应的材质,完成模型创建。

显示,Unity平台中内置几种渲染队列,按照渲染顺序,从先到后进行排序,队列数越小的,越先渲染,队列数越大的,越后渲染。根据显示逻辑,水面与船体默认处于同一渲染队列,将船壳的渲染队列顺序设置为第一个,舱室渲染顺序设置为第二个。同时创建一个包裹体完全包裹住船体模型,包裹体的材质不赋予任何颜色,渲染队列设置为第三个,以确保模型显示正常。

鼠标控制视角。Unity通过相机将用户搭建的场景呈现出来,本模块中通过记录鼠标操作来计算移动相机的距离及角度以实现调整用户的观测视角。

3.4  船舶运动模块

3.4.1  船舶运动模块功能

船舶运动模块属于后处理模块中的功能模块,读取导入的运动结果文件,展示船舶六自由度运动(包括横摇、纵摇、艏摇、横荡、纵荡、垂荡),具体功能如以下所示:

(1)可自由选择显示或隐藏任意某个自由度上的运动。

(2)运动具备开始、暂停、停止等功能。

(3)可任意调节时间轴上的时刻,并从选定时刻进行船体运动模拟。

3.4.2  实现方法

通过Unity的动画系统可以轻易地在船体对象施加运动效果,保准时间与动作的一致性,同时可以方便地控制动画的启停,播放倍数等。

本模块首先在获取的船体模型上添加Animation动画组件,然后创建六个动画剪辑片段(分别存储六自由度运动数据),对不存在纵摇数据的片段添加航速数据。再将动画剪辑添加到Animation组件中,通过脚本控制动画的播放。

3.5  进水动画模块

3.5.1  进水动画模块功能

进水动画模块属于后处理模块中的功能模块,读取导入的进水结果文件,展示船舱破损后海水涌入及舱室内液面上升动画,具体功能如以下所示:

(1)运动具备开始、暂停、停止等功能。

(2)可任意调节时间轴上的时刻,并从选定时刻进行船体运动模拟。

3.5.2  实现方法

(1)进水效果。在获取到的破舱口对象上添加粒子系统组件,调整粒子系统的形状,方向,重力材质等参数,模拟海水进入舱室的效果。获取液面对象,添加到粒子系统的碰撞器中,模拟水柱进入液面后消失效果。

(2)液面升降。复制一个舱室底面对象,舱室底面上添加Animation动画组件,然后创建一个动画剪辑片段,添加液面高度时历数据。再将动画剪辑添加到Animation组件中,通过脚本控制动画的播放。

4  软件详细设计及效果展示

4.1  软件主界面

为便于分析人员操作,将功能集成在软件主界面中,运行效果如图2所示。

4.2  船舶模型转换模块

船舶模型转换模块能够将计算采用的自定义型值点数据文件转换成obj格式的标准3D模型文件,能直接导入视景仿真软件进行后处理制作,同时在模型文件中保留有船舶各部件的信息具体步骤为:

(1)输入文件,即船舶基础信息数据,可分为船体型值文件(ship.data)和舱室型值文件(dam.data)两种,船体型值文件格式如图3所示,第一行为船体名称,第二行为船长、船宽、吃水数据,第三行为总剖面个数,从第四行开始记录每一个剖面的型值点坐标数据。第一行为该剖面的型值点个数与剖面X坐标,此后29个值为剖面型值点的Y与Z坐标值,依次类推。

舱室型值文件主要包括舱室和破口信息,文件格式如图4所示。

(2)输出文件,即3D模型文件,其内容包括船体各部件的名称,顶點坐标数据及面网格数据,具体如图5所示。gzslib202204051020

根据所提供的船舶3D模型文件,在主界面中导入模型文件,转换后的模型如图6所示。

4.3  船型三维展示模块

船型三维展示模块能够读取并展示用户导入的船体模型,并且显示船体内部的舱室结构及破损口;能够设置吃水大小来调节液面与船体的位置;通过鼠标按键操作可自由调整视角位置及大小;支持用户自定义船体、舱室的颜色。船型三维展示效果如图7所示。

4.4  船舶运动模块

船舶运动模块能够读取导入的运动结果文件数据,利用Unity动画系统将离散的时域数据拟合成连续的数据,在船型三维展示界面上模拟船舶六自由度运动(包括横摇、纵摇、艏摇、横荡、纵荡、垂荡),模拟过程中,用户可自由选择显示或隐藏任意某个自由度上的运动;运动模拟具备开始、暂停、停止等功能;支持任意调节时间轴上的时刻,并从选定时刻进行船体运动模拟。通过鼠标滚轮可自由缩放视角大小,鼠標右键按住可调整视角位置。运行效果如图8所示。

4.5  进水动画模块

进水动画模块能够读取导入的进水结果文件,利用Unity粒子系统模拟船舱破损后海水从破舱口涌入过程,利用Unity动画系统将离散的时域数据拟合成连续的数据展示舱室内液面上升动画。进水模拟具备开始、暂停、停止等功能;支持任意调节时间轴上的时刻,并且从选定时刻进行船体运动模拟。通过鼠标滚轮可以自由缩放视角大小,鼠标右键按住可调整视角位置。运行效果如图9所示。

5  结  论

本文采用了Unity开发平台,开发了破损船舶运动及进出水运动的三维视景展示软件,软件根据试验专家经验,创建不同船舶模型,从不同视角展示船体情况,根据时间段和场景不同,模拟破损船舶运动和进出水情况,让试验人员直观了解破损船舶进出水过程。

参考文献:

[1] 夏淼.破损船舶在波浪中的运动响应研究 [D].镇江:江苏科技大学,2019.

[2] 徐涛.船舶破损紧迫局面的应对措施 [J].中国水运(下半月),2019,19(2):16-17.

[3] 聂海英,刘常波,张建华.关于潜艇破损进水实时监视管理系统设计 [J].计算机仿真,2018.35(2):1-5.

[4] 杨威,毛筱菲.波浪中船舶破损进水模拟研究 [J].船海工程,2010,39(1):48-51.

[5] 孙智超.舰船多舱室破损进水仿真及抗沉决策研究 [D].大连:大连海事大学,2018.

猜你喜欢

仿真
Proteus仿真软件在单片机原理及应用课程教学中的应用
工业机器人模拟仿真技术在职业教育中的应用浅析
一种帮助幼儿车内脱险应急装置的仿真分析
论虚拟仿真实训系统在口腔实验教学中的应用
基于机电设备电气控制线路排故的仿真系统设计
Buck开关变换器的基本参数设计及仿真分析
试析PLC控制下的自动化立体仓库仿真情况分析
基于MADYMO的航空座椅约束系统优化设计
中国体态假人模型与FAA Hybrid Ⅲ 型假人模型冲击差异性分析
机械加工仿真技术研究