999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Virtools虛擬訓練系統半實物接口設計*

2012-12-10 03:52:58朱湘龍于天朋
彈箭與制導學報 2012年6期
關鍵詞:系統

朱湘龍,于天朋,侯 師

(1北京理工大學,北京 100081;2國營304廠,福建三明 365000)

0 引言

現代戰爭越來越依賴于復雜、昂貴的武器系統。由于新型武器系統的復雜性,要形成戰斗力必須反復訓練其使用者,其相比于傳統武器更依賴于熟練的使用者。而新型武器系統一般價格昂貴,實彈訓練費用高,很難像傳統武器系統一樣采用大規模的實彈訓練,嚴重阻礙了其戰斗力的快速形成。針對這種情況,各國普遍為新型武器系統開發相應的虛擬訓練系統,以較低的成本和較好的效果完成使用者的初步訓練。

虛擬訓練系統設計的難點在于高度仿真的虛擬視景設計。傳統虛擬訓練系統大多采用OpenGVS、Vega等軟件設計虛擬視景,但這些軟件有價格高、開發難度較大、視覺沉浸感不夠優秀等問題。法國VIRTOOLS公司的Virtools是一款非常優秀的、大量應用于游戲領域的三維交互軟件。它能將現有常用的虛擬視景檔案整合在一起,如3D的模型、2D圖形、音效等構成三維交互系統[2]。Virtools采用圖形化編程語言。開發人員無需編寫底層代碼,只需要拖動打包好的行為模塊(building block)即可構建優秀的三維交互系統,開發難度小,Virtools軟件本自帶了大量打包好的行為模塊供開發者調用。其三維引擎已獲得微軟Xbox認可。Virtools主要用于網絡游戲領域,與實物系統數據通信能力較為薄弱,未提供標準模塊。文中深入分析了Virtools的運行機制和Virtools SDK開發構架,通過調用回調函數,完成了基于Virtools SDK半實物串行通信接口的設計。

1 虛擬訓練系統總體設計

本虛擬訓練系統由仿真彈筒和仿真計算機兩部分組成。仿真彈筒用于模擬導彈發射的全過程,給受訓者真實的觸覺感受。仿真計算機主要功能是虛擬視景的生成和彈道仿真。虛擬視景經過渲染之后輸送到虛擬瞄具,給受訓者逼真的視覺感受。虛擬訓練系統通過音箱播放訓練過程音效給受訓者逼真的聽覺感受。仿真彈筒為本系統的實物部分,仿真計算機為虛擬部分。兩部分中間通過全雙工異步串行通信接口連接進行通信,如圖1所示。通信接口設計重點在串口通信行為模塊(SerialBB)的設計。SerialBB通過Virtools行為模塊實現。在每一個仿真周期內,SerialBB讀取一組仿真彈筒發送的數據,然后解包,提取執行本幀所需數據,傳送給虛擬視景,供虛擬視景運行。

圖1 虛擬訓練系統總體構架

2 Virtools體系結構

2.1 Virtools虛擬視景運行構架

Virtools是一個實時引擎,能對自身場景變化做出實時準確的反應。一個Virtools場景只有一個系統進程,也是單線程運行。因而其能夠自行決定其任務的優先級,讓所有任務在Virtools本身的時間軸上實時的運行,而不受宿主非實時操作系統的限制。

Virtools視景執行過程中,以幀的方式在自身時間軸上推進視景進程。每一幀內按固定的時序執行一次過程循環,如圖2所示。最先執行的是管理預處理,在此Virtools會運行視景腳本中的管理預處理模塊。然后執行的是行為模塊,視景腳本中的行為模塊依次運行。執行完畢后進入后置管理處理段,在此執行視景腳本中的后置管理模塊。執行完畢后對場景進行渲染,完成一幀的執行。

圖2 Virtools幀結構

本虛擬訓練系統中,Virtools虛擬視景不僅需要對自身場景中的事件做出實時準確的反應,還需對仿真彈筒上的操作做出實時的反應。而仿真彈筒時序以現實世界的時間軸為基礎。所以虛擬視景時間軸需與現實世界時間軸有可解析關系。因此,本虛擬視景采用固定幀率的方式運行。確定好虛擬視景幀率之后,仿真計算機性能足夠的前提下,虛擬視景時間軸能與現實世界的時間軸同步。因而就實現了仿真彈筒時間軸與虛擬視景時間軸的同步。

2.2 回調函數調用邏輯分析

Vrtools虛擬視景在事件發生時會調用相應的回調函數來處理。在本虛擬訓練系統視景運行過程中主要的事件有:打開VT、開始執行視景、停止視景、暫停視景、復位視景。經測試事件和回調函數對應關系如表1所示。

