孫巖 胡以懷 郭磊 方云虎 張陳 芮曉松



摘要:該文綜合利用3ds Max、Unity3D軟件開發了一套船舶機損事故案例多媒體演示軟件,能實現船舶機械設備的三維展示、語音自動播放、人機交互等功能。詳細介紹了軟件的開發過程和關鍵技術,包括總體結構、開發流程,以及海面波動、碎落動畫、粒子噴射動畫的多媒體設計等,實現了船舶機損故障的虛擬重現,可進行沉浸式事故案例學習,彌補了傳統教學課程的不足。
關鍵詞:船舶機損;船舶教學軟件;多媒體仿真
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)17-0014-03
開放科學(資源服務)標識碼(OSID):
1 背景
船舶險情因其事故發生地點空間狹小復雜、人員疏散與控制處置難度大、機械設備密集、事故發生點不易發現且難以救援[1],因此一旦發生事故極易造成人員傷亡和經濟損失,甚至船沉人亡的嚴重事故,因此加強船員面對緊急情況時該具有的應對措施能力顯得至關重要。
由于船舶行業的特殊性,實地演習雖然操作體驗感真實,但會耗費大量人力物力財力,而且一旦在實地演習中危險真正發生,危險可控性不高,故實地演習難以操作。但僅憑書本中大量的文字描述,又很難使受訓者理解故障現場,從而與實際脫節,不利于知識的消化吸收,同時也會缺乏面對實際事故發生時的冷靜,導致教學訓練效果欠佳[2]。
虛擬仿真技術利用計算機技術可集中實現建模、仿真、交互等功能,將圖像、文字、立體模型整合。利用Unity3D引擎技術可輕松解決當前培訓軟件制作復雜、跨平臺維護不便[3]等問題。
本文對船舶典型機損事故進行了詳細研究,并針對船舶應急事故的要求和流程,利用3ds Max建立實際的模型,再基于Unity3D開發了一款操作簡單、可自動播放教學視頻的仿真軟件,模擬仿真船上的具體故障設備、發生的典型事故,以及相應的排查和應急處理。該軟件能夠為受訓人員提供一個真實感高、交互性強的虛擬仿真平臺,使教學不再受時間、空間限制,大大減少了前期資金投入及后期設備維護的成本[4],也在一定程度上提高了船舶應急事故訓練的靈活性以及教學質量。
2 軟件開發過程
2.1 軟件總體結構
前期收集了船舶各系統較為典型的事故案例,詳細說明了故障發生的經過,以及輪機員相應的分析和緊急應對措施。考慮到本軟件是針對學生群體的具體事故進行情景再現式教學,軟件重在對故障場景的演示,且為達到教學目的,盡可能保證系統操作簡單,軟件界面簡約適用。
針對輪機專業教學培訓的實際需求,軟件包括起動系統、調速系統、燃燒系統、換向系統、燃油系統、滑油系統和冷卻系統等七個主要系統[5],有磨損、臟堵、斷裂等各類部件易發生的故障案例,具體軟件系統功能如圖1所示。
在進入軟件界面后,可根據受訓者需求,點擊進入相應的船舶系統,選擇不同的事故案例開始學習。同時軟件會將事故的發生經過和相對應分析與處理過程的文字隨語音播放逐字出現,與動畫演示視頻也能夠同步對應。如圖2所示,演示視頻以三維動畫的方式呈現,受訓者可根據需求實現音頻的暫停或播放,也可拖動視頻下方的進度條進行調整,或者點擊屏幕右上方的按鈕選擇從頭開始播放。
2.2 軟件開發流程
為使受訓者能夠清楚地理解產生事故的相關設備及其表現出的故障現象,需要場景中同故障相關的模型具體結構部件和工作狀態與實際設備一致,具體的軟件開發流程如圖3所示。細節化的建模可以使真實的故障狀態完美呈現在動畫教學視頻中,故選取了事故案例中主要故障設備。由于船舶設備結構復雜、零部件較精細[6],利用3ds Max軟件可以進行精度較高的建模。
以燃燒系統中“航行中主機再起動發生爆燃”一項為例,根據案例,需建立主機、噴油泵、活塞、油管等模型,如圖4為噴油泵解體零件。在采集完相關設備的圖片、視頻等素材后,利用3ds Max進行基本建模,再利用貼圖功能使模型更具有真實感,材質功能賦予模型金屬感和機械感。簡單的動畫如單一的旋轉、移動等可在3ds Max再制作中完成制作,而拆裝、脫落、碎裂、屈展等較復雜的動畫,導入Unity3D中,可使效果能夠更加簡便地實現。
模型在3ds Max中建成并渲染完之后以“.FBX”格式導出,然后導入到Unity3D的Assert文件夾下[7],根據需求,可分別在Assert下新建各系統文件夾,將對應故障所需的模型存入即可。同時Unity3D會自動將模型、材質等分開存放,隨選隨用。如導入的模型尺寸不統一,可根據需要對模型進行整體或單維度的調整,避免先后導入的模型之間大小失真。
事故案例中有些場景有水、火和煙的特殊效果均利用了Unity3D的粒子系統加以完成。特效導入后,根據所需場景,對相關參數進行調整,從而模擬水面波動、燃燒爆炸、煙霧消散等[8]。
3 關鍵技術及實現
3.1 海面波動
由于部分場景涉及船舶在海上航行的狀態,故需要模擬海面的波動以及船體的搖晃。如整個海面都用粒子系統進行模擬,則計算機會因軟件運行占用內存過大,從而使畫面失真,出現不連貫及卡頓現象,所以在遵循資源最優化的原則下,選擇用平面(plane)制作動畫,以代替海面的上下起伏。
首先在Assert下新建一個材料(material),賦予海水的圖片,再在場景中新建一個平面,把材料賦給平面,同時利用Visual Studio的C#語言編寫腳本,并掛載給平面。在腳本中通過公開規模(scale)和速度(speed),將參數的修改調至前端,可以直接對海面波浪的起伏程度和速度進行調整,以符合眾多場景的不同需求,如圖5所示。
3.2 碎落動畫
為真實還原故障現場,需依據仿照設備實際工作情況逐幀制作動畫。有規定運作軌跡的動作可將其分解為平移和旋轉,通過Unity3D的動畫(animator)功能可快捷地完成動作疊加實現效果,但是如燃燒系統“凸輪錯位引起排溫升高”一項中,“彈簧墊圈全部碎落在鏈條箱內”,若逐幀給每塊碎裂的彈簧墊圈制作動畫,不僅工作量巨大,而且由于不能規劃好掉落過程中因碰撞、摩擦等因素造成的掉落途徑,會使動畫極度失真,故面對類似問題,使用了剛體(rigidbody)和碰撞體(collider)功能。
將用3ds Max制作好的動畫模型導入Unity3D中,先給墊圈添加剛體的組件,并根據需求設置重力(mass)、摩擦力(drag)等相關數據值,以便模型具備重力下落等運動特性。其次針對墊圈、螺絲、螺帽和法蘭等會互相接觸的物體[9],由于接觸動作較簡單,且物體形狀較規則,可選用方形碰撞器(box collider)以減少計算機在執行階段所需的計算,如此可使墊圈模型沿模型外表滑落,不致穿模失真。之后利用Unity3D動畫功能制作動畫效果,在開始需要掉落效果的幀處添加墊圈屬性(add property),激活剛體和碰撞體組件,否則會在開始運行的同時就發生掉落動作。設置和效果如圖6所示。
3.3 粒子噴射動畫
噴油器的霧化情況能夠直接影響主機功率,在船舶燃油系統發生的故障中經常需要做霧化試驗。而Unity3D的粒子系統中,粒子是一個動態產生的過程[10],符合噴油器噴油的動作規律,因此對粒子系統進行導入可以真實地模擬噴油的過程。
以“航行中主機再起動發生爆燃”一項中“檢查該缸的油頭霧化情況和噴油定時”為例,將噴油器位置確定后,新建一個粒子系統(particle system),通過平移、旋轉將該粒子系統置于噴油器噴口處,且保證粒子發射角度與噴油器主體在一直線。之后根據噴油器噴油孔實際的開孔角度,在形狀(shape)中選擇錐形(cone)、調整發射角度(angle)為60,圓臺上底面半徑(radius),即初始發射面為0.2。通過改變粒子的開始生命周期(start lifetime)和開始速度(start speed)改變噴射形狀的大小,宏觀上即表現為噴出油距離的遠近。通過限制粒子的開始大小(start size)為0.07、提高模擬速度(simulation speed)至10,可以使噴出的油滴更細、速度更快。在放射(emission)中通過改變隨時間變化的速率(rate over time)可以控制噴油的密度。由于在實際情況中,人眼看到的霧化噴射,油滴不是一粒粒噴射出的,因此使用了粒子系統的拖尾效果(trails),同時在渲染(renderer)中新加入了一個油的材料,為更貼近實際,在材料中選擇了漸褪(fade)的渲染模式(rendering mode)。噴油相關設置及效果如圖7所示。
3.4 界面切換
在系統主界面上,屏幕顯示了七個系統。受訓者可選擇不同的系統,利用鼠標直接點擊系統所在按鈕進入下一層界面,此場景是借助了Unity3D中的UI面板制作而成。
以初始界面點擊進入系統總覽界面為例。在初始界面(后簡稱為A界面)新建一個按鈕(button),重命名為“start”,同時另外新建一個面板(panel)設為系統總覽界面(后簡稱為B界面),并在2D模式下,將兩塊面板重合擺置。之后在A界面的start按鈕中單擊(on click)設置中添加單擊效果,使start按鈕被點擊時,A界面變為不激活而B界面被激活。完成以上按鈕設置后,還需只保持A界面為激活狀態,而將B界面取消激活,如此在運行時,點擊start按鈕即可使A界面消失,同時B界面出現,從而實現鼠標單擊按鈕切換界面的效果。
4 結束語
利用3ds Max進行建模,使用Unity3D制作動畫特效,可實現船舶主要系統典型機損故障的動畫模擬仿真,給學生以直觀的感受,有利于提高教學效率,彌補了培訓設備不足和教學時間和空間受限的問題。后續還可添加測試評分模塊,進一步提高軟件的交互性和教學實用性。
參考文獻:
[1] 葛貝貝,梁靜國,李一倬.船舶火災應急管理仿真系統[J].黑龍江科技信息,2008(26):9,229.
[2] 劉歡.油化船舶電氣設備的使用要求與防火防暴措施[J].科技傳播,2011(21):151-152.
[3] Zhang X,Chen F E.Development of vehicle fault maintenance system based on Unity3D[J].Journal of Physics:Conference Series,2020,1549:042010.
[4] 祁永超,田銘興,陳小強,等.基于Unity3d的變電站虛擬仿真培訓系統構建[J].蘭州交通大學學報,2021,40(1):53-59.
[5] 徐鵬.基于Unity3D開發平臺的Web3D技術的數字科技館展示系統設計制作[J].科技與創新,2021(3):51-52.
[6] 申蔚,李天宇.虛擬拆裝教學系統的設計與實現[J].高教學刊,2021(5):72-75.
[7] 柳依何,顧繼俊.基于Unity203D的吸力錨安裝工藝虛擬仿真系統[J].科技創新與應用,2021(2):117-121.
[8] 吳可玉,莊建軍,徐琳玲.基于Unity203D的虛擬消防與安全教育系統[J].實驗技術與管理,2020,37(12):237-240.
[9] 陳亮,李耕,葉志浩.船舶電力系統虛擬仿真實驗教學的探索與實踐[J].教育教學論壇,2021(6):117-120.
[10] 葉詩慧.基于Unity3D的化學虛擬實驗系統的設計與實現[J].微型電腦應用,2020,36(10):32-34,38.
【通聯編輯:謝媛媛】