(中國(guó)人民解放軍 91550部隊(duì),遼寧 大連 116023)
隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、虛擬現(xiàn)實(shí)技術(shù)等備受關(guān)注,成為研究、開(kāi)發(fā)與應(yīng)用的熱點(diǎn),許多領(lǐng)域都以計(jì)算機(jī)為基礎(chǔ)進(jìn)行學(xué)習(xí)和訓(xùn)練,其作用和效果越來(lái)越受到人們的關(guān)注。
在國(guó)外,虛擬技術(shù)已廣泛應(yīng)用于軍事領(lǐng)域。例如:美國(guó)國(guó)防部的虛擬訓(xùn)練技術(shù)涵蓋了陸軍、海軍和空軍等各個(gè)軍兵種的主戰(zhàn)裝備,取得了良好的效果。
外軍以高、中、低層次劃分模擬訓(xùn)練,受訓(xùn)人員在進(jìn)行理論學(xué)習(xí)后,先通過(guò)一套桌面訓(xùn)練系統(tǒng)來(lái)掌握理論操作,然后再上全實(shí)物模擬器、實(shí)裝進(jìn)行訓(xùn)練,從而大大提高了訓(xùn)練效率。
例如美國(guó)的飛行員桌面訓(xùn)練系統(tǒng),可以用作飛行員基礎(chǔ)訓(xùn)練、過(guò)渡性訓(xùn)練、機(jī)載電子設(shè)備評(píng)估、日常訓(xùn)練和任務(wù)訓(xùn)練等。
相比外軍,我軍的虛擬仿真訓(xùn)練起步較晚、技術(shù)水平較低、應(yīng)用范圍較窄。但是近年來(lái)隨著裝備的不斷更新?lián)Q代,我軍的虛擬訓(xùn)練技術(shù)也取得了長(zhǎng)足進(jìn)步,尤其在飛行員訓(xùn)練領(lǐng)域,開(kāi)發(fā)出了飛行員全天候訓(xùn)練系統(tǒng),取得了良好的訓(xùn)練效果。
目前,在我海防反艦武器領(lǐng)域,系統(tǒng)介紹反艦武器結(jié)構(gòu)原理、組成功用、性能特點(diǎn)、使用維護(hù),作戰(zhàn)流程等方面內(nèi)容的多媒體教材制作才剛剛起步,軟硬件平臺(tái)建設(shè)還很不完善,作戰(zhàn)部隊(duì)使用多媒體教材進(jìn)行大規(guī)模的培訓(xùn)模式還沒(méi)有成形,開(kāi)發(fā)與應(yīng)用各型反艦導(dǎo)彈多媒體教材實(shí)施培訓(xùn)已迫在眉睫。
虛擬技術(shù)基于計(jì)算機(jī)、圖形圖像處理、網(wǎng)絡(luò)以及人機(jī)工程等技術(shù),可使用戶沉浸在虛擬環(huán)境中,并獲得同真實(shí)環(huán)境基本相同的交互體驗(yàn)。該技術(shù)在軍事領(lǐng)域已得到廣泛應(yīng)用,如坦克、飛機(jī)、艦船等裝備的虛擬訓(xùn)練[1]。因某型裝備系統(tǒng)組成復(fù)雜,技術(shù)含量較高,部隊(duì)組織實(shí)操訓(xùn)練時(shí)需動(dòng)用大量人力,消耗較多的資源,且訓(xùn)練效率較低,針對(duì)性地開(kāi)發(fā)虛擬訓(xùn)練考核系統(tǒng)可有效解決該問(wèn)題。
在虛擬訓(xùn)練系統(tǒng)開(kāi)發(fā)與應(yīng)用領(lǐng)域,建模與交互平臺(tái)種類繁多,并各有所長(zhǎng)。經(jīng)較為深入的比較論證,本系統(tǒng)提出以UG(Unigraphics NX)三維精確實(shí)體建模技術(shù)為基礎(chǔ),經(jīng)3DS MAX中間平臺(tái)進(jìn)行模型效果處理,利用Virtools虛擬交互軟件綜合實(shí)現(xiàn)協(xié)同訓(xùn)練及考核功能的技術(shù)途徑。使整個(gè)訓(xùn)練系統(tǒng)能在普通計(jì)算機(jī)上運(yùn)行,根據(jù)需要可進(jìn)行單機(jī)訓(xùn)練和聯(lián)網(wǎng)訓(xùn)練,外接設(shè)備只需通用鍵盤(pán)和鼠標(biāo)。限于篇幅限制,對(duì)虛擬交互設(shè)計(jì)中通常遇到的文件格式轉(zhuǎn)換、主控相機(jī)設(shè)置、虛擬漫游、打包封裝等一般性問(wèn)題的處理過(guò)程不再詳述,而將重點(diǎn)放在幾個(gè)關(guān)鍵技術(shù)環(huán)節(jié)上。
一般建模軟件精度難以滿足裝備訓(xùn)練要求,而且建模效率也比三維工業(yè)設(shè)計(jì)軟件偏低,所以三維實(shí)體建模采用UG軟件,嚴(yán)格按照武器裝備現(xiàn)實(shí)尺寸比例進(jìn)行三維實(shí)體建模,這樣可以使三維對(duì)象和場(chǎng)景有更加真實(shí)的視覺(jué)效果[2]。建模過(guò)程主要運(yùn)用草圖制作、拉伸、回轉(zhuǎn)、掃掠、求和、求差、拔模、分割、修剪、偏置、打孔、倒角、螺紋定制等三維建模技術(shù)完成零件部件等制作,在此基礎(chǔ)上進(jìn)行部件裝配及模型導(dǎo)出等工作。由于交互軟件virtools不支持cad文件直接導(dǎo)入,需要借助中間平臺(tái)3ds max進(jìn)行格式轉(zhuǎn)換。Virtools對(duì)實(shí)體面數(shù)要求較為苛刻,若不在格式轉(zhuǎn)換環(huán)節(jié)進(jìn)行面數(shù)控制,最終會(huì)在Virtools環(huán)境下大量消耗系統(tǒng)硬件資源,導(dǎo)致程序卡滯、效率低下,畫(huà)面不流暢等嚴(yán)重的交互障礙。所以,格式轉(zhuǎn)換是決定系統(tǒng)效率的重要環(huán)節(jié)。
UG建模完成后,默認(rèn)的保存格式是.prt,不能被Virtools導(dǎo)入,也不能被3DS MAX,需要另選導(dǎo)出格式。安裝UG導(dǎo)出插件translator后,可導(dǎo)出格式包括.stl,.x_t,.stp,.dwg,.dwf,.iges等,其中.iges格式導(dǎo)出文件容易出現(xiàn)亂面、破面等嚴(yán)重的模型質(zhì)量問(wèn)題。Stl格式模型是由精細(xì)三角面組成的,由于模型精度高,面數(shù)也多得驚人,不適合于交互設(shè)計(jì)。
試驗(yàn)表明,對(duì)于規(guī)則幾何體,.stp格式模型質(zhì)量和面數(shù)都是最理想的,而對(duì)于螺旋面、掃掠體的處理.x_t效果要好于.stp,因此,項(xiàng)目在模型格式轉(zhuǎn)換方面,基本上以.stp格式為主體,復(fù)雜模型采用.x_t格式。
建模時(shí),控制零件的數(shù)量和復(fù)雜度盡量減少不可見(jiàn)部分建模,同時(shí)在滿足一定真實(shí)感的前提下,盡量采用最少的面和線突出部件主體。在控制模型面數(shù)方面,還用3ds max專用降面工具polygon cruncher進(jìn)行適當(dāng)?shù)臏p面處理。
每次導(dǎo)入 Virtools后,都注意了.cmo文件大小的變化,以及3DS MAX環(huán)境下總面數(shù)的變化,若增加過(guò)多的面數(shù)(如單個(gè)零部件面數(shù)突破1萬(wàn)面),一般都要重新導(dǎo)出模型,進(jìn)行比較和篩選,選擇面數(shù)最低的導(dǎo)出格式,有時(shí)需要反復(fù)多次才能最終確定。另外,Virtools環(huán)境下占用空間的是網(wǎng)格,每次刪除實(shí)體模型時(shí)都做到了將相關(guān)網(wǎng)格及時(shí)刪除,文件規(guī)模得到了有效控制。但UG建模產(chǎn)生的模型面數(shù)會(huì)比較高,會(huì)提高系統(tǒng)運(yùn)行代價(jià),所以要控制零件的數(shù)量和復(fù)雜度以盡量減少外觀不可見(jiàn)部分建模,同時(shí)在滿足一定真實(shí)感的前提下,盡量采用最少的面和線突出部件主體。導(dǎo)入中間平臺(tái)3DS MAX后,對(duì)模型進(jìn)行減面、材質(zhì)、貼圖等輕量和增效處理。
完成三維建模后,還要確定裝備模型在虛擬空間中的位置,以及采取何種動(dòng)作到達(dá)指定的位置。為實(shí)現(xiàn)精確定位和操作,需要建立全局坐標(biāo)系和局部坐標(biāo)系,采取平移或旋轉(zhuǎn)運(yùn)動(dòng)來(lái)進(jìn)行描述和量化。
平移運(yùn)動(dòng)是裝備常見(jiàn)的操作,也是進(jìn)行虛擬訓(xùn)練系統(tǒng)設(shè)計(jì)時(shí)最常用到的腳本,它是指將實(shí)體沿著一個(gè)向量從當(dāng)前位置移動(dòng)到目標(biāo)位置的過(guò)程。Virtools提供的BB是行為模組,即Build Block,可實(shí)現(xiàn)圖形化編程[3]。在Virtools中實(shí)現(xiàn)平移運(yùn)動(dòng)的行為模組是Translate。平移變換過(guò)程如公式(1)所示:
(1)
裝備實(shí)操時(shí),涉及到大量的旋轉(zhuǎn)操作,如擰螺栓操作、擰堵頭操作、旋轉(zhuǎn)開(kāi)關(guān)操作等,在虛擬現(xiàn)實(shí)中旋轉(zhuǎn)運(yùn)動(dòng)是某個(gè)坐標(biāo)點(diǎn)以某坐標(biāo)軸或者任意一個(gè)方向向量為旋轉(zhuǎn)軸旋轉(zhuǎn)一定角度。在Virtools中實(shí)現(xiàn)旋轉(zhuǎn)運(yùn)動(dòng)的行為模組是Rotate/Rotate Around。
繞x軸旋轉(zhuǎn)α角后的位置可由公式(2)得到:
(2)
繞y軸旋轉(zhuǎn)α角后的位置可由公式(3)得到:
(3)
繞z軸旋轉(zhuǎn)α角后的位置可由公式(4)得到:
(4)
繞任意軸各旋轉(zhuǎn)α角后的位置可由公式(5)得到:
(5)
A=
其中:C=cosα,S=sinα。
在裝備實(shí)操訓(xùn)練中,若操作手操作不當(dāng),會(huì)造成碰撞問(wèn)題,同時(shí),在虛擬訓(xùn)練系統(tǒng)開(kāi)發(fā)時(shí),也會(huì)遇到碰撞問(wèn)題,比如螺栓擰緊到位、推拉桿安裝到位、鎖定機(jī)構(gòu)鎖定到位等。在這些問(wèn)題中,需要進(jìn)行碰撞檢測(cè),以免出現(xiàn)螺栓穿透等問(wèn)題,因此在系統(tǒng)開(kāi)發(fā)時(shí),需要進(jìn)行碰撞檢測(cè),使機(jī)構(gòu)到位后停止動(dòng)作。
包圍盒層次法是比較通用的碰撞檢測(cè)算法,其基本思想是用一個(gè)幾何簡(jiǎn)單的包圍盒來(lái)將復(fù)雜的幾何對(duì)象包圍,當(dāng)運(yùn)動(dòng)接觸時(shí),檢測(cè)兩個(gè)對(duì)象的包圍盒相交與否,若不相交則可進(jìn)行下一步操作。典型的包圍盒[4]類型如圖1所示。包圍球檢測(cè)定義為包含物體的最小球體,該方法實(shí)時(shí)性較好;AABB檢測(cè)定義為包含物體且平行于坐標(biāo)軸的最小六面體,該方法精度和實(shí)時(shí)性適中;OBB檢測(cè)定義為包含物體且相對(duì)坐標(biāo)軸任意的最小六面體,該方法精度較高。
圖1 包圍盒類型圖
由于裝備虛擬訓(xùn)練對(duì)碰撞檢測(cè)精度要求較高,需要對(duì)檢測(cè)算法進(jìn)行優(yōu)化,在兼顧實(shí)時(shí)性和真實(shí)性的同時(shí),先進(jìn)行低精度的碰撞檢測(cè)來(lái)排除為數(shù)較多的不碰撞對(duì)象,對(duì)碰撞對(duì)象再實(shí)施高精度碰撞檢測(cè),能夠取得較好的檢測(cè)效果。在Virtools中實(shí)現(xiàn)碰撞檢測(cè)的行為模組是Collision Detection,開(kāi)發(fā)適合虛擬訓(xùn)練的檢測(cè)模塊需要利用軟件開(kāi)發(fā)工具SDK進(jìn)行自定義[5]。
制作訓(xùn)練內(nèi)容應(yīng)符合實(shí)操裝備時(shí)的各種情況,各項(xiàng)任務(wù)都應(yīng)由若干步驟構(gòu)成,操作手要隨時(shí)思考裝備可動(dòng)性、順序、方向、反應(yīng)等。用過(guò)程模型描述,就是需要考慮操作時(shí)的樣機(jī)約束限制、交互類型、交互方式和操作反饋等因素,訓(xùn)練內(nèi)容的制作是按照如圖2所示的流程設(shè)計(jì)的。
1)采用操作步驟組成整個(gè)模型,同時(shí)task步驟流程表可利用全部的操作步驟形成。
2)所有的交互類型、交互方式和操作反饋都被封裝在操作步驟中,而且這些操作步驟都被虛擬樣機(jī)所約束。
3)受訓(xùn)人員進(jìn)行虛擬操作時(shí),其操作行為、使用工具、操作對(duì)象的合法性與否可由虛擬樣機(jī)的約束和操作步驟中封裝的信息共同判定。若操作錯(cuò)誤,則虛擬訓(xùn)練系統(tǒng)將會(huì)恢復(fù)到該步驟的初始狀態(tài),同時(shí),系統(tǒng)還會(huì)對(duì)該操作的正確操作方式以動(dòng)畫(huà)演示和文字提示等方式提示;若操作正確,則自動(dòng)進(jìn)去下一步操作。
圖2 訓(xùn)練內(nèi)容制作流程圖
在task控制面板中編輯task關(guān)鍵幀來(lái)實(shí)現(xiàn)操作訓(xùn)練內(nèi)容的制作,而task模型中的所有信息則包含在task關(guān)鍵幀里,可根據(jù)task模型含義按照受訓(xùn)人員接受裝備知識(shí)過(guò)程來(lái)制作task關(guān)鍵幀,若能將操作反饋信息合理利用在制作task關(guān)鍵幀的過(guò)程中,也可以大大提高操作訓(xùn)練內(nèi)容的交互性。
例如制作人員將待拆螺釘和螺絲刀建立約束關(guān)系,受訓(xùn)人員在操作時(shí),將螺絲刀移動(dòng)到按鈕附近時(shí),系統(tǒng)自動(dòng)調(diào)整螺絲刀使其對(duì)正螺釘,從而可以大大提高訓(xùn)練效率。
依照訓(xùn)練內(nèi)容制作流程完成交互設(shè)計(jì)后,操作手即對(duì)虛擬裝備進(jìn)行操作,但系統(tǒng)后臺(tái)要對(duì)其行為進(jìn)行管理和記錄,判斷其動(dòng)作、工具、對(duì)象選擇合法性及有無(wú)延遲,為考核功能實(shí)現(xiàn)做準(zhǔn)備,具體如圖3所示。
圖3 操作響應(yīng)管理流程圖
采用“對(duì)象-行為-條件-響應(yīng)-狀態(tài)”模型,建立具體操作步Action的模型,其中包括以下幾類規(guī)則:
1)動(dòng)作合法性判斷規(guī)則。在沉浸式系統(tǒng)中,對(duì)每一個(gè)操作動(dòng)作都有清晰的描述,并以此為條件判斷用戶/角色實(shí)施的操作動(dòng)作是否符合要求;
2)操作工具合法性判斷規(guī)則。所持工具的類型以及手持工具的方法是否符合操作規(guī)程需要;
3)操作對(duì)象合法性判斷規(guī)則。判斷是否操作了正確的對(duì)象,如操作對(duì)象不正確,則認(rèn)為發(fā)生了誤操作;
4)操作對(duì)象和關(guān)聯(lián)對(duì)象末狀態(tài)合法性判斷規(guī)則。判斷操作的結(jié)果是否達(dá)到了要求,若不達(dá)到要求,認(rèn)為發(fā)生了誤操作;
5)誤操作判斷規(guī)則,對(duì)誤操作類型進(jìn)行判斷。誤操作對(duì)應(yīng)操作對(duì)象不合法與操作對(duì)象和關(guān)聯(lián)對(duì)象末狀態(tài)不合法兩種情況;
6)操作延遲判斷規(guī)則。判斷操作是否存在延遲。
7)操作求助判斷規(guī)則。判斷操作是否存在求助于幫助/提示系統(tǒng)。
操作手完成全部操作后,要對(duì)其訓(xùn)練效果進(jìn)行考核,考核時(shí)要考慮到以下幾個(gè)因素[6]:時(shí)間因素,包括每階段操作時(shí)間和全部操作時(shí)間;正誤率,正確選取部件的次數(shù)和錯(cuò)誤選取部件的次數(shù);協(xié)同效果,訓(xùn)練時(shí)完成自己操作的同時(shí)不能影響整個(gè)協(xié)同訓(xùn)練的效果。系統(tǒng)設(shè)計(jì)時(shí)進(jìn)行了二次開(kāi)發(fā),以旋緊機(jī)構(gòu)測(cè)試為例,總分為100分,扣分標(biāo)準(zhǔn)具體如表1所示。
表1 機(jī)構(gòu)旋緊測(cè)試扣分標(biāo)準(zhǔn)
實(shí)現(xiàn)機(jī)構(gòu)旋緊測(cè)試的VSL程序如下[7]:
void CExamMain::ScrewedupProcess(int type)
{
switch(type)
{
case ERROR_TOOLS:
case ERROR_POS:
m_iGradeCount -= 4;
break;
case ERROR_DIREC:
m_iGradeCount -= 5;
break;
case ERROR_PLACED:
m_iGradeCount -= 3;
break;
case ERROR_COORD:
m_iCoordError ++;
if(m_iCoordError > 1)
{m_iGradeCount -= 3;}
break;
case FINISHED:
m_iUsedTime = MyGetSecendTime() - m_iStartTime;
if(m_iUsedTime >240
{m_iGradeCount -= (m_iUsedTime - 240) / 10 * 2;}
m_strMessage.Format(“旋緊機(jī)構(gòu)測(cè)試完成!V 您的得
分是%d”, (m_iGradeCount > 0) ?m_iGradeCount : 0);
MessageBox(NULL, m_strMessage, “考核成績(jī)”, 0);
break;
}
}
實(shí)操裝備時(shí),某些作業(yè)需要若干操作手協(xié)同作業(yè),因此在虛擬訓(xùn)練系統(tǒng)開(kāi)發(fā)時(shí),需要進(jìn)行多臺(tái)終端聯(lián)網(wǎng)。在交互終端中任選一臺(tái)作為服務(wù)器,創(chuàng)建一個(gè)對(duì)話進(jìn)程,其他終端搜索該服務(wù)器,獲取對(duì)話進(jìn)程列表。選擇想要參與的對(duì)話,與同一對(duì)話進(jìn)程終端互發(fā)消息,實(shí)現(xiàn)即時(shí)聯(lián)絡(luò)[8]。為保證各終端登陸不同步時(shí)也能可靠連接,設(shè)置服務(wù)器尋找循環(huán),達(dá)到相互控制與協(xié)同的目的。Virtools開(kāi)發(fā)環(huán)境下,為實(shí)現(xiàn)上述功能,給出服務(wù)器端、客戶端腳本分別如圖4、圖5所示。
圖4 服務(wù)器端腳本設(shè)計(jì)
圖5 客戶端腳本設(shè)計(jì)
制作步驟如下:
1)使用StartEmbedded ServerBB在任意終端創(chuàng)建一個(gè)Server,使用ConnectToEmbedded ServerBB連接到該Server,使用Create Session BB創(chuàng)建一個(gè)Session。
2)使用Look ForLAN ServerBB查找網(wǎng)絡(luò)上是否存在Server,使用ConnectToEmbedded ServerBB連接到該Server,使用GetSessionsListBB來(lái)獲得Session,使用Join Session BB來(lái)加入該Session。
3)利用NetworkSendMessage BB發(fā)送消息通知對(duì)方,用NetworkWaitMessage BB等待對(duì)方消息,從而實(shí)現(xiàn)網(wǎng)絡(luò)信息交互,達(dá)到相互控制與協(xié)同的目的。
為了解決部隊(duì)接收某型新裝備后動(dòng)用實(shí)裝訓(xùn)練效果低下、資源浪費(fèi)較大的問(wèn)題,本文利用計(jì)算機(jī)技術(shù)研制了虛擬訓(xùn)練考核系統(tǒng),得出以下結(jié)論:
1)嚴(yán)格按照1:1比例建立裝備零部件的高精度模型,并進(jìn)行降面、渲染后,可以減少互設(shè)計(jì)時(shí)編譯錯(cuò)誤,提高人機(jī)交互性;
2)對(duì)于需要多名號(hào)手進(jìn)行協(xié)同訓(xùn)練的項(xiàng)目,可以進(jìn)行組網(wǎng)訓(xùn)練,同時(shí)可以考核號(hào)手之間的協(xié)同性;
3)以每名號(hào)手的操作用時(shí)、正誤率、協(xié)同效果等因素來(lái)設(shè)訓(xùn)練考核系統(tǒng),可以達(dá)到對(duì)每名號(hào)手的精確考核,從而大大提高了訓(xùn)練效果。
4)虛擬系統(tǒng)建設(shè)是裝備訓(xùn)練考核的重要手段,本文對(duì)三維建模、碰撞檢測(cè)、組網(wǎng)協(xié)同和考核評(píng)估等關(guān)鍵問(wèn)題均進(jìn)行了分析設(shè)計(jì),給出了明確的工程技術(shù)途徑,能夠?qū)崿F(xiàn)對(duì)裝備操管人員的虛擬協(xié)同訓(xùn)練考核。隨著新裝備的不斷跟新,在實(shí)踐中還會(huì)遇到很多工程技術(shù)細(xì)節(jié)問(wèn)題,需要不斷對(duì)系統(tǒng)設(shè)計(jì)進(jìn)行相應(yīng)改進(jìn)和完善,進(jìn)行半實(shí)物、全實(shí)物仿真訓(xùn)練系統(tǒng)研制,以避免裝備等人,提高部隊(duì)的訓(xùn)練效果和實(shí)戰(zhàn)化訓(xùn)練水平。