陳超
摘 要:隨著計算機軟、硬件突飛猛進的發(fā)展,計算機圖形學(xué)在各個行業(yè)的應(yīng)用也得到迅速普及和深入,目前,計算機圖形學(xué)己進入三維時代。本文以三維圖形為研究對象,對用OpenGL創(chuàng)建三維圖形進行研究。
關(guān)鍵詞:計算機圖形學(xué);三維投影;OpenGL
1、引言
科學(xué)計算可視化、計算機動畫和虛擬現(xiàn)實已經(jīng)成為近年來計算機圖形學(xué)的三大熱門話題,而這三大熱門話題的技術(shù)核心均為三維圖形。
三維圖形廣泛地應(yīng)用于科學(xué)計算的可視化(運動仿真、有限元分析、流體計算、醫(yī)學(xué)成像、分子化學(xué)、汽車等曲面造型、地理信息、石油勘探和氣候模擬)、游戲開發(fā)、虛擬現(xiàn)實技術(shù)、影視廣告中及CAI等領(lǐng)域。
2、視平面和投影中心的一般化過程
OpenGL中的三維投影坐標(biāo)系
在三維空間中的觀察過程根本就比在二維空間中的觀察過程復(fù)雜得多。三維觀察的額外的復(fù)雜性一部分是由被添加的維引起的,還有一部分是由顯示設(shè)備僅是二維的這一事實引起的。三維物體和二維顯示之間的不匹配問題是通過引入投影來解決的,而投影就是把三維物體變換到二維的投影平面上去。
OpenGL物體坐標(biāo)系采用左手坐標(biāo)系。投影三維物體的二維平面稱為投影平面,視平面坐標(biāo)系附在投影平面上。物體坐標(biāo)系描述物體的模型。取景參考點為物體建模參考點,一般將物體坐標(biāo)系原點取為建模參考點。視平面坐標(biāo)系原點為取景參考點在投影平面上的投影點,即平行于投影平面法線且通過取景參考點的直線與投影平面的交點。確定視平面坐標(biāo)系向上方向的向量稱為取景上方向量。取景上方向量確定視平面坐標(biāo)系繞取景參考點與視平面坐標(biāo)系原點連線旋轉(zhuǎn)的角度。觀察點或視點是觀察者眼睛所在的位置,如圖1所示:
在三維觀察過程中,需要在世界坐標(biāo)系中設(shè)定一個視見體(view volume),在投影平面上給出一個投影,并在觀察表面上給定一個視口。三維世界坐標(biāo)系中的物體被三維視見體裁減,之后進行投影。視見體落在投影平面上的投影的內(nèi)容(成為窗口)再被變換(映射)到視口進行顯示。
3、透視投影變換及視區(qū)變換
繪圖流程中最終的三維空間稱為三維平面空間。在這個空間中,進行視見體的裁剪,使用三維屏幕空間是因為它簡化了裁剪和隱藏面消除的操作。另外,這個空間中的物體最終都要經(jīng)過一個向二維觀察平面坐標(biāo)變換的過程。嚴(yán)格地將,屏幕坐標(biāo)系是從視平面坐標(biāo)系通過基本的變換導(dǎo)出的。圖2顯示了三維觀察過程的概念模型:
一般來說,投影是把n維空間坐標(biāo)系中的點變換成小于n維的坐標(biāo)系中的點。一個三維物體的投影是用從投影中西發(fā)射出來的許多直的投影射線來定義的,這些投影線通過物體的每一點和投影平面相交,形成該物體的投影。透視投影的視覺效果類似于照相系統(tǒng)和人的視覺系統(tǒng),稱為透視縮小效應(yīng)(perspective foreshortening):一個物體的透視投影的大小與物體到投影中心的距離成反比。因此,透視投影傾向于看起來真實。
4、OpenGL的透視投影變換
OpenGL透視投影利用去角錐的截頭體作為取景體積。取景體積決定物體投影的可視部分,而且滿足透視投影的遠大近小規(guī)則。OpenGL用gluPerspective命令指定的透視取景體積如圖3所示:
視點放置在角錐的頂點。其參數(shù)fovy為y—z平面上取景域的角度,aspect為截頭體x(寬度)與y(高度)的比值,zNear與zFar分別為視點與前后剪切面的距離,二者總為正值。進行透視投影變換前,必須用glMatrixMode將參數(shù)設(shè)置為投影模式GL_PROJECT,用glLoadIdentity置恒等矩陣命令清除過去矩陣的影響,同時用gluPerspective命令指定取景體積進行透視投影。
5、結(jié)束語
OpenGL三維圖形標(biāo)準(zhǔn)這一開放式圖形庫使得在微機上實現(xiàn)三維真實感圖形的生成與顯示成為可能。開發(fā)者可以有效地利用OpenGL提供的豐富的三維變換、光照、紋理、動畫及特殊效果函數(shù)等來建立三維模型和進行三維實時交互,從而開發(fā)出效果理想的視景系統(tǒng),并進一步為虛擬現(xiàn)實的研究與開發(fā)打下堅實的基礎(chǔ)。
參考文獻:
[1] Richard S.Wright,Jr. Benjamin Lipchak.OpenGL 超級寶典(徐波 譯). 人民郵電出版社
[2] OpenGL體系結(jié)構(gòu)審核委員會. OpenGL編程指南(第四版). 人民郵電出版社
[3] Alan Watt.3D計算機圖形學(xué)(包宏 譯). 機械工業(yè)出版社
[4] James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes.計算機圖形學(xué)原理及實踐(唐澤圣,懂士海,李華,吳恩華,汪國平等譯). 機械工業(yè)出版社. 2004.3
[5] Donald Hearn,M.Pauline Baker.計算機圖形學(xué). 北京:電子工業(yè)出版社.
[6] 周培德. 《計算幾何——算法分析與設(shè)計》 北京:清華大學(xué)出版社
[7] 周新倫,柳健,劉華志. 《數(shù)字圖像處理》 北京:國防工業(yè)出版社
[8] Poter,T.,and T.Duff 《Compositing Digital Images》