




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
光線跟蹤算法第一頁(yè),共三十八頁(yè),2022年,8月28日實(shí)驗(yàn)設(shè)計(jì)問(wèn)題一、影響光照效果的因素?問(wèn)題二、OPENGL光線跟蹤函數(shù)的函數(shù)?問(wèn)題三、光線跟蹤實(shí)現(xiàn)的基本步驟?第二頁(yè),共三十八頁(yè),2022年,8月28日一、OPENGL中影響光照效果的因素?1、光源光的種類(lèi):環(huán)境光:light_ambient散射光:light_diffuse鏡面光:light_specular光源的分類(lèi):方向性光源:無(wú)限遠(yuǎn),所有光線是平行的位置性光源:位置決定場(chǎng)景中的效果區(qū)別:GLfloatlight_position[]中的第四個(gè)參數(shù)第三頁(yè),共三十八頁(yè),2022年,8月28日2、材料屬性材料的環(huán)境顏色:GL_AMBIENT材料的散射顏色:GL_DIFFUSE材料的鏡面顏色:GL_SPECULAR材料的鏡面指數(shù):GL_SHININESS材料的發(fā)射顏色:GL_EMISSION第四頁(yè),共三十八頁(yè),2022年,8月28日問(wèn)題二、OPENGL光線跟蹤函數(shù)的函數(shù)?光源:voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param);Light:指定光源pname:光源屬性param:屬性值材料屬性:voidglMaterial{if}(GLenumface,GLenumpname,TYPEparam);voidglMaterial{if}v(GLenumface,GLenumpname,TYPE*param);Face:那個(gè)面受光照
pname:光源屬性param:屬性值第五頁(yè),共三十八頁(yè),2022年,8月28日問(wèn)題三、光線跟蹤實(shí)現(xiàn)的基本步驟?一、創(chuàng)建光源二、選擇光照模型三、定義材料屬性有了這些知識(shí),我們就可以進(jìn)行第一個(gè)簡(jiǎn)單的多光源實(shí)驗(yàn)。第六頁(yè),共三十八頁(yè),2022年,8月28日靜止多光源實(shí)現(xiàn)自己的工作:按照光線跟蹤實(shí)現(xiàn)的步驟進(jìn)行。設(shè)置光源參數(shù),衰減因子,聚光燈參數(shù),材料屬性參數(shù),調(diào)用glLightfv,glMaterialfv,glEnable等函數(shù)進(jìn)行設(shè)置。已有的:實(shí)現(xiàn)靜態(tài)光源顯示voidreshape(intw,inth)voiddisplay(void)第七頁(yè),共三十八頁(yè),2022年,8月28日創(chuàng)建光源1、設(shè)置光源參數(shù)方向性光源,環(huán)境光顏色為藍(lán)色GLfloatlight_ambient[]={0.0,0.0,1.0,1.0};GLfloatlight_diffuse[]={1.0,1.0,1.0,1.0};GLfloatlight_specular[]={1.0,1.0,1.0,1.0};GLfloatlight_position[]={1.0,1.0,1.0,0.0};位置性光源,環(huán)境光和散射光顏色為紅色GLfloatlight1_ambient[]={1.0,0.0,0.0,1.0};GLfloatlight1_diffuse[]={1.0,0.0,0.0,1.0};GLfloatlight1_specular[]={1.0,1.0,1.0,1.0};GLfloatlight1_position[]={0.0,2.0,2.0,1.0};第八頁(yè),共三十八頁(yè),2022年,8月28日2、衰減因子定義衰減因子目的:增強(qiáng)真實(shí)效果glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,2.0);glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,1.0);glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.5);glLightf(GL_LIGHT1,GL_CONSTANT_ATTENUATION,1.5);glLightf(GL_LIGHT1,GL_LINEAR_ATTENUATION,0.5);glLightf(GL_LIGHT1,GL_QUADRATIC_ATTENUATION,0.2);三個(gè)參數(shù)的默認(rèn)值為1,0,0第九頁(yè),共三十八頁(yè),2022年,8月28日3,聚光燈參數(shù)光源LIGHT1GLfloatspot_direction[]={1.0,-1.0,-1.0};glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction);glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,45.0);//默認(rèn)值180glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,5.0);//用于控制光的集中度,越高強(qiáng)度越集中第十頁(yè),共三十八頁(yè),2022年,8月28日4,glLightfv的調(diào)用
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT1,GL_AMBIENT,light1_ambient);glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse);glLightfv(GL_LIGHT1,GL_SPECULAR,light1_specular);glLightfv(GL_LIGHT1,GL_POSITION,light1_position);第十一頁(yè),共三十八頁(yè),2022年,8月28日5,glEnable的調(diào)用作用:?jiǎn)⒂霉庠?/p>
glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_LIGHT1);第十二頁(yè),共三十八頁(yè),2022年,8月28日6,光源保持靜止voidreshape(intw,inth){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w<=h)glOrtho(-1.5,1.5,1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);elseglOrtho(-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5,-10.0,10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}首先確定視口和投影矩陣,接著在模型視圖矩陣中加載單位矩陣,然后再設(shè)置光源。由于使用單位陣,乘模型視圖矩陣之后原來(lái)制定的光源位置并沒(méi)有發(fā)生變化。第十三頁(yè),共三十八頁(yè),2022年,8月28日選擇光照模型靜態(tài)多光源實(shí)現(xiàn)過(guò)程中使用默認(rèn)設(shè)置:即觀察者位于無(wú)窮遠(yuǎn)且只有一面接受光照
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_FALSE);第十四頁(yè),共三十八頁(yè),2022年,8月28日定義材料屬性材料屬性值設(shè)置GLfloatmat_specular[]={1.0,1.0,1.0,1.0};GLfloatmat_shininess[]={50.0};glMaterialfv的調(diào)用glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);第十五頁(yè),共三十八頁(yè),2022年,8月28日display()函數(shù)voiddisplay(void){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清空緩沖區(qū)
glutSolidSphere(1.0,20,16);//畫(huà)圓,半徑為1.0glFlush();//保證繪圖命令被實(shí)際執(zhí)行}第十六頁(yè),共三十八頁(yè),2022年,8月28日效果展示屏蔽位置性光源只有方向性光源第十七頁(yè),共三十八頁(yè),2022年,8月28日屏蔽方向性光源只有位置性光源第十八頁(yè),共三十八頁(yè),2022年,8月28日靜止多光源第十九頁(yè),共三十八頁(yè),2022年,8月28日材料屬性對(duì)光照效果的影響遇到的問(wèn)題:如何將不同的材料屬性賦予不同的球體?第二十頁(yè),共三十八頁(yè),2022年,8月28日如何將不同的材料屬性賦予不同的球體?猜測(cè)可以通過(guò)調(diào)用glTranslatef()來(lái)實(shí)現(xiàn)查閱發(fā)現(xiàn):
glPushMatrix();glTranslatef();glMaterialfv();glutSolidSphere();glPopMatrix();第二十一頁(yè),共三十八頁(yè),2022年,8月28日創(chuàng)建光源//環(huán)境光,散射光和鏡面光參數(shù)GLfloatlight_ambient[]={0.0,0.0,1.0,1.0};GLfloatlight_diffuse[]={1.0,1.0,1.0,1.0};GLfloatlight_specular[]={1.0,1.0,1.0,1.0};GLfloatlight_position[]={1.0,1.0,1.0,0.0};//glLightfv的調(diào)用glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);glLightfv(GL_LIGHT0,GL_POSITION,light_position);//glEnable的調(diào)用glEnable(GL_DEPTH_TEST);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);第二十二頁(yè),共三十八頁(yè),2022年,8月28日
材料屬性值設(shè)置
GLfloatno_mat[]={0.0,0.0,0.0,1.0};GLfloatmat_ambient[]={0.7,0.7,0.7,1.0};GLfloatmat_diffuse[]={0.1,0.5,0.8,1.0};GLfloatmat_specular[]={1.0,1.0,1.0,1.0};GLfloatno_shininess[]={0.0};GLfloatlow_shininess[]={5.0};GLfloathigh_shininess[]={100.0};GLfloatmat_emission[]={0.3,0.2,0.2,0.0};第二十三頁(yè),共三十八頁(yè),2022年,8月28日glMaterialfv的調(diào)用
第一個(gè)球:只有散射顏色和發(fā)射顏色
glPushMatrix();glTranslatef(-1.0,-0.5,-2.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);glutSolidSphere(1.0,16,16);//繪制小球
glPopMatrix();第二十四頁(yè),共三十八頁(yè),2022年,8月28日第二個(gè)球:只有散射顏色和鏡面顏色,且鏡面指數(shù)低
glPushMatrix();glTranslatef(0.0,-0.5,-3.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0,16,16);glPopMatrix();第二十五頁(yè),共三十八頁(yè),2022年,8月28日第三個(gè)球:只有散射顏色和鏡面顏色,且鏡面指數(shù)為高
glPushMatrix();glTranslatef(1.0,-0.5,-4.0);glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);glutSolidSphere(1.0,16,16);glPopMatrix();第二十六頁(yè),共三十八頁(yè),2022年,8月28日靜態(tài)光源控制voidreshape(intw,inth){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w<=h)glOrtho(-1.5,1.5,-1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);elseglOrtho(-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5,-10.0,10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}第二十七頁(yè),共三十八頁(yè),2022年,8月28日效果展示第一個(gè)小球只有散射顏色和發(fā)射顏色第二個(gè)小球只有散射顏色和鏡面顏色,且鏡面指數(shù)低
第三個(gè)小球只有散射顏色和鏡面顏色,且鏡面指數(shù)為高第二十八頁(yè),共三十八頁(yè),2022年,8月28日動(dòng)態(tài)光源實(shí)現(xiàn)采用什么方式實(shí)現(xiàn)動(dòng)態(tài)光源?通過(guò)點(diǎn)擊鼠標(biāo)產(chǎn)生鼠標(biāo)事件,進(jìn)而移動(dòng)光源第二十九頁(yè),共三十八頁(yè),2022年,8月28日鼠標(biāo)事件函數(shù),目的通過(guò)點(diǎn)擊鼠標(biāo)控制旋轉(zhuǎn)voidmouse(intbutton,intstate,intx,inty){switch(button) {caseGLUT_LEFT_BUTTON:if(state==GLUT_DOWN) {spin=(spin+30)%360;//全局變量spin的控制
glutPostRedisplay(); }break;default:break; }}第三十頁(yè),共三十八頁(yè),2022年,8月28日
voiddisplay3(void)//模型和視圖變換{GLfloatposition[]={0.0,0.0,1.5,1.0};glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glPushMatrix();glTranslatef(0.0,0.0,-5.0);glPushMatrix();glRotated((GLdouble)spin,1.0,0.0,0.0);//全局變量spin初值為0,通過(guò)鼠標(biāo)事件改變它的值,進(jìn)而進(jìn)行旋轉(zhuǎn)
glLightfv(GL_LIGHT0,GL_POSITION,position);glTranslated(0.0,0.0,1.5);glDisable(GL_LIGHTING);glColor3f(0.0,1.0,1.0);glutWireCube(0.1);//繪制立方體函數(shù),目的是為了更好的顯示效果
glEnable(GL_LIGHTING);glPopMatrix(); glutSolidSphere(1.0,20,16);//繪制圓
glPopMatrix();glFlush();}第三十一頁(yè),共三十八頁(yè),2022年,8月28日voidreshape3(intw,inth)//投影和視口變換{glViewport(0,0,(GLsizei)w,(GLsizei)h);//作用調(diào)整繪圖像素矩陣,使它占據(jù)整個(gè)窗口
glMatrixMode(GL_PROJECTION);//表示吧當(dāng)前矩陣指定用于投影變換,后續(xù)的變換調(diào)用影響的是投影矩陣
glLoadIdentity();//對(duì)當(dāng)前矩陣進(jìn)行初始化
gluPerspective(40.0,(GLfloat)w/(GLfloat)h,1.0,20.0);/*voidgluPerspective(GLdoublefovy,GLdoubleaspect,GLdoublenear,GLdoublefar);
創(chuàng)建一個(gè)表示對(duì)稱(chēng)透視視圖憑借頭體的矩陣,并把它與當(dāng)前矩陣相乘
fovyyz平面上視野的角度,它的值必須在[0.0,180.0].aspect是這個(gè)平截頭體的縱橫比,即寬度除高度
nearandfar觀察點(diǎn)與近側(cè)剪裁平面及遠(yuǎn)側(cè)裁剪平面的距離,值為正數(shù)*/glMatrixMode(GL_MODELVIEW);//以后變換影響的是模型視圖矩陣
glLoadIdentity();//對(duì)當(dāng)前矩陣進(jìn)行初始化}第三十二頁(yè),共三十八頁(yè),2022年,8月28日效果展示光源在上面時(shí)第三十三頁(yè),共三十八頁(yè),2022年,8月28日光源在下側(cè)時(shí)第三十四頁(yè),共三十八頁(yè),2022年,8月28日
main()的實(shí)現(xiàn)
intmain(intargc,char**argv){//初始化
glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);glutInitWind
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)非開(kāi)挖設(shè)備市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)銣礦市場(chǎng)運(yùn)營(yíng)狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)針織類(lèi)服裝行業(yè)運(yùn)行動(dòng)態(tài)及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)金屬波紋補(bǔ)償器市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)觸摸屏機(jī)柜行業(yè)市場(chǎng)競(jìng)爭(zhēng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)血漿代用品行業(yè)發(fā)展現(xiàn)狀規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)蟻醛行業(yè)運(yùn)營(yíng)現(xiàn)狀與發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)艾灸行業(yè)運(yùn)營(yíng)狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國(guó)硅碳棒行業(yè)運(yùn)行動(dòng)態(tài)與營(yíng)銷(xiāo)策略研究報(bào)告
- 2025-2030年中國(guó)石墨礦市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 《走近世界民間美術(shù)》 課件 2024-2025學(xué)年人美版(2024)初中美術(shù)七年級(jí)下冊(cè)
- 2025云南紅河州個(gè)舊市大紅屯糧食購(gòu)銷(xiāo)限公司招聘及人員高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- X證書(shū)失智老年人照護(hù)講解
- 工廠安全事故預(yù)防知識(shí)
- 2024-2025學(xué)年人教版數(shù)學(xué)八年級(jí)下冊(cè)期中檢測(cè)卷(含答案)
- 2024年江西應(yīng)用工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 中醫(yī)護(hù)理技術(shù)操作質(zhì)量控制
- 6月26國(guó)際禁毒日防范青少年藥物濫用禁毒宣傳課件
- 老舊小區(qū)基礎(chǔ)設(shè)施環(huán)境改造工程施工質(zhì)量因素的分析及控制方法
- 筑牢安全防線守護(hù)平安校園
-
評(píng)論
0/150
提交評(píng)論