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在多段調速系統中的應用
主站蜘蛛池模板: 国产亚洲一区二区三区在线| 免费jjzz在在线播放国产| 五月天在线网站| 在线色国产| 国产乱人视频免费观看| 成人午夜视频免费看欧美| 成人福利在线视频| 99爱视频精品免视看| 日本黄网在线观看| 国产美女丝袜高潮| 国产成人一区免费观看| 高清久久精品亚洲日韩Av| 国产91成人| 欧美一道本| 免费毛片在线| 日日拍夜夜操| h视频在线观看网站| 免费又爽又刺激高潮网址 | 五月婷婷综合网| 国产69精品久久| 人妻无码中文字幕第一区| 欧美五月婷婷| 亚洲免费福利视频| 日韩午夜福利在线观看| a级毛片视频免费观看| 亚洲午夜福利精品无码不卡 | 成年网址网站在线观看| 色婷婷天天综合在线| 欧美激情,国产精品| 国产亚洲视频中文字幕视频| 亚洲日韩Av中文字幕无码| 97超碰精品成人国产| 国产成人啪视频一区二区三区| 99草精品视频| 国模私拍一区二区| 黄色在线不卡| 91美女视频在线观看| 91精品久久久无码中文字幕vr| 中国毛片网| 日韩第九页| 国产丝袜一区二区三区视频免下载| 中文字幕丝袜一区二区| 噜噜噜久久| 在线观看亚洲天堂| 日韩高清欧美| 曰AV在线无码| 婷婷伊人久久| 先锋资源久久| 亚洲人网站| 夜色爽爽影院18禁妓女影院| 视频一区亚洲| 亚洲日韩AV无码一区二区三区人| 亚洲精品第一在线观看视频| 欧美亚洲国产精品第一页| 亚洲精品波多野结衣| 亚洲天堂网视频| 久久不卡精品| 久久精品波多野结衣| 日韩中文字幕免费在线观看| 国产手机在线小视频免费观看| 国产成人免费观看在线视频| 日本午夜精品一本在线观看| 国产成人一区二区| 日韩国产综合精选| 午夜日b视频| 真人高潮娇喘嗯啊在线观看| 国产尹人香蕉综合在线电影| 欧美成人午夜视频免看| 一本大道视频精品人妻| 国产精品播放| 午夜福利网址| 国产黄网站在线观看| 精品国产美女福到在线直播| 国产h视频在线观看视频| 欧美在线免费| 国产精品美女在线| 中国一级特黄视频| 国产人人射| 狠狠久久综合伊人不卡| 91一级片| 国产欧美日韩精品综合在线| 日韩亚洲综合在线|