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

  1 引言

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

  2 立體視覺概述

 

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

 

  

 

  3 雙中心投影算法

 

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

 

  

 

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

 

  

 

  由此可見,當zp>d時,0

 

  4 OpenGL實現立體顯示

 

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

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

  4.1 立體圖像對的繪制

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

 

  

 

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

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

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

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

  ViewWidth2=ViewHeight2*ratio;//計算視野的寬度

  計算右眼的視野范圍;

  left=-ViewWidth2-0.5*e*0.3;

  right=ViewWidth2-0.5*e*0.3;

  投影并繪制模型:

  glFruSTum(left,right,bottom,top,Near,Far);

  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();//計算立體圖像對并繪制

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

 

  

 

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

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

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

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

  4.3 立體圖像的觀察

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

 

  5 結論

 

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。