《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 虛擬現(xiàn)實(shí)中立體顯示技術(shù)研究與實(shí)現(xiàn)
虛擬現(xiàn)實(shí)中立體顯示技術(shù)研究與實(shí)現(xiàn)
摘要: 虛擬現(xiàn)實(shí)(VirtualReality)是一種新興的、極有應(yīng)用前景的計(jì)算機(jī)綜合性技術(shù),。采用以計(jì)算機(jī)技術(shù)為核心的現(xiàn)代高科技生成逼真的視覺,、聽覺,、觸覺一體化的特定范圍的虛擬環(huán)境。立體顯示是虛擬現(xiàn)實(shí)的關(guān)鍵技術(shù)之一,。
Abstract:
Key words :

  1 引言

  虛擬現(xiàn)實(shí)(Virtual Reality)是一種新興的,、極有應(yīng)用前景的計(jì)算機(jī)綜合性技術(shù)。采用以計(jì)算機(jī)技術(shù)為核心的現(xiàn)代高科技生成逼真的視覺,、聽覺,、觸覺一體化的特定范圍的虛擬環(huán)境。立體顯示是虛擬現(xiàn)實(shí)的關(guān)鍵技術(shù)之一,,它使人在虛擬世界里具有更強(qiáng)的沉浸感,,立體顯示的引入可以使各種模擬器的仿真更加逼真。研究立體成像技術(shù)并利用現(xiàn)有的微機(jī)平臺(tái),,結(jié)合相應(yīng)的軟硬件系統(tǒng)在平面顯示器上顯示立體視景,。

  2 立體視覺概述

 

  據(jù)研究,人的大腦能從以下4個(gè)方面獲得深度(距離)線索:靜態(tài)圖像中的深度線索,、由運(yùn)動(dòng)造成的深度線索,、生理上的深度線索以及雙目視差線索,這里僅研究雙目視差線索,。當(dāng)用雙眼看同一景物時(shí),,由于左、右眼在空間所處位置不同,,兩只眼晴的視角會(huì)有所不同,,看到的圖像也不一樣,,會(huì)有視差,如圖1a所示,。具有視差的雙眼圖像經(jīng)大腦融合,,可產(chǎn)生含有立體深度信息的立體圖像。一般將雙目所見的一對(duì)具有視差的二維圖像稱為立體圖像對(duì),。若模仿產(chǎn)生這一對(duì)平面圖像,,并采取技術(shù)措施,使左眼只能看見右邊的圖像,,而右眼只能看見左邊的圖像,,則人類的視覺系統(tǒng)就會(huì)融合該二維空間中一對(duì)稍有差別的圖像,從而生成具有立體感受的圖像,。根據(jù)投影面,、人眼以及觀察對(duì)象之間的相對(duì)位置,可有正視差(圖1b),、負(fù)視差(圖1c)和零視差(圖1d)之分,。

 

  

 

  3 雙中心投影算法

 

  由以上研究可知,立體圖像對(duì)的產(chǎn)生是由于左,、右眼觀察到的物體透視結(jié)果不同,。因此在立體顯示的視景仿真中設(shè)置兩只虛擬的眼睛,一個(gè)獲取左眼的圖像,,另一個(gè)獲取右眼的圖像,,分別將左右眼的圖像傳送給相應(yīng)的眼睛。因此,。在立體顯示中,,需要采用包含兩個(gè)視點(diǎn)的透視投影方法一雙中心投影算法。圖2為雙中心投影,。

 

  

 

  左視點(diǎn)Leye和右視點(diǎn)Reye均位于X軸上,,兩視點(diǎn)間的距離為e,兩視點(diǎn)連線中心為坐標(biāo)原點(diǎn),,則左視點(diǎn)的坐標(biāo)為(-e/2,,0,0),,右視點(diǎn)的坐標(biāo)為(+e/2,,0,0),。投影平面平行于XY平面,,到左右視點(diǎn)的距離均為d。三維空間中一點(diǎn)P(xp,yp,,zp)在左視點(diǎn)投影中的坐標(biāo)為(xl,,yl,zl),,在右視點(diǎn)投影中的坐標(biāo)為(xr,,yr,zr),,則zl=zr=d,。點(diǎn)P(xp,yp,,zp)和Reye投影線的參數(shù)方程為:

 

  

 

  由此可見,當(dāng)zp>d時(shí),,0

 

  4 OpenGL實(shí)現(xiàn)立體顯示

 

  開放性圖形庫OpenGL(Open Graphic Library)是一個(gè)三維計(jì)算機(jī)圖形和模型庫,。它獨(dú)立于操作系統(tǒng)和硬件環(huán)境,適用于從個(gè)人計(jì)算機(jī)到工作站的廣泛計(jì)算機(jī)環(huán)境,。

  OpenGL在三維真實(shí)感圖形制作中具有優(yōu)秀的性能,,用該圖形庫不僅能方便地制作出高質(zhì)量的靜止彩色圖像,還能創(chuàng)造出高質(zhì)量的動(dòng)畫效果,。借助Windows編程環(huán)境還可控制模型的人機(jī)交互,。由于其開放性和高度的可重用性,目前已成為業(yè)界標(biāo)準(zhǔn),。

  4.1 立體圖像對(duì)的繪制

  按上述投影算法計(jì)算出立體圖像對(duì)后,,應(yīng)用OpenGL繪制立體圖像對(duì),分別用紅,、綠兩種顏色繪制右眼和左眼的圖像,。以一個(gè)變長為10 cm,中心點(diǎn)在原點(diǎn)的正方體為例,,設(shè)兩視點(diǎn)間距離e為5 cm,,投影面距高觀察者d為40 cm,考察正方體的一個(gè)頂點(diǎn)(5,,5,,5),由上述投影算法可得:xr=32 cm,,xl=48 cm,,yl=yr=4040 cm,zr=zl=d=40 cm對(duì)8個(gè)頂點(diǎn)分別計(jì)算后,,連接相應(yīng)的立體透視投影點(diǎn),,即可得該立方體的立體圖像對(duì)。用數(shù)組vertex[8][3]存儲(chǔ)頂點(diǎn),數(shù)組translatevertexr[8][3]存儲(chǔ)右眼投影計(jì)算后坐標(biāo),,數(shù)組translatevertexl[8][3]存儲(chǔ)左眼投影計(jì)算后的坐標(biāo),,對(duì)相應(yīng)的點(diǎn)進(jìn)行投影計(jì)算:

 

  

 

  使用OpenGL的透視投影變換,需設(shè)置前后裁剪面到觀察者的距離及前裁剪面的寬度和高度等,。前裁剪面的寬度用該寬度與高度的比值表示,,取顯示窗口的寬度和高度之比。

  double Near.Far,;//前后裁剪面距觀察者的距離

  int ratio=width/height,;//顯示屏的寬和高之比

  ViewHeight2=Near*tan(radians);//計(jì)算視野的高度

  ViewWidth2=ViewHeight2*ratio,;//計(jì)算視野的寬度

  計(jì)算右眼的視野范圍,;

  left=-ViewWidth2-0.5*e*0.3;

  right=ViewWidth2-0.5*e*0.3,;

  投影并繪制模型:

  glFruSTum(left,,right,bottom,,top,,Near,F(xiàn)ar),;

  glDrawBuffer(GL_BACK_RIGHT),;//使用右后緩存

  gluLookAt(0+e/2。0,,5,。0+d/2,0,,-5,,0,1,,0),;

  //確定右眼位置

  glColor3f(1.0,,0.0,,0.0);//用紅色繪制

  draw(),;//計(jì)算立體圖像對(duì)并繪制

  同理繪制左眼的圖像,,如圖3所示。

 

  

 

  4.2 雙緩存區(qū)的使用

  OpenGL提供雙緩存技術(shù),,支持兩個(gè)完整顏色緩存的硬件或軟件,。繪制一個(gè)緩存時(shí),顯示另一個(gè)緩存中的內(nèi)容。每繪制好一幀便交換緩存,;這樣剛才被顯示的緩存被用來繪制,,而用來繪制的緩存被顯示。這樣,,當(dāng)顯示器刷新時(shí),,緩存區(qū)進(jìn)行交換,畫面就不會(huì)閃爍,。

  OpenGL也支持立體觀察,,實(shí)現(xiàn)左顏色緩存和右顏色緩存,它們分別用于左立體圖像和右立體圖像,??稍诔跏蓟瘯r(shí),分別使用參數(shù)PFD_DOUBLEBUFFER和PFD_STERE-O_DONTCARE支持立體顯示和雙緩存,。使用雙緩存時(shí),,通常只繪制后緩存,使用函數(shù)glDrawBuffer()還可指定將立體圖像渲染到具體的某個(gè)緩存,。

  例如,繪制右眼圖像時(shí)使用右后緩存區(qū)glDrawBuffer(GL_BACK_RIGHT),,繪制左眼時(shí)使用左后緩沖區(qū)glDraw-Buffer(GL_BACK_LEFT),。

  4.3 立體圖像的觀察

  使用簡單的濾光鏡就可觀察有立體感的圖像。其原理是:由于濾光片(實(shí)驗(yàn)中使用紅,、綠濾光片)吸收其他光線,,只讓相同顏色的光線通過,因此左,、右眼各透過不同顏色的光,。當(dāng)使用濾光鏡觀察計(jì)算機(jī)屏幕上的立體圖像對(duì)時(shí),就會(huì)看到具有深度感受的圖像,。在實(shí)驗(yàn)中發(fā)現(xiàn),,刷新頻率對(duì)圖像立體效果的形成具有重要作用。刷新頻率過低,,由于人眼所維持的圖像已消失,,不能得到三維立體感受;刷新頻率過高就會(huì)出現(xiàn)一只眼睛可看到兩幅圖像的現(xiàn)象,。將顯示的刷新頻率設(shè)置合適,,在程序中設(shè)置圖像刷新頻率設(shè)置為50 Hz,利用紅綠濾光鏡觀察模型的立體成像,,得到較明顯的立體視覺效果,。

 

  5 結(jié)論

 

  根據(jù)立體顯示原理,采用雙目視差算法對(duì)物體進(jìn)行立體顯示,利用OpenGL生成立體圖像對(duì),,并借助紅綠濾光眼鏡觀察,,得到了較好的立體視覺效果。立體顯示技術(shù)的引入增強(qiáng)了人在虛擬環(huán)境中的沉浸感,,可廣泛應(yīng)用于建筑物和視景漫游,、虛擬戰(zhàn)爭演練場(chǎng)和各種模擬訓(xùn)練等多種場(chǎng)合。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。