三維圖像復(fù)習(xí)題目_第1頁
三維圖像復(fù)習(xí)題目_第2頁
三維圖像復(fù)習(xí)題目_第3頁
三維圖像復(fù)習(xí)題目_第4頁
三維圖像復(fù)習(xí)題目_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1、 OpenGL中能渲染的基本元素是什么?(曲面) OPENGL基本元素:GL_POINTS GL_LINES GL_POLYGON GL_LINE_STRIPGL_LINE_LOOP GL_TRANGLES GL_TRANGLE_STRIP GL_TRANGLE_FAN GL_QUADS GL_QUAD_STRIPGLU基本元素:NUBRS曲線曲面,二次曲面等2、 常見的渲染引擎有哪些?舉例說明這些實時渲染引擎的主要功能。常見的渲染引擎有:Direct3D(微軟),OpenGL,Delta3dOpenGL提供了大量的實用基本操作函數(shù)。如幾何建模、變換、渲染、光照和材質(zhì)、反走樣、混合、霧化、

2、位圖和圖像、紋理映射、交互和動畫等。OpenGL具有的主要優(yōu)點如下:平臺無關(guān)性。OpenGL是一個硬件與圖形的軟件接口,實際上就是一個三維圖形和模型庫,可以在任意平臺和操作系統(tǒng)上運行。硬件加速性。OpenGL的應(yīng)用程序接口屬于低層的和面向圖形硬件的軟件接口,因此許多算法可以通過硬件實現(xiàn)。目前幾乎所有的三維圖形加速卡都具有OpenGL加速功能。網(wǎng)絡(luò)開放性。OpenGL工作在客戶機(jī)/服務(wù)器模式下,客戶機(jī)與服務(wù)器可以是各種不同的計算機(jī)和外設(shè),只要兩者之間服從相同的協(xié)議。這使得用戶能夠十分方便的在網(wǎng)絡(luò)環(huán)境下使用OpenGL。DirectX它可讓以windows為平臺的游戲或多媒體程序獲得更高的執(zhí)行效率

3、,加強(qiáng)3d圖形和聲音效果,并提供設(shè)計人員一個共同的硬件驅(qū)動標(biāo)準(zhǔn),讓游戲開發(fā)者不必為每一品牌的硬件來寫不同的驅(qū)動程序,也降低用戶安裝及設(shè)置硬件的復(fù)雜度。Delta3D是一款由美國海軍研究學(xué)院開發(fā)的全功能游戲與仿真引擎。是一個功能齊全的游戲引擎,可用于游戲,模擬或其他圖形應(yīng)用。3、 可以使用的矩陣堆棧有哪些?模型視點矩陣,投影矩陣,顏色矩陣(應(yīng)該還有一個紋理矩陣)4、 說明使用紋理的步驟。步驟:1、創(chuàng)建紋理對象,并為它指定一個紋理。 2、確定這個紋理如何應(yīng)用到每個象素上。 3、啟用紋理貼圖功能。 4、繪制場景,提供紋理坐標(biāo)和幾何圖形坐標(biāo)。投影紋理:通過應(yīng)用一系列的變換,可以把物體坐標(biāo)中的坐標(biāo)映射到

4、一個2D空間(紋理空間)中,并找出每個頂點映射到紋理的哪個部分,然后把這個位置當(dāng)作紋理坐標(biāo)給頂點。變換的過程是將物體坐標(biāo)進(jìn)行MODEL變換統(tǒng)一到一個世界坐標(biāo)系,再進(jìn)過Projector的VIEW矩陣變換投影的視點(Projector View)空間下,然后通過透視矩陣,最后要進(jìn)行一部縮放和偏移的變換,這樣就生成了它的投影紋理。多重紋理:多重紋理是指對一個多邊形映射多個紋理。在紋理映射的過程中,對各個紋理單元中的紋理,通過紋理組合函數(shù),逐個應(yīng)用到多邊形上。使用多重紋理時,有多個紋理單元和多個紋理坐標(biāo),OPENGL渲染時對每個紋理進(jìn)行單獨的紋理操作,并把結(jié)果傳遞到下一個紋理單元中,即每個紋理單元根

