国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenGL的三維繪圖系統(tǒng)設(shè)計

2016-05-14 05:01許楊陳婧
關(guān)鍵詞:渲染

許楊 陳婧

摘要:利用OpenGL進行可視化交互式三維圖像繪制。系統(tǒng)以Microsoft Visual Studio作為開發(fā)平臺,搭建系統(tǒng)框架來進行交互。系統(tǒng)包括了基本操作模塊,繪制模塊,變換模塊,光照模塊,顏色模塊。實現(xiàn)的主要功能有模型的輸入輸出,基本圖元的繪制,視窗變化。模型光照渲染,RGBA模型的顏色表述。對于OpenGL的反走樣,明暗,等渲染模式進行設(shè)計。

關(guān)鍵詞:三維對象 OpenGL 渲染

中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2016)05-0000-00

三維繪圖系統(tǒng)是計算機輔助設(shè)計的重要基礎(chǔ),它最真實的模擬了人和物體的交互,無論從工業(yè)設(shè)計到如今的影視制作,它對提高設(shè)計質(zhì)量,加快設(shè)計速度,節(jié)省人力與時間,提高設(shè)計工作的自動化程度,促進文化產(chǎn)業(yè)的發(fā)展,具有十分重要的意義[1,2]。其次,它還可以提高技術(shù)創(chuàng)新能力,加快產(chǎn)品開發(fā)速度,促進自身快速發(fā)展,是工業(yè)設(shè)計和文化產(chǎn)業(yè)未來發(fā)展的重要工具[3,4]。

OpenGL是目前業(yè)界使用最為廣泛的2D和3D圖形接口標準,被應(yīng)用于成千上萬的各式各樣的計算機程序中。對于OpenGL的研究雖然經(jīng)歷過低谷,但是從未停止,近年來OpenGL技術(shù)的完善和改良讓OpenGL在三維繪圖方面興起。因為其設(shè)計嚴格遵循了計算機圖形學(xué)的原理,在光學(xué)和視覺上都符合物理現(xiàn)實的特性,所以是目前設(shè)計仿真軟件的理想工具[5]。近年來的對于OpenGL的研究也主要集中在仿真技術(shù)上,而三維繪圖技術(shù)又是仿真技術(shù)的核心,OpenGL又是三維繪圖系統(tǒng)的核心,證明OpenGL在當下的各個圖形軟件研究中具有舉足輕重的地位[6]。

本文主要分析三維繪圖系統(tǒng)的運行流程,系統(tǒng)的工作流程、原理和實現(xiàn)過程,以及如何實現(xiàn)基于OpenGL的三維繪圖系統(tǒng)。包括圖形繪制,變換操作、顏色模式、光照渲染、效果增強、位圖操作和交互繪圖等功能。

1 OpenGL的工作方式

一個完整的OpenGL的體系應(yīng)該有下圖的結(jié)構(gòu)。處于最低層的是圖形硬件,然后是操作系統(tǒng),然后是窗口系統(tǒng),然后才是OpenGL,最后是軟件層。OpenGL采用流水線的工作模式,不同的操作被定義為按照特定的順序來執(zhí)行。命令被放在一個命令緩沖區(qū)中,這樣命令緩沖區(qū)中將會包含了大量的命令、定點數(shù)據(jù)以及紋理數(shù)據(jù)。緩沖區(qū)中的命令和數(shù)據(jù)將在被清空的時候傳遞給流水線的下一個階段。雖然OpenGL在每次版本更新的時候都會添加一些新的功能,但是它的基本構(gòu)架一直都沒有改變過。對于每一組指定的輸入,每一個OpenGL實現(xiàn)都必須具有相同的功能和一個與OpenGL規(guī)范保持一直的結(jié)果。這一操作以及它們的發(fā)生順序都是有OpenGL規(guī)范定義的。但是需要指出的是OpenGL的實現(xiàn)并不需要一沉不變的順序,它是可以任意修改操作的順序的,渲染的結(jié)果與OpenGL規(guī)范相一致。

2系統(tǒng)設(shè)計方案

2.1繪制模型

