光線跟蹤算法.docx

光線跟蹤算法.docx

ID:59227170

大?。?8.39 KB

頁數(shù):3頁

時間:2020-09-09

光線跟蹤算法.docx_第1頁
光線跟蹤算法.docx_第2頁
光線跟蹤算法.docx_第3頁
資源描述:

《光線跟蹤算法.docx》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、光線跟蹤的算法1,原理由于從光源發(fā)出的光線有無窮多條,使得直接從光源出發(fā)對光線進(jìn)行跟蹤變得非常困難。實(shí)際上,從光源發(fā)出的光線只有少數(shù)經(jīng)由場景的反射和透射(折射)后到達(dá)觀察者的眼中。為此標(biāo)準(zhǔn)光線跟蹤算法采用逆向跟蹤技術(shù)完成整個場景的繪制。光線跟蹤思路:從視點(diǎn)出發(fā),通過圖像平面上每個像素中心向場景發(fā)出一條光線,光線的起點(diǎn)為視點(diǎn),方向?yàn)橄袼刂行暮鸵朁c(diǎn)連線單位向量。光線與離視點(diǎn)最近的場景物體表面交點(diǎn)有三種可能:1.當(dāng)前交點(diǎn)所在的物體表面為理想漫射面,跟蹤結(jié)束。2.當(dāng)前交點(diǎn)所在的物體表面為理想鏡面,光線沿其鏡面發(fā)射方向繼續(xù)跟蹤。3.當(dāng)前交

2、點(diǎn)所在的物體表面為規(guī)則透射面,光線沿其規(guī)則透射方向繼續(xù)跟蹤。如圖-1中,場景中有三個半透明玻璃球,視點(diǎn)發(fā)出光線與場景最近交點(diǎn)為P1,使用任意局部光照模型(opengl使用的是phong模型)可以計(jì)算出P1點(diǎn)處的局部光亮度Ilocal,為了計(jì)算周圍環(huán)境在P1點(diǎn)處產(chǎn)生的鏡面發(fā)射光和規(guī)則折射光,光線1在P1點(diǎn)處衍生出兩支光線:反射光2和折射光3。P1處的光照由三部分組成:Ilocal+ks*I2+kt*I3I3為折射光線3的顏色,Kt為折射率I2為反射光線2的顏色,Ks為反射率I3和I2的計(jì)算需要遞歸。2,偽代碼[cpp]viewpl

3、aincopyprint?01.voidTraceRay(constVec3&start,constVec3&direction,intdepth,Color&color)02.{03.Vec3intersectionPoint,reflectedDirection,transmittedDirection;04.ColorlocalColor,reflectedColor,transmittedColor;05.if(depth>=MAX_DEPTH){06.color=Black;//#00007.}08.else{09.R

4、ayray(start,direction);//取start起點(diǎn),方向direction為跟蹤射線;10.if(!scene->HasIntersection(ray))11.color=BackgroundColor;12.else{13.計(jì)算理起始點(diǎn)start最近的交點(diǎn)intersectionPoint,14.記錄相交物體intersectionObject,15.16.//#117.Shade(intersectionObject,intersectionPoint,localColor);18.19.//#220.if

5、(intersectionPoint所在面為鏡面){21.計(jì)算跟蹤光想S在intersectionPoint處的反射光線方向reflectedDirection,22.TraceRay(intersectionPoint,reflectedDirection,depth+1,reflectedColor);23.}24.//#325.if(intersectionPoint所在的表面為透明面){26.計(jì)算跟蹤光線S在intersectionPoint處的規(guī)則透射光線方向transmittedDirection,27.TraceR

6、ay(intersectionPoint,transmittedDirection,depth+1,transmittedColor);28.}29.//#summarize30.color=localColor+Ks*reflectedColor+Kt*transmittedColor;31.}//else32.}//else33.}34.//局部光照模型計(jì)算交點(diǎn)intersectionPoint處的局部光亮度localColor35.voidShade(constObject&intersectionObj,constVec

7、3&intersectionPoint,Color&localColor)36.{37.確定intersectionObj在intersectionPoint處的單位法向量N,38.漫反射系數(shù)Kd,39.鏡面反射系數(shù)Ks,40.環(huán)境反射系數(shù)Ka;41.localColor=Ka*Ia;//Ia為環(huán)境光亮度42.for(每一個點(diǎn)光源PointLight){43.計(jì)算入射光線單位向量L和虛擬鏡面法向單位向量H,44.//由Phong模型計(jì)算光源PointLight在intersectionPoint處的漫反射和鏡面反射光亮度45.l

8、ocalColor+=(Ipointlight*(Kd*(N.dot(L))+Ks*(N.dot(H))^n));46.}47.}

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。