5、據(jù)它的紋理狀態(tài),把原來的片元顏色與紋理單元中的圖像以一定的方式進(jìn)行組合,把把產(chǎn)生的片元顏色傳遞到下一個紋理單元,在紋理組合時,OPENGL通過指定的紋理組合函數(shù),如GL_REPLACE,GL_ADD,GL_MODULATE等方式。5、 Mipmap的作用是什么?為什么mipmap可以用來紋理反混淆。(如何實現(xiàn)紋理的反走樣?說明其原理。)采樣不充分造成紋理的反走樣??梢酝ㄟ^Mipmap的方法來減輕紋理的走樣。Mipmap是一系列預(yù)先過濾的分辨率遞減的紋理圖像。在OPENGL使用Mipmap時,會根據(jù)被貼圖的物體大小自動確定使用那個紋理。使用這種方法,紋理圖像中的細(xì)節(jié)層就能適應(yīng)地被繪制到屏幕上的圖

6、像。生成Mipmap時,較小的圖像通常是進(jìn)行了過濾的版本,是對最大的紋理圖像進(jìn)行適當(dāng)勻縮后的結(jié)果,一般而言,較小的紋理圖像的每個紋理單元是更高一級分辨率的紋理圖像的4個紋理單元的平均值。6、 寫出OpenGL中局部光照的方程,要包含的系數(shù)有光源參數(shù)、材料參數(shù)、聚光燈的參數(shù)、衰減參數(shù)等,方程要表示是多個光源的。7、 如何理解模型視圖變換?在一個坐標(biāo)系W中,設(shè)模型為一個以(5.0, 0.0, 0.0), (0.0, 5.0, 0.0), (0.0, 0.0, 5.0)為三個點的三角形,現(xiàn)在把照相機(jī)按照下列方式設(shè)置:u 照相機(jī)位置設(shè)為:(0.0, 0.0, 100.0),看向的目標(biāo)點為 (0.0,

7、0.0, 0.0) ,照相機(jī)的up方向為(0.0, 1.0, 0.0)u 投影為透視投影,豎直張角為60度u 取景范圍為沿照相機(jī)的朝向距離從0.1 到 300現(xiàn)需要把照相機(jī)看到的圖片放在一個400x300像素分辨率的窗口的右上部分,該部分起始點為 (100, 100), 寬度為200,高度為200(1) 請寫出用OpenGL函數(shù)表示的照相機(jī)設(shè)置。(2) 寫出視區(qū)(viewport)的設(shè)置函數(shù)。(3) 寫出投影變換的設(shè)置函數(shù)。(4) 求出從坐標(biāo)系W到照相機(jī)坐標(biāo)系(視點坐標(biāo)系)的4x4的變換矩陣。1. gluLookAt(0.0,0.0, 100.0,0.0,0.0,0.0,0.0,1.0,0.0

8、);2. glViewport (100, 100, 200, 200);3.gluPerspective(60.0f,1.0f,0.1f,300.0f);4. 1 0 00 公式呢?0 1 0 00 0 1 -1000 0 0 18、 采用GLSL語言如何進(jìn)行編程,Vertex Shader 和 Fragment Shader 的輸入輸出GLSL(GL Shading Language)是用來在頂點和像素著色器(shader)中編程的語言,編寫的程序段是在圖形卡的GPU(Graphic Processor Unit圖形處理單元)上執(zhí)行的,代替了固定的渲染管線的一部分。比如:視圖轉(zhuǎn)換、投影轉(zhuǎn)換

9、等。GLSL的著色器代碼分成2個部分:Vertex Shader(頂點著色器)和FragmentShader(片斷著色器)。頂點著色器控制頂點坐標(biāo)轉(zhuǎn)換過程;片段著色器控制像素顏色計算過程。在Vertex Shader input:頂點坐標(biāo),法線向量,顏色值,紋理坐標(biāo),霧坐標(biāo) 輸出:圖元設(shè)置,裁剪。Fragment Shader input:幾何圖形設(shè)置開始,位圖/像素矩陣 output:片段測試 創(chuàng)建shade project,program link,gluseshader9、 用框圖說明OpenGL的渲染管線,并簡要說明頂點變換中的每個坐標(biāo)系。見書p423。10、 分析程序并計算請看下面的