OpenGL的所有繪制都是基于點的坐標實現(xiàn)的,由函數(shù)glVertext指定點進行繪制,也可以調(diào)用OpenGL已經(jīng)設(shè)置好的函數(shù),例如通過void glRect就能快速繪制一個矩形。通過glBegin和glEnd基本可以繪制所有的圖元。在glBegin和glEnd中最重要的便是點的坐標,除了設(shè)定點坐標以外還可以為每個頂點指定特殊屬性,例如顏色、法線向量、紋理坐標、或上述任意組合。以畫圓的函數(shù)為例,把圓看成無數(shù)線段組成的多邊形,分段為100,通過sin和cos畫出一個近似圓。然而這樣的程序?qū)τ阡秩镜男什桓?,因為每一個點都要通過計算,在重復(fù)繪制中很占用資源。一般采取的做法是先計算出點,把它們保存到一個數(shù)組里,然后通過創(chuàng)建顯示列表或者頂點數(shù)組進行渲染。通過以上簡單繪圖的基礎(chǔ),理論上任何圖形都可以通過OpenGL函數(shù)和數(shù)學(xué)公式進行繪制。

2.2模型渲染

首先給控件添加成員變量,接著要給控件添加事件處理函數(shù),在控件上面右擊選擇處理程序向?qū)?,把消息類型設(shè)置為點擊事件。完成了整一個消息映射后,接下來將命令在兩個視圖間傳遞。獲取RenderView視圖類的指針,InvalidateRect使繪圖區(qū)域無效,重新發(fā)送WM_PAINT消息進行重繪。

繪制過程會用到RGBA模式設(shè)置初始顏色,所以在顏色模塊主要采用交互式的顏色索引模式。對于OpenGL的顏色設(shè)置來說,本質(zhì)還是RGBA的顏色模式。鏡面光和漫反射光設(shè)置同環(huán)境光。但是如果要開啟鏡面光則必須添加材質(zhì),所以設(shè)置渲染描述表之后添加材質(zhì)屬性,材質(zhì)屬性的添加和光照屬性的添加類似。

功能分析中對OpenGL的效果增強器進行了分析,OpenGL的效果增強器有許多,但是它們的工作原理都比較相像,于是在系統(tǒng)中就主要實現(xiàn)反走樣以及明暗效果。在OpenGL中提供了反走樣算法來解決這個問題,在RGBA模式下,OpenGL將像素的覆蓋比例和alpha值相乘,算出來的值作為新的alpha值與幀緩沖區(qū)所對應(yīng)的像素進行混合。

在明暗處理方面,計算機圖形學(xué)中有兩個算法,分別是Gourand和Phong。明暗算法的數(shù)學(xué)思想就是計算各個多邊形公共點的光照值,然后用線性插值的方法對內(nèi)部的面進行明暗度的設(shè)置。Gourand算法處理起來比較簡單,對于計算量比較小,一般情況下是可以得到比較滿意的光滑表面的,但是還是避免不了馬赫帶效應(yīng)。而Phone算法又被稱為法線矢量明暗算法。其數(shù)學(xué)原理是將多邊形的法線矢量進行線性插值計算來得到各點的法線再來計算其明暗值,它的計算量比較大,但是效果比較好。OpenGL自帶的明暗處理采用的Gourand算法,或者也可以自己定義Phone。

參考文獻

[1]崔璟.基于OpenGL的三維視景的建立[D].北京化工大學(xué),2008.

[2]徐俊波,李曉紅.基于MFC的OpenGL三維圖形類的創(chuàng)建[J].科學(xué)技術(shù)與工程,2005, 5(17):1309-1312.

[3]吳愛蘭,樓建列.基于OpenGL的三維圖形的繪制[J].中國科技信息, 2007(9):122-122.

[4]祁春,毛小玲.基于OpenGL的多模式平顯圖形仿真軟件的設(shè)計[J].電子設(shè)計工程,2014(18):42-44.

[5]王瑞永,喬江,袁清.OpenGL與Windows坐標相互轉(zhuǎn)換的實現(xiàn)[J].地理空間信息,2011(4):78-80.

[6]Reina G, Muller T, Ertl T. Incorporating Modern OpenGL into Computer Graphics Education[J].IEEE Computer Graphics & Applications,2014,34(4):16-21.

猜你喜歡
渲染
DirextX庫渲染下的游戲引擎
論音樂在影視當中的重要性
論電影藝術(shù)的渲染方式
電影音樂對主題的體現(xiàn)
論電影藝術(shù)的渲染
淺談三維軟件在二維動畫渲染中的應(yīng)用
水墨寫意 破曉啼鶯
試論電影“渲染”的方式及功用
淺談?wù)Z文教學(xué)中的導(dǎo)語設(shè)計