表1 回調函數調用邏輯

2.3 Virtools SDK 開發構架

Virtools軟件架構高度模塊化。圖3所示為其API整體構架。所有的Virtools可執行程序都是在該架構上通過動態鏈接庫(DLLs)的形式實現的。其核心組件有兩個DLLs:CK2和VxMath。VxMath提供較為底層的函數;CK2提供核心的行為函數,并且負責管理關聯其他組件。本系統設計的SerialBB就是通過調用CK2和VxMath提供的API實現的[1]

圖3 Virtools API整體構架

3 串行通信接口行為模塊設計

3.1 程序設計

SerialBB中行為模塊框架通過調用Virtools API實現。串口打開/關閉時序部分通過回調函數實現。串口通信部分、數據處理部分通過調用Win32 API實現。

3.1.1 行為模塊框架實現

行為模塊軟件結構包括5部分,通過這5部分就能實現行為模塊框架。

1)Plugin信息注冊函數:該函數用于Plugin信息的注冊,調用CKGetPluginInfo()函數創建了指向CKPluginInfo結構類型的指針對Plugin版本號、插件類型、作者等相關信息進行指定,調用CKGetPluginInfo-Count()函數獲取注冊的Plugin的個數。上述兩個函數將最后生成的DLL文件聲明為Building Block Plugin,該 Plugin用來執行 BB,BB的執行是 Building Block Plugin的一部分。最后調用 RegisterBehavior-Declaration()函數注冊Building Block Plugin將要執行的BB,完成對BB的注冊。

2)BB聲明函數:該函數用于BB描述函數的聲明,通過調用CreateCKObjectDeclaration()創建CKObjectDeclaration類型的指針,該指針指向BB描述函數結構體。通過該函數指定BB的類型、版本號、功能等相關參數和信息。

3)BB創

建函數:該函數用于BB實體的創建,包括輸入輸出接口、輸入輸出參數接口、功能函數指定等。函數用CreateBehaviorPrototype()創建CKBehaviorPrototype類型的指針,用來指向將要創建的BB原型的函數。創建函數則只有在BB真正使用的時候才會被調用。

4)BB執行函數:該函數用于定義BB的行為功能,是BB的核心。BB的每次調用都會執行該函數。BB執行過程中參數處理過程為:首先用ActiveInput()函數激活模塊的輸入端,開始執行模塊。然后調用函數GetInputParameterValue()從參數入口讀取輸入參數。然后對參數進行處理,處理完成之后通過SetOutputParameterValue()函數將處理結果輸出到參數輸出口,供其它模塊調用。模塊每次調用都會更新輸出端口值。參數處理完畢后停止模塊運行并激活模塊輸出端口,標志BB的一次調用完成。

5)BB回調函數:該函數用于對一些特定事件(如鍵盤、鼠標等)做出響應,以及對BB是時間依賴還是幀依賴做出選擇[1,5]。

以上5部分函數依靠指針按圖4所示順序執行,實現行為模塊框架。

3.1.2 串口開關邏輯切換實現

虛擬視景狀態流圖如圖5所示。系統正常運行需保證計算機COM口在視景停止和暫停狀態為關閉,在視景運行狀態為開啟。

對照表1經分析,最后選擇在回調函數CKM_BEHAVIORRESUME中調用打開串口函數,在回調函數CKM_BEHAVIORPAUSE和KM_BEHAVIORRESET中調用關閉串口函數。從而保證計算機COM的開關時序[6]。

3.1.3 串口通信部分的實現

圖4 行為模塊軟件構架

串口通信部分通過調用Win32 API中的文件操作函數實現。打開串口通過調用CreateFile()函數實現。發送數據通過調用WriteFile()函數實現。接受數據通過調用ReadFile()函數實現[3-4]。串口的打開和關閉在回調函數中實現。程序運行到BB執行函數時BB被激活。程序首先初始化參數,然后向仿真彈筒發送握手信號,如果收到握手成功的反饋信號則將握手成功位置位,否則在BB下一次激活時繼續給仿真彈筒發送握手信號直至成功握手。成功握手后,BB在每個幀循環都會調用ReadFile()函數從計算機COM口讀取一組數據。經過解包和數據處理之后輸出供其它模塊調用。直至 BB不再被激活。因為Virtools以基于幀的方式運行,所以行為模塊程序本身并不需要寫循環,圖中幀循環是通過Virtools腳本實現的。這種方式可以保證程序讀數周期與Virtools運行周期相同。

圖5 虛擬視景狀態流圖

圖6 SerialBB程序流程圖

