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