新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 虛擬現實中立體顯示技術研究與實現

        虛擬現實中立體顯示技術研究與實現

        作者: 時間:2013-11-21 來源:網絡 收藏
        : Arial, 宋體; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255); ">

        本文引用地址:http://www.104case.com/article/227870.htm

          虛擬現實中立體顯示技術研究與實現

          使用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 雙緩存區的使用

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

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

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

          4.3 立體圖像的觀察

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

          5 結論

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 米林县| 昌邑市| 醴陵市| 营山县| 颍上县| 苍溪县| 通江县| 神农架林区| 衡阳县| 泗阳县| 蛟河市| 鲜城| 宣武区| 丰都县| 诸城市| 公主岭市| 新绛县| 梧州市| 花莲市| 宁海县| 吐鲁番市| 溧阳市| 水城县| 阳曲县| 金溪县| 贵州省| 曲水县| 巴彦淖尔市| 涞水县| 克山县| 长丰县| 宁海县| 亳州市| 北票市| 新民市| 定边县| 文昌市| 长宁区| 南皮县| 陆川县| 鸡东县|