




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 (計(jì)算機(jī)圖形學(xué))實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱 使用open GL在繪制球體的基礎(chǔ)上增加光照和材質(zhì)設(shè)置 實(shí)驗(yàn)時(shí)間 年 月 日專業(yè)班級(jí) 學(xué) 號(hào): 姓 名: 成 績(jī) 教師評(píng)語(yǔ): 一、 實(shí)驗(yàn)?zāi)康?、 了解并學(xué)習(xí)open GL的編程;2、 掌握在open GL生成圖形的基本思想和基本步驟;3、 使用open GL具體生成簡(jiǎn)單的三維立體圖形;4、 在生成的三維立體的圖形上面增加光照和材質(zhì)的設(shè)置。二、 實(shí)驗(yàn)原理在上一個(gè)實(shí)驗(yàn)的基礎(chǔ)上,對(duì)繪制出來的球體進(jìn)行光照和材質(zhì)的設(shè)置使其看起來更有立體感,其中對(duì)我們有以下幾條要求:1、理解環(huán)境光,漫反射光和鏡面反射光的光照模型2、理解phong光照模型,熟練掌握opengl中設(shè)置光照
2、的方法3、掌握材質(zhì)的設(shè)置方式一.材質(zhì)的指定 材質(zhì)和燈光一樣有三種屬性:環(huán)境屬性,漫反射屬性和鏡面反射屬性,這些屬性確定了材質(zhì)反射燈光的多少。 設(shè)置材質(zhì)和設(shè)置光照很相似,設(shè)置材質(zhì)的函數(shù)是glMaterial*()glMaterialifv(face, pname, value)face :指明對(duì)物體的哪些面進(jìn)行材質(zhì)設(shè)置GL_FRONT GL_BACK GL_FRONT_AND_BACKPname:要設(shè)置的材質(zhì)屬性GL_AMBIENT 設(shè)置材料的環(huán)境顏色GL_DIFFUSE 設(shè)置材料的漫反射顏色GL_SPECULAR 設(shè)置材料的鏡面反射顏色GL_AMIBIENT_AND_DIFFUSE 設(shè)置材料的
3、環(huán)境和漫反射顏色GL_SHININESS 設(shè)置鏡面指數(shù)GL_EMISSION 設(shè)置材料的發(fā)散顏色GL_COLOR_INDEXES 設(shè)置環(huán)境,漫反射和鏡面反射的顏色索引1.通常,GL_AMBIENT 和GL_DIFFUSE 都取相同的值,可以達(dá)到比較真實(shí)的效果。使用GL_AMBIENT_AND_DIFFUSE 可以同時(shí)設(shè)置 GL_AMBIENT 和 GL_DIFFUSE屬性。2.GL_SHININESS屬性。該屬性只有一個(gè)值,稱為“鏡面指數(shù)”,取值范圍是 0到128。該值越小,表示材質(zhì)越粗糙,點(diǎn)光源發(fā)射的光線照射到上面,也可以產(chǎn)生較大的亮點(diǎn)。該值越大,表示材質(zhì)越類似于鏡面,光源照射到上面后,產(chǎn)生
4、較小的亮點(diǎn)。 3.GL_EMISSION 屬性。該屬性由四個(gè)值組成,表示一種顏色。OpenGL認(rèn)為該材質(zhì)本身就微微的向外發(fā)射光線,以至于眼睛感覺到它有這樣的顏色,但這光線又比較微弱,以至于不會(huì)影響到其它物體的顏色。 4.GL_COLOR_INDEXES 屬性。該屬性僅在顏色索引模式下使用,由于顏色索引模式下的光照比 RGBA 模式要復(fù)雜,并且使用范圍較小,不做討論。三、 實(shí)驗(yàn)詳細(xì)操作過程(附實(shí)驗(yàn)代碼)1、創(chuàng)建一個(gè)Win32 Console Application應(yīng)用程序。在下一步中選擇A “Hello,World!” application。如下圖2、鏈接OpenGL libraries。在V
5、isual C+中先單擊Project再單擊Settings再找到 Link單擊,最后在Object/library modules 的最前面加上opengl32.lib, glu32.lib, glut32.lib。3、系統(tǒng)中需要增加三個(gè)文件,分別是glut.h,glut32.lib和glut32.dll。 glut.h放在C:Microsoft Visual StudioVC98ATLInclude glut32.lib放在C:Microsoft Visual StudioVC98Lib glut32.dll放在C:WINDOWSsystem32 最后就是直接創(chuàng)建一個(gè)C+源程序,輸入要繪制
6、的圖形的代碼,本實(shí)驗(yàn)的代碼具體如下:/#include stdafx.h#include stdlib.h#include gl/glut.h#includetypedef float point3;/* initial tetrahedron */point v=0.0, 0.0, 1.0, 0.0, 0., -0.33333,-0., -0., -0., 0., -0., -0.;static GLfloat theta = 0.0,0.0,0.0;int n;int mode;void triangle( point a, point b, point c)/* display one
7、triangle using a line loop for wire frame, a singlenormal for constant shading, or three normals for interpolative shading */ if (mode=0)glBegin(GL_LINE_LOOP); elseglBegin(GL_POLYGON); if(mode=1) glNormal3fv(a); if(mode=2) glNormal3fv(a); glVertex3fv(a); if(mode=2) glNormal3fv(b); glVertex3fv(b); if
8、(mode=2) glNormal3fv(c); glVertex3fv(c); glEnd();void normal(point p)/* normalize a vector */ float d =0.0; int i; for(i=0; i0.0) for(i=0; i0) for(j=0; j3; j+) v1j=aj+bj; normal(v1); for(j=0; j3; j+) v2j=aj+cj; normal(v2); for(j=0; j3; j+) v3j=bj+cj; normal(v3); divide_triangle(a, v1, v2, m-1); divi
9、de_triangle(c, v2, v3, m-1); divide_triangle(b, v3, v1, m-1); divide_triangle(v1, v3, v2, m-1); else(triangle(a,b,c); /* draw triangle at end of recursion */void tetrahedron(int m)/* apply triangle subdivision to faces of tetrahedron */ divide_triangle(v0, v1, v2, m); divide_triangle(v3, v2, v1, m);
10、 divide_triangle(v0, v3, v1, m); divide_triangle(v0, v2, v3, m);void display(void)/* Displays all three modes, side by side */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); mode=0; tetrahedron(n); mode=1; glTranslatef(-2.0, 0.0,0.0); tetrahedron(n); mode=2; glTranslatef(4.0,
11、0.0,0.0); tetrahedron(n); glFlush();void myReshape(int w, int h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w = h) glOrtho(-4.0, 4.0, -4.0 * (GLfloat) h / (GLfloat) w, 4.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); else glOrtho(-4.0 * (GLfloat) w / (GLfloat) h, 4.0 *
12、(GLfloat) w / (GLfloat) h, -4.0, 4.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); display();void myinit() GLfloat mat_specular=1.0, 1.0, 1.0, 1.0; GLfloat mat_diffuse=1.0, 1.0, 1.0, 1.0; GLfloat mat_ambient=1.0, 1.0, 1.0, 1.0; GLfloat mat_shininess=100.0; GLfloat light_ambient=0.0, 0.0, 0.0, 1.0; GLfl
13、oat light_diffuse=1.0, 1.0, 1.0, 1.0; GLfloat light_specular=1.0, 1.0, 1.0, 1.0;/* set up ambient, diffuse, and specular components for light 0 */ /* glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); g
14、lMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialf(GL_FRONT, GL_SHININESS, mat_shininess);*/ glShadeModel(GL_SMOOTH); /* enable smooth shading */ glEnable(GL_LIGHTING); /* enable lighting */
15、glEnable(GL_LIGHT0); /* enable light 0 */ glEnable(GL_DEPTH_TEST); /* enable z buffer */ glClearColor (1.0, 1.0, 1.0, 1.0); glColor3f (0.0, 0.0, 0.0);void main(int argc, char *argv) n=5;/atoi(argv1); glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow(sphere); myinit(); glutReshapeFunc(myReshape); glutDisplayFunc(display); glutMainLoop();實(shí)驗(yàn)結(jié)果分析與總結(jié)總結(jié):經(jīng)過本次實(shí)驗(yàn)我了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防寒服市場(chǎng)分析報(bào)告
- 中國(guó)模鍛液壓機(jī)行業(yè)市場(chǎng)全景分析及投資前景展望報(bào)告
- 2024-2030年中國(guó)第三方電子支付行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 中國(guó)閥門鑄造摩托車配件項(xiàng)目投資可行性研究報(bào)告
- 兒童繪本閱讀指導(dǎo)課件
- 兒童繪本小螞蟻課件
- 設(shè)備行業(yè)市場(chǎng)調(diào)研與發(fā)展前景評(píng)估報(bào)告(定制版)
- 中國(guó)鎖式管行業(yè)市場(chǎng)全景評(píng)估及發(fā)展前景預(yù)測(cè)報(bào)告
- 教研交流活動(dòng)方案年模板
- 兒童線上語(yǔ)言教學(xué)課件
- 《抗生素分類課件》課件
- 2025年全國(guó)教育工作會(huì)議精神解讀
- 高級(jí)衛(wèi)生專業(yè)技術(shù)資格-副高級(jí)(護(hù)理學(xué))真題庫(kù)-14
- 2025全國(guó)市場(chǎng)監(jiān)督管理法律知識(shí)競(jìng)賽測(cè)試題庫(kù)(含答案解析)
- 長(zhǎng)螺旋鉆孔灌注樁施工培訓(xùn)
- 頸動(dòng)脈狹窄支架術(shù)后護(hù)理
- 時(shí)序數(shù)據(jù)庫(kù)數(shù)據(jù)壓縮算法的研究與應(yīng)用
- 醫(yī)院財(cái)務(wù)人員培訓(xùn)課程
- 爆破三員培訓(xùn)
- 浙江首考2025年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試 歷史 含答案
- 2025重慶電費(fèi)收費(fèi)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論