亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Visual Studio的虛擬現(xiàn)實(shí)與半實(shí)物接口設(shè)計

        2015-12-23 05:21:59鄧飆,劉連偉
        兵器裝備工程學(xué)報 2015年1期
        關(guān)鍵詞:虛擬現(xiàn)實(shí)

        【信息科學(xué)與控制工程】

        基于VisualStudio的虛擬現(xiàn)實(shí)與半實(shí)物接口設(shè)計

        鄧飆,劉連偉

        (第二炮兵工程大學(xué),西安 710025)

        摘要:Virtools交互式操作中半實(shí)物接口的實(shí)現(xiàn)方法主要有2種。一是編寫串口通信類,使用Virtools SDK模塊開發(fā)實(shí)現(xiàn);二是基于Virtools SDK,通過調(diào)用系統(tǒng)應(yīng)用程序接口函數(shù)開發(fā)串口通信行為模塊實(shí)現(xiàn)。2種方法對開發(fā)者使用C++語言編程能力要求很高。針對此問題,提出以Visual Studio 2010作為開發(fā)平臺,使用C#開發(fā)環(huán)境中的串口控件,通過添加COM組件中的Virtools 3D XE Player,實(shí)現(xiàn)虛擬現(xiàn)實(shí)作品與硬件的交互。實(shí)驗證明,該方法在實(shí)現(xiàn)串口通信的同時,縮短了開發(fā)周期。

        關(guān)鍵詞:Visual Studio;Virtools;虛擬現(xiàn)實(shí);半實(shí)物接口;交互式操作

        收稿日期:2014-08-06

        作者簡介:鄧飆(1969—),男(苗族), 博士,副教授,主要從事系統(tǒng)仿真理論與技術(shù)研究;劉連偉(1989—),男,研究生,主要從事虛擬仿真技術(shù)研究。

        doi:10.11809/scbgxb2015.01.032

        中圖分類號:TP391.9

        文章編號:1006-0707(2015)01-0114-04

        本文引用格式:鄧飆,劉連偉.基于VisualStudio的虛擬現(xiàn)實(shí)與半實(shí)物接口設(shè)計[J].四川兵工學(xué)報,2015(1):114-117.

        Citationformat:DENGBiao,LIULian-wei.DesignofSemi-PhysicalInterfaceBasedonVisualStudio[J].JournalofSichuanOrdnance,2015(1):114-117.

        DesignofSemi-PhysicalInterfaceBasedonVisualStudio

        DENGBiao,LIULian-wei

        (TheSecondArtilleryEngineeringUniversityofPLA,Xi’an710025,China)

        Abstract:There are two main methods to realize the semi-physical interface of the Virtools interactive operation. One is that writing serial port communication class with the help of Virtools SDK. The other is that calling the application program interface (API) function of the system to develop the serial port communication building blockings (BB). There is a high requirement on the developers’ programming ability of using C++ . According to the problem, a new method was put forward. Taking Visual Studio 2010 as an intermediary platform, using serial port control in the C# development environment, Virtools 3D XE Player from the COM components were added to realize the interactive operation between the virtual scene and the physical system. It turns out to be a better way to achieve the designed goal and to shorten the development cycle.

        Keywords:VisualStudio;Virtools;virtualreality;semi-physicalinterface;interactiveoperation

        虛擬現(xiàn)實(shí)VR(VirtoolsReality)技術(shù)又稱為“靈境”技術(shù),指用計算機(jī)搭建一個逼真的三維感覺世界,使人和計算機(jī)很好地 “融為一體”,給人以“身臨其境”的感覺[1]。經(jīng)過近30年的發(fā)展,虛擬現(xiàn)實(shí)技術(shù)在許多領(lǐng)域有著廣闊的應(yīng)用前景[2,3]。虛擬現(xiàn)實(shí)的實(shí)現(xiàn)需要硬件和軟件2方面的支持,硬件方面主要包括數(shù)據(jù)手套、三維鼠標(biāo)、運(yùn)動跟蹤器、力反饋裝置、語音識別及合成系統(tǒng)等。

        Virtools軟件自帶了大量的行為模塊供開發(fā)者使用,但是Virtools軟件并未提供標(biāo)準(zhǔn)的數(shù)據(jù)通信模塊,不能與虛擬現(xiàn)實(shí)仿真系統(tǒng)進(jìn)行數(shù)據(jù)通信,因此,虛擬現(xiàn)實(shí)仿真系統(tǒng)設(shè)計的難點(diǎn)在于半實(shí)物接口的設(shè)計。朱湘龍[4],張躍文[5]利用VirtoolsSDK(SoftwareDevelopmentKit),通過調(diào)用相應(yīng)的應(yīng)用程序接口函數(shù)(API)創(chuàng)建自定義通信模塊,實(shí)現(xiàn)了實(shí)物系統(tǒng)與視景仿真之間的通信,這種方法要求開發(fā)者對操作系統(tǒng)的底層函數(shù)有很好的理解,并能熟練使用;覃伯明[6]通過編寫串口通信類,利用VisualStudio2003編譯生成.dll通信插件,完成了對串口的打開,讀寫操作,這種方法對開發(fā)者的C++ 語言使用能力提出了很高要求;傅招國[7],夏華錦[8],徐望[9]利用Virtools自帶的行為模塊(BB)實(shí)現(xiàn)了游戲方向盤與仿真系統(tǒng)的交互控制,這種方法較為簡單,但連接的外部設(shè)備比較單一,工業(yè)情況下不適用。

        針對此問題,提出以VisualStudio2010(以下簡稱VS2010)中的C#開發(fā)環(huán)境為平臺,載入Virtools3DXEPlayer組件后,利用VS2010現(xiàn)有的SerialPort串口控件,通過虛擬現(xiàn)實(shí)仿真系統(tǒng)(*.cmo文件)與VS2010通信,VS2010與硬件(單片機(jī))通信,最終實(shí)現(xiàn)虛擬現(xiàn)實(shí)仿真系統(tǒng)與硬件通信。本文利用Virtools自帶的實(shí)例,CameraOrbit.cmo與單片機(jī)進(jìn)行信息交互試驗,通過單片機(jī)上按鍵控制虛擬場景中石像進(jìn)行轉(zhuǎn)動或平移運(yùn)動,以及虛擬場景通過發(fā)送消息控制單片機(jī)數(shù)碼管顯示不同數(shù)字,以此驗證本文提出方法的可靠性。邏輯關(guān)系如圖1所示。

        圖1 通信實(shí)現(xiàn)邏輯

        1軟件平臺

        1.1Virtools

        Virtools是一套具備豐富互動行為模塊的實(shí)時3D環(huán)境虛擬實(shí)景編輯軟件。本身自帶了700多個BuildingBlock(BB)模塊,使用這些模塊可以迅速方便地處理豐富和交互性強(qiáng)的3D模型。對于某些特殊用途,比如,串口通信的實(shí)現(xiàn),就需要使用VirtoolsSDK開發(fā)出新的適用于特殊需求的BB模塊。SDK針對C++語言,具有C++面向?qū)ο笳Z言的所有特點(diǎn)。

        1.2VS2010

        VS2010是微軟公司推出的開發(fā)環(huán)境,采用拖曳式便能完成軟件的開發(fā)。簡單的操作便可以實(shí)現(xiàn)一個界面的生成,支持C#、C++、VB等多種語言開發(fā)環(huán)境。其主要特點(diǎn)有:支持多個監(jiān)視器、快速瀏覽代碼、調(diào)用層次結(jié)構(gòu)項目功能對應(yīng)等。

        2關(guān)鍵技術(shù)及實(shí)現(xiàn)

        2.1虛擬現(xiàn)實(shí)仿真系統(tǒng)與VS2010交互

        為減少原型開發(fā)周期并減少工作量,本文使用VS2010中C#開發(fā)環(huán)境與3DXEPlayer組件開發(fā)原型的界面。3DXEPlayer組件具有以下優(yōu)點(diǎn):

        1) 支持所有.NET開發(fā)環(huán)境,方便程序開發(fā)人員。

        2) 不僅提供播放器窗口功能,還包括多種常用方法控件。

        C#是可用于創(chuàng)建要運(yùn)行在.NETCLR上的應(yīng)用程序的語言之一,是微軟專門為使用.NET平臺而創(chuàng)建的。它能使用.NETFramework代碼庫的每種功能 其主要特點(diǎn)有語法簡單、易于移植到其他操作系統(tǒng)上等。相比于C++,它是類型安全語言,運(yùn)行更加穩(wěn)定。

        2.1.1虛擬現(xiàn)實(shí)仿真體統(tǒng)載入

        為了在VS2010中載入虛擬現(xiàn)實(shí)仿真系統(tǒng),首先要完成Virtools3DXEPlayer組件的加載。在“工具箱”選項中,依次右鍵——選擇項——COM組件——Virtools3DXEPlayer,點(diǎn)擊確定即可加載。

        完成組件的加載后,便可以進(jìn)行仿真系統(tǒng)的載入。以下為Virtools3DXEPlayer組件載入仿真系統(tǒng)函數(shù)原型:

        publicvirtualvoidLoad(stringfile):該函數(shù)用于將虛擬場景仿真系統(tǒng)文件,即將*.cmo文件載入到C#開發(fā)環(huán)境中,其參數(shù)file有2種實(shí)現(xiàn)方式,一是填寫完整的文件路徑名,如“D:ProgramFiles/3DVIA/*.cmo”,這里需要注意的是,文件名之間不能用“”,否則會出現(xiàn)編譯錯誤;二是填寫相對路徑,即“Application.StartupPath+”.*.cmo””,這里要注意的是,要將待加載的*.cmo文件放入到該項目工程中的Debug文件夾內(nèi)。

        關(guān)鍵代碼如下:

        privatevoidtimer1_Tick(objectsender,EventArgse)

        {

        this.axXEPlayer1.Load(Application.StartupPath+ ".//CameraOrbit.cmo");

        this.timer1.Stop();

        }

        2.1.2虛擬現(xiàn)實(shí)仿真系統(tǒng)向VS2010發(fā)送消息

        該模塊實(shí)現(xiàn)的功能是,當(dāng)虛擬現(xiàn)實(shí)仿真系統(tǒng)成功導(dǎo)入到VS2010中后,利用Virtools軟件自帶的“FireVirtoolsEvent”BB模塊實(shí)現(xiàn)由虛擬現(xiàn)實(shí)仿真系統(tǒng)向VS2010發(fā)送消息,該模塊具有2個參數(shù),如圖2所示。

        圖2  Fire Virtools Event參數(shù)設(shè)置

        “EventName”為發(fā)送數(shù)據(jù)說明,應(yīng)該簡單明了,容易識別,“EventData”為發(fā)送數(shù)據(jù)內(nèi)容。

        2.1.3VS2010接收虛擬現(xiàn)實(shí)仿真系統(tǒng)消息

        在VS2010中,利用Virtools3DXEPlayer組件中的VirtoolsEvent事件接收來自虛擬現(xiàn)實(shí)仿真系統(tǒng)的消息,其函數(shù)原型如下:

        privatevoidaxXEPlayer1_VirtoolsEvent(objectsender,AxXEPlayerActiveX._IXEPlayerEvents_VirtoolsEventEvente):該函數(shù)中需要注意的是第二個參數(shù)“e”,其對應(yīng)于虛擬場景文件中“FireVirtoolsEvent”模塊中的參數(shù)“EventName”,利用“e.eventData.ToString()”可以獲取其所攜帶的數(shù)據(jù),即“EventData”參數(shù)的內(nèi)容,進(jìn)而通過對數(shù)據(jù)內(nèi)容的判斷,做出相應(yīng)的動作,觸發(fā)不同的事件。

        部分代碼如下:

        privatevoidaxXEPlayer1_VirtoolsEvent(objectsender,AxXEPlayerActiveX._IXEPlayerEvents_VirtoolsEventEvente)

        {

        if(e.eventData.ToString() == "8") / /如果仿真系統(tǒng)發(fā)送數(shù)字8,則向單片機(jī)發(fā)送如下信息

        {

        byte[]send1 =newbyte[5]{ 0x77,0xAA,0x03,0xbd,0x01 };

        serialPort1.Write(send1,0,5);

        }

        if(e.eventData.ToString() == "9")/ /如果仿真系統(tǒng)發(fā)送數(shù)字9,則向單片機(jī)發(fā)送如下信息

        {

        byte[]send=newbyte[5]{0x77,0xAA,0x03,0xbd,0x02};

        serialPort1.Write(send,0,5);

        }

        }

        2.1.4VS2010向虛擬現(xiàn)實(shí)仿真系統(tǒng)發(fā)送消息

        當(dāng)VS2010接收到來自硬件的消息時,需要向虛擬現(xiàn)實(shí)仿真系統(tǒng)發(fā)送對應(yīng)消息,虛擬場景中的物體接收到來自VS2010的消息后做出相應(yīng)的動作,借此實(shí)現(xiàn)硬件與虛擬場景對象之間的交互。VS2010中向虛擬現(xiàn)實(shí)仿真系統(tǒng)發(fā)送消息的函數(shù)聲明如下:

        publicvirtualvoidBroadcastMessageSingle(stringmessage)。

        關(guān)鍵代碼如下:

        privatevoidVT_work(stringtext) //VS2010向仿真系統(tǒng)發(fā)送消息

        {

        axXEPlayer1.BroadcastMessageSingle(text);

        }

        2.1.5虛擬現(xiàn)實(shí)仿真系統(tǒng)接收VS2010消息

        為了實(shí)現(xiàn)對VS2010所發(fā)送消息的接收,虛擬現(xiàn)實(shí)仿真系統(tǒng)腳本中需加入多個“WaitMessage”BB模塊,該BB模塊當(dāng)接收到與設(shè)定內(nèi)容相同的消息時,便觸發(fā)“out”輸出端口。所以,通過對接收內(nèi)容的設(shè)置,及在該模塊后添加相應(yīng)腳本,可以實(shí)現(xiàn)不同的動作響應(yīng)。如圖3所示為該模塊的參數(shù)設(shè)置對話框,“Message”所接收內(nèi)容。

        圖3 “ Wait Message” BB參數(shù)對話框

        2.2VS2010與硬件交互

        單片機(jī)具有體積小、功耗低、控制能力強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),目前已滲透到生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。例如,儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制領(lǐng)域。單片機(jī)與各種硬件之間的交互控制技術(shù)已經(jīng)非常成熟,所以,只要實(shí)現(xiàn)VS2010與單片機(jī)之間的信息交互,再通過單片機(jī)與所需控制的外圍硬件連接,便可完成VS2010對其他外接硬件設(shè)備的間接控制。因此,本文只討論VS2010與單片機(jī)之間的信息交互實(shí)現(xiàn)方法。

        2.2.1VS2010向單片機(jī)發(fā)送消息

        當(dāng)VS2010接收到來自虛擬現(xiàn)實(shí)仿真系統(tǒng)發(fā)送的消息時,需要根據(jù)消息內(nèi)容做出相應(yīng)的判斷,并根據(jù)判斷向單片機(jī)發(fā)送消息。這一功能實(shí)現(xiàn)需要借助SerialPort串口控件的“Write”函數(shù),其函數(shù)聲明如下所示:

        publicvoidWrite(byte[]buffer,intoffset,intcount):該函數(shù)的“buffer”參數(shù)表示一個字節(jié)數(shù)組,“offset”參數(shù)表示從“buffer”數(shù)組中第幾個字節(jié)開始寫入串口,“count”參數(shù)表示需要寫入的字節(jié)數(shù)量。

        其關(guān)鍵代碼參看2.1.3小節(jié)。

        2.2.2VS2010接收單片機(jī)消息

        此功能模塊實(shí)現(xiàn)的是,VS2010作為單片機(jī)與虛擬現(xiàn)實(shí)仿真系統(tǒng)的中介平臺對單片機(jī)發(fā)送的消息進(jìn)行接收,這一功能實(shí)現(xiàn)需要借助SerialPort串口控件中的“DataReceived”事件,及“Read”函數(shù)(與“Write”函數(shù)類似,不再贅述)。需要注意的是,串口控件在工作時為保證能實(shí)時接收和發(fā)送消息,會在主線程外開辟一個新的線程。所以,當(dāng)在“DataReceived”函數(shù)事件中向仿真系統(tǒng)發(fā)送來自單片機(jī)的消息時,需要進(jìn)行委托,才能進(jìn)行跨線程參數(shù)傳遞,否則編譯會出現(xiàn)錯誤。

        關(guān)鍵代碼如下:

        privatevoidserialPort1_DataReceived(objectsender,System.IO.Ports.SerialDataReceivedEventArgse)

        {

        byte[]receive;

        s=null;

        intnum=serialPort1.BytesToRead; //確定單片機(jī)發(fā)送給VS2010數(shù)據(jù)的字節(jié)數(shù)

        if(num> 0)

        {

        receive=newbyte[num];

        serialPort1.Read(receive,0,num); //讀取單片機(jī)發(fā)送數(shù)據(jù)

        for(inti= 0;i

        {

        s+=receive[i].ToString("X2");

        }

        if(s== "77AA03BDEE22")//根據(jù)單片機(jī)發(fā)送數(shù)據(jù),向仿真系統(tǒng)進(jìn)行跨線程對應(yīng)參數(shù)傳遞

        {

        if(axXEPlayer1.InvokeRequired)

        {

        DelegateVT_workdelegatevt=newDelegateVT_work(VT_work);

        axXEPlayer1.Invoke(delegatevt,newobject[]

        { "zhuandong" });

        }

        }

        }

        }

        3應(yīng)用案例

        本文將Virtools自帶的實(shí)例CameraOrbit.cmo集成到VS2010生成的窗體中,發(fā)現(xiàn)半實(shí)物接口能夠很好地工作,單片機(jī)發(fā)送的數(shù)據(jù)都及時,準(zhǔn)確地到達(dá)了CameraOrbit.cmo。CameraOrbit.cmo中的石像實(shí)時的對單片機(jī)的操作做出了預(yù)定的反應(yīng)。使用單片機(jī)按鍵可以很好地控制石像進(jìn)行旋轉(zhuǎn),移動等動作,同樣,利用CameraOrbit.cmo文件中的“FireVirtoolsEvent”模塊也可以通過發(fā)送數(shù)字“8”、“9”控制單片機(jī)數(shù)碼管實(shí)時顯示“8”、“9”。系統(tǒng)整體運(yùn)行流暢,未出現(xiàn)可覺察延遲現(xiàn)象,在各種操作組合下,計算機(jī)COM口都能正確地接收發(fā)送指令,達(dá)到預(yù)期的效果。

        4結(jié)束語

        本文在VS2010平臺下,通過添加Virtools3DXEPlayer組件,調(diào)用SerialPort串口控件,利用其現(xiàn)有的串口打開,關(guān)閉,讀寫等函數(shù),完成了對Virtools自帶實(shí)例CameraOrbit.cmo半實(shí)物接口的設(shè)計與開發(fā),實(shí)現(xiàn)了基于VS2010的虛擬現(xiàn)實(shí)系統(tǒng)與半實(shí)物之間的實(shí)時通信。這一技術(shù)利用現(xiàn)有串口控件,避免了使用VirtoolsSDK開發(fā)相同功能BB模塊時,復(fù)雜及大量的C++編程,減少了系統(tǒng)開發(fā)設(shè)計中的工作量,實(shí)現(xiàn)了效率的提高。

        參考文獻(xiàn):

        [1]楊湛,陳德焜,嚴(yán)佳偉.基于Virtools的會場布置系統(tǒng)的開發(fā)[J].計算機(jī)應(yīng)用與軟件,2012,29(11):328-330.

        [2]張學(xué)鵬,陳國華,張愛軍.基于3D的虛擬運(yùn)動仿真及Virtools功能實(shí)現(xiàn)[J].北京化工大學(xué)學(xué)報,2009,36(4):93-95.

        [3]王洪泊,黃翔,曾廣平,等,智能三維虛擬試衣模特仿真系統(tǒng)設(shè)計[J].計算機(jī)應(yīng)研究,2009,26(4):1405-1408.

        [4]朱湘龍,于天朋,侯師.基于Virtools虛擬訓(xùn)練系統(tǒng)半實(shí)物接口設(shè)計[J].彈箭與制導(dǎo)學(xué)報,2012,32(6):167-169,173.

        [5]張躍文.某型號火炮發(fā)射制導(dǎo)系統(tǒng)半實(shí)物仿真平臺的研究[D].長沙,湖南大學(xué),2013.

        [6]覃伯明.Virtools引擎3D游戲程序設(shè)計[M].北京:清華大學(xué)出版社,2013:457-465.

        [7]傅招國.虛擬駕駛系統(tǒng)開發(fā)與應(yīng)用研究[D].上海:華東理工大學(xué),2012.

        [8]夏華錦.基于Virtools的叉車模擬培訓(xùn)系統(tǒng)設(shè)計與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2011.

        [9]徐望.北京市大型立交橋虛擬駕駛訓(xùn)練與路考系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].北京:北京工業(yè)大學(xué),2013.

        (責(zé)任編輯楊繼森)

        猜你喜歡
        虛擬現(xiàn)實(shí)
        風(fēng)口上的虛擬現(xiàn)實(shí)
        商周刊(2017年24期)2017-02-02 01:42:55
        虛擬現(xiàn)實(shí)技術(shù)向科幻小說借靈感
        海外星云(2016年7期)2016-12-01 04:18:00
        HTC斥資千萬美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
        IT時代周刊(2015年8期)2015-11-11 05:50:37
        淺談虛擬現(xiàn)實(shí)
        一区二区丝袜美腿视频| a级毛片高清免费视频就| 国产精品揄拍100视频| 中国女人a毛片免费全部播放| 国产伦奸在线播放免费| 国产精品久久久久久人妻无| 国产福利一区二区三区在线观看 | 免费av在线视频播放| 国产精品一区二区三区专区| 一边吃奶一边摸做爽视频| 国产美熟女乱又伦av果冻传媒| 亚洲美女主播一区二区| 亚洲av午夜一区二区三| 男人靠女人免费视频网站| 在线观看av手机网址| 日韩亚洲在线一区二区| 国产精品美女久久久网av| 无码任你躁久久久久久| 色婷婷久久免费网站| 日日高潮夜夜爽高清视频| 国产黄大片在线观看| 亚洲国产一区二区三区亚瑟| 绿帽人妻被插出白浆免费观看| 99精品国产一区二区三区| 中文乱码字慕人妻熟女人妻| 亚洲国产精品久久久久久网站| 日韩精品免费观看在线| 亚洲视一区二区三区四区| 一区二区三区人妻少妇| 中文字幕一区在线观看视频| 亚洲欧美日韩中文字幕网址| 亚洲桃色蜜桃av影院| 日本大肚子孕妇交xxx| 狠狠人妻久久久久久综合| 国产精品麻豆成人av| 女女同恋一区二区在线观看| 国语自产偷拍精品视频偷| 亚洲狼人社区av在线观看| 粉嫩人妻91精品视色在线看| 久久精品中文字幕大胸| 国产午夜无码视频免费网站|