<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 基于虛擬現(xiàn)實(shí)技術(shù)的自行車漫游系統(tǒng)的研究與實(shí)現(xiàn)

          基于虛擬現(xiàn)實(shí)技術(shù)的自行車漫游系統(tǒng)的研究與實(shí)現(xiàn)

          ——
          作者:作者:高 欣 宋荊洲 孫漢旭 時(shí)間:2007-01-26 來源:《電子查詢網(wǎng)》 收藏

          虛擬現(xiàn)實(shí)是計(jì)算機(jī)生成的、給人多種感官刺激的虛擬世界(環(huán)境),是一種高級(jí)的人機(jī)交互系統(tǒng)。理想的虛擬現(xiàn)實(shí)系統(tǒng)應(yīng)當(dāng)讓使用者在與虛擬環(huán)境產(chǎn)生交互行為時(shí)的感受與真實(shí)環(huán)境中的感受完全一樣。而現(xiàn)有的漫游系統(tǒng)大多采用二維交互界面,即采用鼠標(biāo)(二維輸入)和鍵盤(線性輸入)作為交互設(shè)備,遵循著“窗口-圖標(biāo)-菜單-指定”(windows-icon-menu-pointer,簡稱wimp)操作范式,交互方式不合諧,不自然。本文以健身作為人機(jī)交互的工具,設(shè)計(jì)了一種實(shí)時(shí)自行車漫游系統(tǒng)vr-bws。該系統(tǒng)以虛擬現(xiàn)實(shí)技術(shù)為基礎(chǔ),綜合運(yùn)用了傳感器技術(shù)、dsp控制技術(shù),采用了多線程、非阻塞的數(shù)據(jù)實(shí)時(shí)通信技術(shù),并通過立體顯示等多通道交互技術(shù)實(shí)現(xiàn)了人在虛擬環(huán)境中的漫游,使參與者在由計(jì)算機(jī)構(gòu)造的虛擬場(chǎng)景中獲得了如同在真實(shí)環(huán)境中騎車的體驗(yàn),是把虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于實(shí)際的一個(gè)有益嘗試,應(yīng)用前景十分廣闊。

          1 系統(tǒng)構(gòu)成及原理

          本文引用地址:http://www.ex-cimer.com/article/21383.htm

          當(dāng)參與者騎在自行車上運(yùn)動(dòng)時(shí),自行車的速度、方向、籠頭往上提的時(shí)間和力度以及騎車人自身重量等數(shù)據(jù),通過傳感器實(shí)時(shí)采集,然后經(jīng)由dsp控制電路傳送到上位機(jī)中,經(jīng)過分析處理,使其在屏幕的虛擬場(chǎng)景得到仿真和展示,在虛擬場(chǎng)景里達(dá)到表演的效果;同時(shí),當(dāng)屏幕中的場(chǎng)景變化時(shí),如上坡、下坡等,也可以通過控制軟件反饋到自行車的控制器上,產(chǎn)生阻尼/驅(qū)動(dòng)力,使騎車人有上述場(chǎng)景產(chǎn)生的上、下坡的感覺,從而獲得好的沉浸感。系統(tǒng)構(gòu)成如圖1所示。

          2 關(guān)鍵技術(shù)

          2.1 人機(jī)交互傳感器技術(shù)

          在本自行車漫游系統(tǒng)中,主要是借助各種傳感器實(shí)時(shí)地捕捉人體作用于自行車而產(chǎn)生的各種運(yùn)動(dòng)參數(shù),輸入到計(jì)算機(jī),作用于虛擬環(huán)境,實(shí)現(xiàn)人與虛擬環(huán)境的交互。

          vr-bws中使用的傳感器有光電編碼器、角位移傳感器和力傳感器。與車輪同步施轉(zhuǎn),并以增量式編碼方式記錄自行車車輪旋轉(zhuǎn)角度對(duì)應(yīng)的脈沖,然后將檢測(cè)到的脈沖數(shù)據(jù)換成車輪的旋轉(zhuǎn)圈數(shù),即自行車相對(duì)于某一參考點(diǎn)的瞬時(shí)位置;vr-bws中使用了角位移傳感器檢測(cè)車把轉(zhuǎn)角,控制場(chǎng)景中視點(diǎn)和視線的方向;在場(chǎng)景中設(shè)計(jì)有沒寬度的溝壑和天塹,根據(jù)騎車人的體重和速度來判斷能否沖過去,仿真飛越長城和黃河等,因此在自行車的車把和座位處安裝了用來測(cè)量提力和人體重量的力傳感器。

          2.2 dsp控制技術(shù)

          底層控制均由dsp系統(tǒng)完成。dsp處理系統(tǒng)的cpu采用ti公司生產(chǎn)的tms320lf2407a,使用該芯片是為了保證上位機(jī)和下位機(jī)之間傳感器數(shù)據(jù)和地形數(shù)據(jù)雙向傳遞的實(shí)時(shí)性,減少運(yùn)動(dòng)跟蹤和信息反饋環(huán)節(jié)的延時(shí)。

          2.2.1 傳感器數(shù)據(jù)的實(shí)時(shí)采集

          在dsp的事件管理器ev模塊中,有一個(gè)正交編碼脈沖電路qep。該電路使能后,可以在編碼和計(jì)數(shù)引腳上輸入由光電編碼器產(chǎn)生的正交編碼脈沖。正交編碼脈沖電路的基可由通用定時(shí)器提供,在程序中通用定時(shí)器設(shè)置成定向增計(jì)數(shù)模式,并以正交編碼脈沖電路作為時(shí)鐘源。由角位移傳感器和力傳感器采集到的角度數(shù)據(jù)和力數(shù)據(jù)是模擬信號(hào),通過dsp的模數(shù)轉(zhuǎn)換模塊(adc)將采集到的數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換后存入的結(jié)果寄存器中。

          2.2.2 多線程、非阻塞的實(shí)時(shí)通信技術(shù)

          tms320lf2407a的串行通信接口sci模塊可以通過rs232轉(zhuǎn)換芯片與pc機(jī)進(jìn)行異步通信。因?yàn)橛蓚鞲衅鲗?shí)時(shí)采集到的數(shù)據(jù)通過dsp的sci串口傳給上位機(jī)進(jìn)行處理,同時(shí)虛擬場(chǎng)景中的地形數(shù)據(jù)需要下傳來達(dá)到控制執(zhí)行機(jī)構(gòu)輸出力矩的目的,模擬人騎自行車上、下坡時(shí)的感覺,在程序中把它設(shè)置成全雙工方式。

          使用多路傳感器作為三維場(chǎng)景漫游的視點(diǎn)跟蹤傳感器時(shí),必須不斷地從串口采集各路傳感器的狀態(tài)數(shù)據(jù),以跟蹤觀察者對(duì)視點(diǎn)位置和視線方向的改變。通常有兩種方式:(1)在應(yīng)用程序中創(chuàng)建定時(shí)器;(2)采用多線程的應(yīng)用程序框架。第一種方法由于控制單元是以固定的頻率向主機(jī)傳輸狀態(tài)數(shù)據(jù),因此為定時(shí)器選擇適當(dāng)?shù)亩〞r(shí)周期是關(guān)鍵,否則很容易造成數(shù)據(jù)丟失。另外,由于應(yīng)用程序需要不斷地響應(yīng)定時(shí)器函數(shù),因此三維場(chǎng)景的繪制速度必然會(huì)受到影響。筆者采用了第二種方法,具體如下:

          在vc環(huán)境下開發(fā)了基于rs232協(xié)議的實(shí)時(shí)通信軟件,可以與虛擬環(huán)境軟件部分直接相連,并采用了多線程、非阻塞的實(shí)時(shí)漫游框架,在輔助線程中監(jiān)視串口,有數(shù)據(jù)到達(dá)時(shí)依靠事件驅(qū)動(dòng),讀入數(shù)據(jù)并向主線程報(bào)告;并且waitcommevent()、readfile()、writefile()都使用了非阻塞通信技術(shù),依靠重疊(overlapped)讀寫操作,讓串口讀寫操作在后臺(tái)運(yùn)行。每當(dāng)主線程收到由輔助線程傳過來的新一幀數(shù)據(jù)后,首先對(duì)它進(jìn)行判斷,只有在它相對(duì)于上一幀狀態(tài)數(shù)據(jù)的變化超過規(guī)定閾值的情況下,才能開始更新用戶視口內(nèi)的場(chǎng)景顯示,從而避免由于參與者的微小運(yùn)動(dòng)而引起的不必要的場(chǎng)景重繪。

          2.3 虛擬場(chǎng)景的構(gòu)造及其實(shí)時(shí)顯示技術(shù)

          目前,從技術(shù)角度上講,漫游的最大難點(diǎn)在于建模和實(shí)時(shí)繪制,需要在模型的精細(xì)程度和繪制速度方面取一個(gè)折衷,既要保證一定的繪制質(zhì)量,又不能造成用戶的運(yùn)動(dòng)不適感。在建模和實(shí)時(shí)顯示方面采用了各種技術(shù),以保證實(shí)時(shí)性。

          2.3.1 虛擬場(chǎng)景的構(gòu)建

          虛擬環(huán)境中的每個(gè)物體包含形狀和外觀兩個(gè)方面,用于存儲(chǔ)虛擬環(huán)境中幾何模型的模型文件應(yīng)該能夠提供這兩方面的信息。同時(shí)還要滿足虛擬建模技術(shù)的三個(gè)常用指標(biāo)——交互顯示能力、交互操縱能力、易于構(gòu)造的能力對(duì)虛擬對(duì)象模型的要求。open gl中很容易實(shí)現(xiàn)模型的各種變換、著色、光照、紋理、交互操作和動(dòng)畫,但是它只能提供基本幾何元素的造型函數(shù),使得復(fù)雜模型的建模相對(duì)困難。3dmax等三維圖形建模工具能方便建立各種復(fù)雜特體模型,但是很難進(jìn)行程序控制。因此,筆者在3dmax等工具中建立好復(fù)雜模型后,在open gl中實(shí)現(xiàn)對(duì)其方便控制和變換。

          本系統(tǒng)(vr-bws)軟件部分需要享用多種公開三維格式文件數(shù)據(jù),同時(shí)還要與數(shù)據(jù)庫相關(guān)聯(lián),vr-bws數(shù)據(jù)流圖如圖2示。

          2.3.2 三維模型的實(shí)時(shí)顯示

          在3dmax等建模工具中建立好復(fù)雜模型后,可以用多種文件格式存儲(chǔ)。考慮到open gl提供了最基本的由多邊形構(gòu)造三維模型的方法,故以三角形網(wǎng)絡(luò)方式存儲(chǔ)。vr-bws的軟件部分是基于面向?qū)ο蠹夹g(shù)。三維圖形類、渲染場(chǎng)景必不可少的屬性類如:顏色類、紋理類、材質(zhì)類、光源光等均采用面對(duì)象方法對(duì)open gl函數(shù)進(jìn)行封裝(如圖3所示),軟件的各個(gè)組成模塊使用ocx控件和com作為標(biāo)準(zhǔn)接口。這樣既可以大大節(jié)省開發(fā)時(shí)間,又能提高渲染速度。

          虛擬現(xiàn)實(shí)最重要的特性是人可以在隨意變化的交互控制下感受到場(chǎng)景的動(dòng)態(tài)特性。而提高顯示性能的技術(shù)包括硬件和軟件兩個(gè)方面。在硬件方面,采用了高速的dsp芯片進(jìn)行數(shù)據(jù)的實(shí)時(shí)采集和傳輸;軟件方面建立了多線程、非阻塞的漫游框架,并采用了以下方法來提高場(chǎng)景畫面的刷新速度。

          (1)雙緩存機(jī)制。也為顯示器建立兩個(gè)視頻緩沖區(qū),一個(gè)用于后臺(tái)刷新屏幕,一個(gè)用于前臺(tái)繪制。當(dāng)需要更新時(shí),切換這兩個(gè)緩沖區(qū),將原來作刷新用的緩部區(qū)用于繪制新的幀,同時(shí)將原來作繪制用的緩沖區(qū)用于刷新顯示。場(chǎng)景越復(fù)雜,采用雙緩存機(jī)制時(shí)間優(yōu)越性就越能得到體現(xiàn)。而且采用雙緩沖機(jī)制可以解決畫面演示過程中嚴(yán)重的“閃屏”現(xiàn)象。

          (2)lod(level of detail)細(xì)節(jié)層次技術(shù)。根據(jù)兩種不同的判斷來選取細(xì)節(jié)層次不同的模型:一是距離遠(yuǎn)近,離視點(diǎn)近的物體采用較高精度繪制,離視點(diǎn)遠(yuǎn)的物體則用較低精度繪制;二是通過自行車的速度設(shè)定不同的閾值,根據(jù)閾值選取不同精度的模型,然后通過平滑過渡技術(shù)來顯示。

          (3)實(shí)例技術(shù)。場(chǎng)景中經(jīng)常需要多個(gè)相同的虛擬物體,如完全相同的樹木等。對(duì)于這類需重復(fù)出現(xiàn)的特體,利用open gl庫中的顯示列表功能,將其分別定義為單獨(dú)的顯示列表,預(yù)先生成三維實(shí)體;再通過幾何變換得到其它位置的特體。在圖形顯示時(shí),只需調(diào)用所需的顯示列表即可顯示相應(yīng)的三維實(shí)體,大大節(jié)約內(nèi)存從而提高圖形顯示速度。

          (4)預(yù)處理技術(shù)。對(duì)一些復(fù)雜的場(chǎng)景模型,如路兩旁的高層建筑等,在預(yù)處理階段,只計(jì)算出顯示在觀察者視野范圍內(nèi)的場(chǎng)景并存放起來,在動(dòng)態(tài)顯示時(shí)就無需對(duì)不可見的物體及落在所定義的觀察空間之外的物體進(jìn)行繪制,從而大大減少在動(dòng)態(tài)顯示時(shí)對(duì)可見性的測(cè)試和計(jì)算。

          (5)用二維紋理代替三維模型。對(duì)漫游場(chǎng)景中非常復(fù)雜的細(xì)節(jié)上的物體如山坡上的植被等,若用三維模型表示,將需要大量的多邊形,但實(shí)際動(dòng)態(tài)顯示時(shí),沒必要把它們表現(xiàn)得十分精確,所以使用二維紋理代替三維模型。其方法是將復(fù)雜特體的圖像粘貼在一個(gè)平面上并放置在場(chǎng)景中,在三維復(fù)雜場(chǎng)景的實(shí)時(shí)顯示時(shí),令該平面的法向始終指向觀察點(diǎn)。這樣,就形成了這些復(fù)雜物體隨著觀察方向的改變而轉(zhuǎn)動(dòng),提高了場(chǎng)景顯示的實(shí)時(shí)性。

          3 立體顯示技術(shù)

          三維立體顯示技術(shù)虛擬現(xiàn)實(shí)的關(guān)鍵技術(shù)之一。要實(shí)現(xiàn)三維景觀的立體顯示,首先必須得到符合三維特征的立體圖像對(duì)。左右片對(duì)的生成可以按照以往傳統(tǒng)的單目三維圖形生成方法分別生成,即先計(jì)算左右眼的視點(diǎn)向量,并分別進(jìn)行視點(diǎn)變換及首色處理,可取得左右眼的圖像。但由于左右片對(duì)圖像的相關(guān)性很強(qiáng),物體在左右圖上通常只有一個(gè)視差d,而其色彩與亮度值相差很小,可以利用這一點(diǎn)實(shí)現(xiàn)立體片對(duì)生成的快速算法。

          假設(shè)場(chǎng)景中任意點(diǎn)f(x,y,z)在左右片對(duì)中分別成像為p1(xl,yl)、pr(xr,yr),則可得:

          其中l(wèi)代表左右焦點(diǎn)之間的間距,f代表焦距,d代表兩眼的視差。首先分別計(jì)算得到左右眼的視點(diǎn)向量及其變換矩陣,而后在生成右眼圖的同時(shí),利用式(2)計(jì)算左眼圖。在這一過程中,對(duì)離視點(diǎn)近的特體不采用式(2)計(jì)算,而用分別計(jì)算方法生成。這樣可以使生成的左右片對(duì)既不失真實(shí)性,又具有快速性。

          采用幅分割法進(jìn)行立體顯示。當(dāng)顯示器進(jìn)行逐行掃描時(shí),將左右圖像按幅序交替顯示,在計(jì)算機(jī)屏幕前用液晶方式實(shí)現(xiàn)圖像分像,通過使用液晶眼鏡并利用人眼的視覺延遲就可以獲得立體視覺。立體監(jiān)視器顯示圖像的刷新頻率的高低直接關(guān)系到圖像的穩(wěn)定性,即所顯示圖像是否會(huì)出現(xiàn)閃爍現(xiàn)象。采用刷新頻率為120hz的監(jiān)視器,使左、右眼視圖的刷新頻率保持60hz。在本文中,水平方向采用不同視線參數(shù)的兩幅透視圖像的實(shí)時(shí)顯示是通過軟件控制實(shí)現(xiàn)的。

          4 試驗(yàn)結(jié)果及結(jié)論

          本文實(shí)驗(yàn)硬件配置為pentium iiii 2.4ghz cpu,內(nèi)存2gb,硬盤80gb,立體顯示卡為quadro4 750xgl128mb,健身車選用豪華避震式大飛輪,采用刷新頻率為120hz的優(yōu)派21寸純平顯示器,配備裝有紅外線發(fā)射器的有源立體眼鏡。操作系統(tǒng)為windows 2000。立體圖像生成軟件和立體顯示接口軟件用visual c++ 6.0編寫,三維圖像標(biāo)準(zhǔn)采用open gl,三維建模工具采用3dmax和arcinfo8.0.2。根據(jù)本文所論述的原理和方法。成功設(shè)計(jì)并實(shí)現(xiàn)了基于微機(jī)平臺(tái)的自行車三維景觀立體漫游系統(tǒng)。實(shí)驗(yàn)表明,本系統(tǒng)能較好地模擬人在實(shí)際環(huán)境中騎車的感受。上述設(shè)計(jì)的原理和方法可以用于跑步機(jī)、劃船機(jī)等許多方面。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();