管芳景 林達



摘? 要:文章主要對破損船舶運動及進出水運動結果三維視景展示進行研究,開發了一款仿真軟件,首先對軟件進行功能需求分析,確定了軟件總體方案和基本結構,并給出了軟件主界面原型,軟件中實現了船型建模、運動控制、模擬、顏色設置等功能模塊,然后給出軟件中主要的功能模塊的設計思路和實現方法,最后,展示了軟件主要功能模塊的實現效果。
關鍵詞:破損船舶;三維視景展示;進水過程;仿真
中圖分類號: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。gzslib2022040510203.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.