圖7 串口行為模塊

程序編譯之后生成SeialBB如圖 7所示。SerialBB模塊輸入端和輸出端相連,形成一個循環,每幀結束后都會激活輸出端,然后由輸出端激活輸入端,保證在下一幀時SerialBB仍舊處于激活狀態。

3.2 接口模塊測試

將SerialBB集成到Virtools行為腳本中測試發現半實物接口能夠很好的工作,仿真彈筒發送的數據都及時、準確的到達了虛擬視景。虛擬視景實時的對仿真彈筒的操作做出了正確的反應。虛擬彈筒的瞄準過程、發射信號等都能實時準確的反應到虛擬視景,并由虛擬視景仿真出來。系統整體運行流暢,未出現可覺察到延遲現象,受訓者感受到預期的沉浸效果。視景在各種操作組合下,計算機COM口都能正確的在打開和關閉狀態間切換,避免了異常數據接受。

4 結論

文中在Virtools SDK開發構架下,通過調用Virtools API和Win 32 API完成了虛擬訓練系統半實物接口的設計和開發。通過合理的使用Virtools回調函數,準確地控制了接口的開關邏輯。實現了基于Virtools虛擬訓練系統仿真彈筒和仿真計算機的實時通信。

這些工作是針對計算機COM做的,但并不局限于COM口。在相同的構架下,通過其它Win32 API的調用理論上能實現任意計算機支持的接口與Virtools虛擬視景間的通信。

[1]VIRTOOLS.Virtools SDK Documentation[S].FRANCE:VIRTOOLS,2006.

[2]王立群,李紅.簡明教程[M].上海:復旦大學出版社,2008.

[3]艾塞明格.Win32開發人員參考庫[M].北京:機械工業出版社,2001.

[4]龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2007.

[5]楊國平.Virtools SDK初探[J].程序員:游戲創造,2006,6:73-75.

[6]吳明勛.VIRTOOLS使用手冊(一)[M].臺灣:愛迪斯通股份有限公司,2006.

[7]陳定方,羅亞波.虛擬設計[M].北京:機械工業出版社,2007.

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 久久精品一卡日本电影| 久热中文字幕在线观看| 四虎国产成人免费观看| 色婷婷成人| 国产精品三区四区| 人与鲁专区| 国产福利在线观看精品| 蜜臀av性久久久久蜜臀aⅴ麻豆| 成人综合久久综合| 香蕉色综合| 天天干天天色综合网| 亚洲欧美在线综合图区| 国产91高清视频| 亚洲中文无码av永久伊人| www.99在线观看| 欧洲高清无码在线| AV不卡无码免费一区二区三区| 色一情一乱一伦一区二区三区小说 | 超清无码熟妇人妻AV在线绿巨人| 亚洲中文字幕无码爆乳| 波多野结衣视频网站| 精品国产网站| 一区二区三区国产| 欧美成人第一页| 亚洲免费成人网| 午夜精品一区二区蜜桃| 欧美第一页在线| 亚洲精品在线91| 色哟哟国产精品| 国产成人高清精品免费5388| 色成人亚洲| 国产精品手机视频| 日韩 欧美 小说 综合网 另类| 国产成人无码Av在线播放无广告| 操美女免费网站| 55夜色66夜色国产精品视频| 国产玖玖视频| 色婷婷在线影院| 国产va视频| 久久性妇女精品免费| 一本大道视频精品人妻| 777国产精品永久免费观看| 爆乳熟妇一区二区三区| 天天色天天操综合网| 中文字幕va| 伊人天堂网| 国产草草影院18成年视频| 婷婷色一二三区波多野衣| 久久久久人妻精品一区三寸蜜桃| 亚洲永久视频| 91福利片| 91在线视频福利| 亚洲午夜福利精品无码| 国产毛片基地| 国产最新无码专区在线| 欧日韩在线不卡视频| 日韩AV无码一区| 日韩在线视频网站| 亚洲日韩AV无码一区二区三区人| 毛片手机在线看| 欧美成人午夜影院| 久久亚洲欧美综合| 免费国产福利| 一区二区午夜| 国产91无码福利在线| 午夜爽爽视频| 中文字幕久久波多野结衣 | 日韩在线欧美在线| 国内精品视频| 国产女同自拍视频| 亚洲69视频| 日韩欧美中文| 成人国产精品网站在线看| 波多野结衣第一页| 97在线观看视频免费| 尤物成AV人片在线观看| 亚洲精品第一页不卡| 亚洲中文在线看视频一区| 永久免费AⅤ无码网站在线观看| 人妖无码第一页| 国产精品久久久久鬼色| 国产一区二区三区在线无码|