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