10、一段程序,并計算三個頂點、和處的光照的顏色值。必須寫出過程,只有結(jié)果不得分。void init(void) GLfloat mat_ambient = 0.2, 0.2, 0.2, 1.0 ;GLfloat mat_diffuse = 0.8, 0.8, 0.8, 1.0 ;GLfloat mat_emission = 0.0, 0.0, 0.0, 1.0 ; GLfloat mat_specular = 0.3, 0.3, 0.3, 1.0 ; GLfloat mat_shininess = 2.0 ; GLfloat light_position = 1.0, 1.0, 1.0, 0.0

11、; GLfloat light_ambient = 0.2, 0.2, 0.2, 1.0; GLfloat light_diffuse = 1.0, 1.0, 1.0, 1.0; GLfloat light_specular =1.0, 1.0, 1.0, 1.0; GLfloat lmodel_ambient = 0.2, 0.2, 0.2, 1.0; glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv

12、(GL_FRONT, GL_DIFFUSE, mat_diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(

13、GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT), GL_SPECULAR, light_specular); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST);void display(void) glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glBegin(GL_TRIA

14、NGLES); glNormal3f(0.0f, 0.0f, 1.0f);glVertex3f(0.0, 0.0, 0.0);glVertex3f(1.0, 0.0, 0.0);glVertex3f(1.0, 1.0, 0.0); glEnd(); glFlush ();void reshape (int w, int h) glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho (-1.5, 1.5, -1.5*(GL

15、float)h/(GLfloat)w, 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho (-1.5*(GLfloat)w/(GLfloat)h, 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();int main(int argc, char* argv) glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RG

16、B | GLUT_DEPTH); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv0); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0;因為 GLfloat light_position = 1.0, 1.0, 1.0, 0.0 ;故L=G(1,1,1);n=G(0,0,1);s=G(L+(0,0,1); kc=1,kl=kq=0,N=1聚光效

17、果的1;11、 請用OBJ格式表示一個長度為10的立方體,并把每個面分別貼上圖片文件pic1.jpg,pic2.jpg, pic3.jpg, pic4.jpg, pic5.jpg。11 a.objmtllib a.mtl# 8 verticesv .0v 0.010.0 0.0v 0.0 10.0 10.0v 0.0 0.0 10.0v .0v 10.010.0 0.0v 10.0 10.0 10.0v 10.0 0.0 10.0#normalsnv 0.0 0.0 1.0nv 0.0 0.0 -1.0nv 0.0 1.0 0.0nv 0.0 -1.0 0.0nv 1.0 0.0 0.0nv

18、-1.0 0.0 0.0vt 0.0 0.0vt 1.0 0.0vt vt g posx_mapusemtl posx_mapf 4/1/6 2/2/6 1/3/6 3/4/6g posy_mapusemtl posy_mapf 2/1/4 6/2/4 5/3/4 1/4/4g negx_mapusemtl negx_mapf 6/1/5 8/2/5 7/3/5 5/4/5g negy_mapusemtl negy_mapf 8/1/3 4/2/3 3/3/3 7/4/3g posz_mapusemtl posz_mapf 7/1/2 3/2/2 1/3/2 5/4/2g negz_mapus

19、emtl negz_mapa. mtlnewmtl posx_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic1.jpgnewmtl posy_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic2.jpgnewmtl posz_mapKa 0.968600 0.968600 0.968600Kd

20、0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic3.jpgnewmtl negx_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic4.jpgnewmtl negy_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic5

21、.jpgnewmtl negz_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd pic6.jpg12、 常見有幾種幀緩沖(Framebuffer),Stencil buffer如何使用??炊畇tencil.c文件。幀緩存有幾種,什么叫片元,片元的測試和操作有哪些?顏色緩存:包括左前,右前,左后,右后及任意數(shù)量的輔助顏色緩存。深度緩存,模板緩存,累積緩存明白stencilbuffer(模板緩沖區(qū))的使用。模板測試常用的是屏蔽掉屏幕中一些不規(guī)則的區(qū)域,以

22、免在這些區(qū)域中進(jìn)行繪圖。使用glStencilFunc()和glStencilOp()函數(shù)選擇需要使用的特定比較函數(shù),參考值以及對模板緩沖區(qū)所執(zhí)行的修改操作。模板測試的結(jié)果決定了像素的顏色值是否要被寫入到渲染目標(biāo),像素的深度值是否要被寫入深度緩沖。例如,當(dāng)參考模板值為0時將一些物體繪制到場景中,而此時模板緩沖已經(jīng)清除為1,那么當(dāng)繪制這些物體時模板緩沖就會為0。如果接著將參考值設(shè)置為1,而且StencilFunction設(shè)置為 CompareFunction.LessEqual,那么只有那些模板值不為0的對應(yīng)區(qū)域的像素會被繪制。這是使用模板緩沖創(chuàng)建一個限制當(dāng)前繪制區(qū)域的基本用法。要使用模板緩沖,

23、DepthFormat必須保留一些字節(jié)用于模板緩沖。片元:片元的測試按下列的順序進(jìn)行,如果在前面的測試中片元被刪除,則不在進(jìn)行后續(xù)的測試或操作。1. 剪取測試:利用glScissor()函數(shù)定義窗口中的一個矩形,并將圖限制在其中。2. alpha測試:利用alpha值來確定或是拒絕一個片元。利用glEnable()使用參數(shù)GL_ALPHA_TEST激活。喲哦那個glAlphaFunc()來比較。用來實現(xiàn)透明算法和紋理圖制作貼花。3. 模板測試:對存儲于模板緩存中的像素值與參考值進(jìn)行比較,根據(jù)比較的結(jié)果來對模板緩存中的值進(jìn)行修改。glStencilOp().4.深度測試:用于消除隱藏表面的操作。

24、glDepthFunc()來設(shè)置比較函數(shù)。13、 請舉出一種場景反混淆(反走樣)的方法。對場景的反走樣,通常采用多重采樣的方法。多重采樣的方法使用額外的顏色,深度和模版信息對圖元進(jìn)行反走樣處理。每個片元是根椐子像素樣本的數(shù)量和信息來計算,也就是根據(jù)一個多重采樣緩沖區(qū)所保存的樣本來計算。一種是擾動視點的方法,也就是多次繪制這個場景,每次繪制時,對視點進(jìn)行抖動,作一點輕微的偏移,當(dāng)整個渲染過程完結(jié)后,再把所有圖象疊加起來,由于每個圖象的位置不同,可以減輕鋸齒狀。14、 分析下面的程序并計算 在下面的例子中,計算對應(yīng)四個頂點所對應(yīng)的四邊形上的一個點(-1.5, 0.5, 0.0)對應(yīng)的紋理坐標(biāo)是多少

25、?按照最近鄰域濾波方法,該點對應(yīng)的顏色是什么?寫出詳細(xì)的計算過程,只有結(jié)果將不給分。#definecheckImageWidth 64#definecheckImageHeight 64static GLubyte checkImagecheckImageHeightcheckImageWidth4;static GLuint texName;void makeCheckImage(void) int i, j, c; for (i = 0; i < checkImageHeight; i+) for (j = 0; j < checkImageWidth; j+) c = (i&

26、amp;0x8)=0)(j&0x8)=0)*255; checkImageij0 = (GLubyte) c;checkImageij1 = (GLubyte) c; checkImageij2 = (GLubyte) c; checkImageij3 = (GLubyte) 255; void init(void) glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); makeCheckImage();glPixelStorei(GL_UNPACK_ALIGNMENT, 1

27、);glGenTextures(1, &texName); glBindTexture(GL_TEXTURE_2D, texName); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TE

28、XTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);void display(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glBindTexture(GL_TEXTURE_2D, texName); glBegin(GL_QUADS);glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);glTexCoord2f(1.0, 0.0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論