林德江 ,秦國偉,王國德,涂善超
(武漢軍械士官學(xué)校,湖北 武漢 430075)
基于Unity 3D技術(shù)的某裝備便攜式虛擬訓(xùn)練系統(tǒng)研究
林德江 ,秦國偉,王國德,涂善超
(武漢軍械士官學(xué)校,湖北 武漢 430075)
針對現(xiàn)階段虛擬現(xiàn)實引擎平臺通用性不強、虛擬訓(xùn)練系統(tǒng)過于復(fù)雜而導(dǎo)致的訓(xùn)練系統(tǒng)應(yīng)用環(huán)境受限的問題,提出了基于3D小游戲理念的虛擬操作訓(xùn)練系統(tǒng),該系統(tǒng)利用跨平臺開發(fā)引擎Unity 3D進行開發(fā),以達到簡化設(shè)計,增強趣味性,提高系統(tǒng)移植性的目的。從經(jīng)濟性和使用效果的角度考慮,提出了在便攜式平臺上采用手勢觸摸技術(shù)實現(xiàn)虛擬操作訓(xùn)練的新途徑。重點研究了系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù),包括利用C#開發(fā)系統(tǒng)通用體系結(jié)構(gòu),以及利用Finger Getures插件實現(xiàn)多任務(wù)手勢交互操作,進一步通過裝備模型對象處理,場景驅(qū)動編程,實現(xiàn)了系統(tǒng)運行。實際應(yīng)用結(jié)果表明,該系統(tǒng)不僅能滿足虛擬訓(xùn)練的需求,同時也為在便攜式平臺上嘗試手勢觸摸技術(shù)實現(xiàn)虛擬操作訓(xùn)練提供了一定的借鑒。
計算機應(yīng)用;虛擬訓(xùn)練;Unity 3D;通用體系結(jié)構(gòu);手勢觸摸
大型復(fù)雜裝備的價格昂貴,一般培訓(xùn)機構(gòu)的保有量少,工學(xué)矛盾突出,造成裝備操作、使用、訓(xùn)練嚴重滯后,很大程度上影響了裝備操作使用及后續(xù)保障能力的快速生成。采用虛擬現(xiàn)實技術(shù),豐富訓(xùn)練手段,降低訓(xùn)練成本,提高訓(xùn)練效果,已成為目前改善“實兵+實地+實裝”訓(xùn)練方式的一種常用手段,而現(xiàn)階段通過Vega或Virtools等虛擬現(xiàn)實引擎開發(fā)的虛擬訓(xùn)練系統(tǒng)[1-4]平臺通用性不強,只能在安裝有應(yīng)用程序的計算機上進行訓(xùn)練,限制了訓(xùn)練系統(tǒng)的應(yīng)用環(huán)境。Unity 3D是近年來迅速興起的一種專業(yè)游戲引擎,在跨平臺開發(fā)方面具有非常大的優(yōu)勢[5-7],幾乎支持所有的主流平臺(PC、Web、移動端),通常只需要一次開發(fā),便能以極小的代價部署到多平臺上,若能將其應(yīng)用于虛擬訓(xùn)練系統(tǒng)的開發(fā)當中,必然可以極大程度地豐富訓(xùn)練的途徑。
在裝備虛擬操作交互方面,目前大多采用鼠標加鍵盤或者昂貴的沉浸式VR外部設(shè)備(如HMD、數(shù)據(jù)手套、操作手柄等)。用鼠標加鍵盤的方式操作虛擬對象,體驗較差,沉浸感不強,某種程度上影響了裝備操作訓(xùn)練效果;采用昂貴的VR外設(shè),又會帶來新的成本問題。手勢觸摸技術(shù)近年來在人機交互領(lǐng)域迅猛發(fā)展,運用起來十分便捷,若將其運用于裝備的虛擬操作訓(xùn)練,對于提高訓(xùn)練的沉浸感,增強趣味性,一定大有益處。
基于此,筆者綜合運用Unity 3D引擎技術(shù)以及手勢觸摸技術(shù),在便攜式安卓平臺基礎(chǔ)上開發(fā)了某型裝備的虛擬訓(xùn)練系統(tǒng),為便攜式平臺上實現(xiàn)虛擬訓(xùn)練提供了一定借鑒。
考慮到系統(tǒng)最終運行于安卓平臺上,為了既保證軟件運行流暢,又不失訓(xùn)練的針對性,系統(tǒng)采用了3D小游戲的設(shè)計理念,簡化系統(tǒng),保留最主要的訓(xùn)練功能,同時又增強趣味性。本系統(tǒng)主要包含科目選擇、模式選擇、引導(dǎo)模式、練習(xí)模式、考核模式以及虛擬對象查看等功能。
科目選擇功能:系統(tǒng)提供了若干個訓(xùn)練科目,可供受訓(xùn)人員自主選擇。系統(tǒng)采用開放式設(shè)計,可以隨時加入新的訓(xùn)練科目,使訓(xùn)練更加系統(tǒng)。
模式選擇功能:系統(tǒng)針對受訓(xùn)人員學(xué)習(xí)的一般規(guī)律,將訓(xùn)練模式劃分為引導(dǎo),練習(xí)和考核3種,受訓(xùn)人員可以根據(jù)自己的學(xué)習(xí)情況自主選擇訓(xùn)練模式。
引導(dǎo)模式功能:針對初學(xué)者,引導(dǎo)模式能自動、完整并且清晰地展示整個裝備的操作流程,每個操作處均具有文字提示功能,使受訓(xùn)人員能夠按照文字提示,逐步運用特定的手勢完成裝備虛擬對象的操作,虛擬對象會根據(jù)操作改變自己的狀態(tài)。在該模式中,還具備暫停、播放和重新開始等功能。
練習(xí)模式功能:針對逐步掌握訓(xùn)練內(nèi)容的受訓(xùn)人員,可以選擇在沒有信息提示下自主練習(xí)操作裝備虛擬對象,正確的操作會使虛擬對象產(chǎn)生應(yīng)有的狀態(tài)改變,操作錯誤時虛擬對象則不會響應(yīng),并發(fā)出錯誤提示。
考核模式功能:在操作實際裝備之前,必須通過裝備的虛擬操作考核。系統(tǒng)在練習(xí)模式的基礎(chǔ)上,為受訓(xùn)人員設(shè)定倒計時,例如10 min。在規(guī)定的時間內(nèi),受訓(xùn)人員需逐步完成所有必要操作,任何一步操作錯誤,虛擬對象不會繼續(xù)響應(yīng),即無法繼續(xù)下一步驟的操作,若計時結(jié)束,受訓(xùn)人員能夠完成操作,則認定為考核通過,否則認定為未通過考核。系統(tǒng)將根據(jù)受訓(xùn)人員的操作結(jié)果,給予一定評價。
虛擬對象查看功能:為了便于受訓(xùn)人員熟悉裝備,實時進行交互,系統(tǒng)提供了查看功能。默認將裝備虛擬對象最大化地展示在屏幕中,使受訓(xùn)人員在任何模式下,均能通過手勢任意的旋轉(zhuǎn)、縮放、移動虛擬對象,360°查看虛擬對象及其部件。通過復(fù)位按鈕可使變動后的虛擬對象重新回到便于操作的位置。
2.1 通用體系結(jié)構(gòu)實現(xiàn)
由于該型裝備涵蓋的訓(xùn)練科目很多,所以系統(tǒng)結(jié)構(gòu)的通用性非常重要,為此系統(tǒng)采用了“三層架構(gòu)”的設(shè)計思想,即數(shù)據(jù)層、邏輯層和UI層相互分離。為了方便處理各層之間的事件和消息,實現(xiàn)程序結(jié)構(gòu)的通用性,定義的關(guān)鍵類如表1所示。
表1 關(guān)鍵類及其功能
續(xù)表1 關(guān)鍵類及其功能
程序中的各個關(guān)鍵類關(guān)系如圖1所示。
GlobalManaer.cs、UIManager.cs和StepManager.cs三者之間是相互耦合的。UIManager.cs主要負責響應(yīng)和處理UI的消息,同時也與StepManager.cs一起負責處理系統(tǒng)消息,并將處理結(jié)果通知GlobalManager.cs。
系統(tǒng)為每種訓(xùn)練模式配置了相應(yīng)的txt配置文件,包含虛擬對象資源位置、虛擬對象動畫步驟和每一步動畫的起始幀、結(jié)束幀等一系列的信息。受訓(xùn)人員一旦選定某個模式,該模式的狀態(tài)會被記錄在GlobalManager.cs的全局枚舉中,并通知UIMananger.cs和StepManager.cs當前系統(tǒng)的運行模式,其會自動地針對當前系統(tǒng)的運行狀態(tài)做出改變。ConfigReader.cs負責讀取相應(yīng)模式下的txt配置文件,并將讀取到的數(shù)據(jù)傳送給StepUnit.cs,生成固定的數(shù)據(jù)結(jié)構(gòu){firstFram(起始幀),lastFram(結(jié)束幀),delayTime(延時播放的時間),description(對該動作的描述)}unit,存儲在鏈表中,供StepPlayer.cs準備播放使用。如果受訓(xùn)人員操作正確或者需要播放動畫,StepManager.cs則通知StepPlayer.cs需要播放的動畫,StepPlayer.cs使用AnimationPlayer.cs播放鏈表中的unit對應(yīng)的動畫,實現(xiàn)交互響應(yīng)。
基于上述結(jié)構(gòu),如果需要加入新的訓(xùn)練科目,則只需要把動畫制作好,配置好相應(yīng)的txt配置文件,便可以隨時添加進來。
2.2 多任務(wù)手勢交互操作的實現(xiàn)
該系統(tǒng)實現(xiàn)的另一項關(guān)鍵技術(shù)是多任務(wù)手勢交互操作。手勢觸摸主要用來實現(xiàn)虛擬環(huán)境導(dǎo)航、操作UI和操作裝備虛擬對象三方面的功能。因而需要根據(jù)功能需求,確定各種任務(wù)手勢。
虛擬環(huán)境的導(dǎo)航也就是實現(xiàn)通過手勢查看虛擬對象的功能,實際上就是根據(jù)需要改變相機的視角、朝向和位置。據(jù)此設(shè)計了幾種能夠滿足要求的導(dǎo)航手勢:單指上下左右滑動,雙指上下左右滑動,雙指相對靠近/相對遠離。單指左右滑動實現(xiàn)旋轉(zhuǎn)虛擬對象,雙指上下左右滑動實現(xiàn)移動虛擬對象,雙指相對靠近,相對遠離實現(xiàn)放大縮小虛擬對象。
操作UI主要是點擊UI的按鈕圖標,主要用到單手的點擊手勢。
裝備操作手勢如圖2所示。按照裝備的操作要求,在操作時主要有上下?lián)軇硬倏v桿、短按啟動按鈕、短按停止按鈕、長按調(diào)平按鈕、旋轉(zhuǎn)固定器等動作。因此,可以通過單指短按,單指長按,上下左右滑動,旋轉(zhuǎn)等手勢來實現(xiàn)裝備虛擬對象操作。
針對手勢任務(wù)需要,Unity 3D專門為開發(fā)者提供了兩個輸入對象touch和input,方便獲取受訓(xùn)人員觸摸的狀態(tài),包括觸控位置、離開觸控的位置、觸控的時間、觸控的數(shù)量等一系列的信息描述[7-8], 利用input和touch,通過各個變量間的組合可以解決任何單一的手勢事件,但是這種方法易用性不強,不利于解決面臨的復(fù)雜問題。為此使用了專門為Unity編寫的一個手勢插件FingerGestures3.0,該插件底層通過C#代理的形式來實現(xiàn)手勢操作,包含5個預(yù)設(shè),使用它能方便地監(jiān)聽Unity中的各種手勢事件:上下左右四方向的滑動事件、按下事件、抬起事件、移動事件長按事件等。
以單手事件為例來說明系統(tǒng)中對Finger Gestures的運用,如圖3所示。首先在Unity project面板中放入“Finger Gertures Initializer預(yù)設(shè)”用于監(jiān)聽相應(yīng)的手勢事件,接著創(chuàng)建虛擬對象以響應(yīng)手勢操作,最后編寫C#腳本,將編寫的腳本掛在相應(yīng)的虛擬對象上,或者其他任何虛擬對象上從而開始接受信息。
由于該插件是通過C#代理形式來接收事件消息的,所以需要用腳本來注冊這些事件從而開始接收消息,腳本編程的流程如圖4所示。
在上述基礎(chǔ)上,最終實現(xiàn)該系統(tǒng)還在于場景建模以及場景驅(qū)動,系統(tǒng)的開發(fā)流程如圖5所示。
虛擬對象的真實程度、系統(tǒng)畫面效果很大程度上決定了訓(xùn)練的沉浸性,但是不能片面追求畫面的效果,而不考慮軟件在平臺上運行的流暢程度。因此,在利用3ds max2012進行建模時,對于需要交互操作虛擬對象部件,進行細致的建模,對于無關(guān)交互的部件則相對粗略,虛擬對象的貼圖紋理完全從裝備上采集并進行了處理,能夠讓受訓(xùn)人員感到非常真實。
虛擬對象建立完成后則利用3ds max自帶的FBX插件將虛擬對象、動畫、貼圖資源導(dǎo)出為.FBX格式的文件,導(dǎo)入Unity 3D中進行場景配置,選用適用平板系統(tǒng)版本支持的shader。系統(tǒng)的界面設(shè)計運用的是NGUI插件,利用其可以方便地制作簡潔友好的交互界面。
場景驅(qū)動主要是指腳本語言的編寫,也就是功能代碼的編寫。在本系統(tǒng)的開發(fā)中,主要使用的開發(fā)語言是C#,另外還用到一些有助于編寫腳本的插件,主要有NGUI(UI界面插件,用來制作界面)、FingerGestures3.0插件。利用Visual Studio2010和Unity 自帶的Mono Develop進行C#或者Java script腳本編程。將腳本綁定在操作對象或者UI上以實現(xiàn)場景的驅(qū)動,編輯完成,即可以通過Unity部署功能發(fā)布到Web、PC或者移動端。圖6為系統(tǒng)發(fā)布成一個APK安裝到安卓4.2平臺上的運行效果。
筆者采用3D小游戲的設(shè)計理念,并基于跨平臺開發(fā)引擎Unity3D研究開發(fā)了某裝備便攜式虛擬訓(xùn)練系統(tǒng)。采用三層架構(gòu)的思想,通過C#編程,實現(xiàn)了該系統(tǒng)的通用體系結(jié)構(gòu),根據(jù)系統(tǒng)的設(shè)計功能和裝備操作要求確定了多任務(wù)操作手勢,研究了多任務(wù)手勢操作的實現(xiàn)方法,最終利用該通用體系結(jié)構(gòu)在便攜式安卓平臺上實現(xiàn)了該裝備的虛擬訓(xùn)練,滿足了訓(xùn)練要求。與昂貴的沉浸式和增強型虛擬訓(xùn)練系統(tǒng)相比,該系統(tǒng)的硬件要求低,訓(xùn)練的趣味性強,可以隨時隨地訓(xùn)練,同時方便移植到Web、PC和移動端等多種平臺,豐富了訓(xùn)練途徑,降低了開發(fā)成本,為在便攜式平臺上利用手勢觸摸技術(shù)實現(xiàn)虛擬操作訓(xùn)練提供了一定的參考。
References)
[1]李萬,王學(xué)軍,崔小鵬,等.GL Studio與Vega Prime在某艦炮虛擬訓(xùn)練仿真系統(tǒng)中的應(yīng)用[J].火炮發(fā)射與控制學(xué)報,2010(2):28-30. LI Wan,WANG Xuejun,CUI Xiaopeng,et al. Application of GL Studio and Vega Prime virtual training simulation system of a naval gun[J]. Journal of Gun Launch & Control,2010(2):28-30.( in Chinese)
[2]彭亮,黃心漢.基于HLA和Vega Prime導(dǎo)彈作戰(zhàn)虛擬仿真系統(tǒng)研究[J].中南大學(xué)學(xué)報:自然科學(xué)版,2011,42(4) :1015-1020. PENG Liang,HUANG Xinhan. Missile combat virtual simulation system based on HLA and Vega Prime[J]. Journal of Central South University:Science and Technology,2011,42(4):1015-1020.(in Chinese)
[3]王憲成,李勃,李莉.基于Virtools 4.0的某型船艇柴油機虛擬維修關(guān)鍵技術(shù)研究[J].裝甲兵工程學(xué)院學(xué)報,2010,24(2) :27-31. WANG Xiancheng,LI Bo,LI Li. Research on key technology of virtual mintenance certain boat diesel engine based on Virtools 4.0[J]. Journal of Academy of Armored Force Engineering,2010,24(2):27-31. ( in Chinese)
[4]楊清文,房施東,楊光,等.基于Virtools的某火箭炮技術(shù)檢查訓(xùn)練仿真研究[J].計算機測量與控制,2012,20(2):407-410. YANG Qingwen,F(xiàn)ANG Shidong,YANG Guang,et al. Research on training simulation of technique check for rocket launcher based on Virtools[J].Computer Mea-surement &Control,2012,20(2):407-410. ( in Chinese)
[5]任國棟,陳林華,陶學(xué)鋒,等.基于 Unity3D的虛擬博物館信息可視化系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2013,29(9):87-90. REN Guodong,CHEN Linhua,TAO Xuefeng,et al. Virtual museum information visualization system based on Unity3D[J]. Computer Systems & Applications,2013,29(9):87-90. ( in Chinese)
[6]吳彬,黃贊臻,郭雪峰.Unity 4.x從入門到精通[M].北京:中國鐵道出版社,2013:1-13. WU Bin,HUANG Zanzhen,GUO Xuefeng. Unity 4.x from the introduction to the master[M]. Beijing:China Railway Press,2013:1-13. ( in Chinese)
[7]金璽曾.Unity 3D 手機游戲開發(fā)[M].北京:清華大學(xué)出版社,2013:329-333. JIN Xizeng.Mobile game development of Unity 3D[M]. Beijing:Tsinghua University Press,2013:329-333. ( in Chinese)
[8]吳亞峰,于復(fù)興.Unity 3D 游戲開發(fā)技術(shù)詳解與典型案例[M].北京:人民郵電出版社,2012:158-159. WU Yafeng,YU Fuxing. Technology explanation and typical cases of game development by Unity 3D[M]. Beijing: Posts and Telecom Press,2012: 158-159. ( in Chinese)
ResearchonaPortableVirtualTrainingSystemBasedonUnity3DTechnology
LIN Dejiang, QIN Guowei, WANG Guode, TU Shanchao
(Wuhan Ordnance Non-Commissioned Officer Academy,Wuhan 430075,Hubei,China)
Aimed at the limited generality of the virtual reality engine platform and the complexity of the virtual training system, the virtual operation training system based on 3D game concept was put forward for the sake of limited applications environment of existing virtual training system. Cross-platform development engine Unity 3D was used to develop the system so as to achieve the simplicity in design, to make it more interesting to use, and to improve the portability of the system. In addition, the new way to use gesture touch technology for carrying out the virtual operation training on a portable platform was proposed in consideration of economy and the application effect. The key technology of system implementing were focused researched, including using C#to develop a common system architecture and using Finger-Getures plug-in to realize the multitasking gestures interaction. The system was realized on the basis of model processing and script writing. Application results showed that the system can not only meet the training requirements, but also provide some valuable experience for using gesture touch technology to realize virtual operation training on the portable platform.
computer application; virtual training;Unity 3D;common system architecture;gesture touch
2014-06-25;
2014-08-12
林德江(1987-),男,碩士,助教,主要從事裝備虛擬訓(xùn)練技術(shù)研究。E-mail:lindejiang1808@sina.com
TP391.9;TJ35
A
1673-6524(2014)04-0091-05