d游戲設(shè)計(jì)光照_第1頁(yè)
d游戲設(shè)計(jì)光照_第2頁(yè)
d游戲設(shè)計(jì)光照_第3頁(yè)
d游戲設(shè)計(jì)光照_第4頁(yè)
d游戲設(shè)計(jì)光照_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1d游戲設(shè)計(jì)光照5.1光照模型5.1.1光照計(jì)算第5章光照在三維圖形程序中,所有的光照效果都能夠通過(guò)一定的計(jì)算方式生成,這種計(jì)算的方式就被稱為光照模型(LightingModel)。在計(jì)算機(jī)圖形學(xué)里,把光照模型分為3種:環(huán)境光、漫反射、鏡面反射。復(fù)雜的光照模型可以由這3個(gè)分量組成,用公式表示為:第1頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算1.環(huán)境光(Ambient)第5章光照一個(gè)物體即使沒(méi)有直接被光源照射,但只要有光線通過(guò)其他物體的折射、反射到達(dá)物體,它也可能被看見(jiàn)。這種基于整個(gè)自然界環(huán)境的整體亮度,稱為環(huán)境光。環(huán)境光沒(méi)有空間上的位置和方向的特征,只有一個(gè)顏色亮度值。環(huán)境光模型也被稱為全局光照模型(GlobalLightingModel)。第2頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算2.漫反射(Diffuse)第5章光照漫反射光的空間位置和方向?qū)ξ矬w的照明有很大影響。在漫反射光照中一個(gè)物體的表面在所有方向上的反射都是一樣的。第3頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算2.漫反射(Diffuse)第5章光照漫反射光照模型遵循Lambert定理,該定理認(rèn)為,對(duì)于理想漫反射的物體表面(完全不光滑并且沒(méi)有光澤)來(lái)說(shuō),反射光由物體表面法線N和光向量L(從物體表面的點(diǎn)指向光源的向量)的夾角的余弦值決定。第4頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算3.鏡面反射(Specular)第5章光照觀察一下金屬物品或者玻璃制品(如玻璃杯)的表面,移動(dòng)自己所處的觀察點(diǎn)位置,可以發(fā)現(xiàn)玻璃杯表面的亮度也在發(fā)生變化。這種現(xiàn)象往往發(fā)生在光滑物體表面的高光反射中,稱之為鏡面反射(SpecularReflection)。第5頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算3.鏡面反射(Specular)第5章光照鏡面反射的計(jì)算公式為:公式中的p表示物體表面鏡面反射的光強(qiáng)度,可以看出,V和R靠攏,反射光就越亮。第6頁(yè)/共35頁(yè)5.1光照模型5.1.1光照計(jì)算3.鏡面反射(Specular)第5章光照R表示反射光線向量,可以通過(guò)光向量L與法線向量N求出第7頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理1.材質(zhì)第5章光照在一個(gè)場(chǎng)景中,決定光照的因素除了光源以外,還有物體的材質(zhì)。物體表面材質(zhì)屬性決定了它能反射什么顏色的光線以及能反射多少光線。物體的表面材質(zhì)有很多材質(zhì)參數(shù),包括:環(huán)境反射、漫反射、鏡面反射、光亮度(Power)和自發(fā)光(Emissive)。分別表示在各種光照模型下的反射系數(shù)。第8頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理1.材質(zhì)第5章光照引入材質(zhì)后,物體表面的反射光計(jì)算公式變?yōu)椋旱?頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理1.材質(zhì)第5章光照物體最終的顏色是幾個(gè)分量的顏色之和,在進(jìn)行顏色的疊加時(shí),由于各個(gè)RGB分量疊加的值可能會(huì)超出1,而最后渲染時(shí)需要將光照顏色壓縮到[0,1]之間。在圖形系統(tǒng)中,可以按照最大的分量對(duì)溢出顏色進(jìn)行縮放,也可以通過(guò)限制給定分量對(duì)最終顏色的貢獻(xiàn)量來(lái)避免顏色偏移。第10頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理2.著色處理第5章光照著色處理是計(jì)算光照并由此決定像素顏色的過(guò)程,主要存在3種類型的著色處理:Flat、Gouraud和Phong。這3種方法分別基于多邊形、頂點(diǎn)和像素來(lái)計(jì)算光照效果。Flat著色處理也被稱為扁平著色處理,它以三角形為單位進(jìn)行顏色計(jì)算,然后用這種顏色對(duì)三角形進(jìn)行填充。Flat著色處理第11頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理2.著色處理第5章光照Gouraud著色處理首先計(jì)算三角形每個(gè)頂點(diǎn)的顏色,然后用頂點(diǎn)顏色通過(guò)插值來(lái)計(jì)算三角形內(nèi)部各個(gè)點(diǎn)(像素點(diǎn))的光照。Gouraud著色處理第12頁(yè)/共35頁(yè)5.1光照模型5.1.2著色處理2.著色處理第5章光照Phong著色處理方法用三角形頂點(diǎn)處的法向量通過(guò)插值的方式計(jì)算三角形內(nèi)部各個(gè)點(diǎn)的法向量,再根據(jù)各個(gè)像素點(diǎn)的法向量重新計(jì)算像素點(diǎn)的顏色。Phong著色處理第13頁(yè)/共35頁(yè)5.2光源5.2.1平行光(DirectionalLight)第5章光照在物理學(xué)中,將能夠發(fā)光的一切物體都叫光源。常見(jiàn)的光源可以分為3種:點(diǎn)光源、平行光、聚光燈。平行光源表示一個(gè)距離被照物體無(wú)窮遠(yuǎn)的光源,由光源發(fā)出的光線平行通過(guò)整個(gè)場(chǎng)景(或者說(shuō)認(rèn)為是平行的光線),平行光也可以稱為方向光。平行光只有顏色和方向,沒(méi)有發(fā)光位置。第14頁(yè)/共35頁(yè)5.2光源5.2.2點(diǎn)光源(PointLight)第5章光照點(diǎn)光源具有特定的位置和顏色亮度,向四周所有的方向發(fā)出光線,通常也把點(diǎn)光源稱為泛光燈(omni)或者球形光源(sphericallight)。第15頁(yè)/共35頁(yè)5.2光源5.2.2點(diǎn)光源(PointLight)第5章光照點(diǎn)光源的屬性包括:位置、顏色、衰減半徑以及衰減率。衰減半徑說(shuō)明了光照的范圍,光照強(qiáng)度在光源所處的位置(中心點(diǎn))最高,向四周逐漸減弱,到達(dá)衰減半徑的距離時(shí)光強(qiáng)變?yōu)?。第16頁(yè)/共35頁(yè)5.2光源5.2.3聚光燈(SpotLight)第5章光照聚光燈和點(diǎn)光源被稱為位置光源,因?yàn)樗鼈兌季哂形恢玫膶傩?,在空間中有一個(gè)明確的位置。聚光燈表示從空間的一個(gè)特定位置向特定的方向放射光子。第17頁(yè)/共35頁(yè)5.2光源5.2.3聚光燈(SpotLight)第5章光照聚光燈的屬性是3種光源中最多的,包括位置(position)、方向(direction)、距離衰減因子(attenuation)、內(nèi)半徑(theta)、外半徑(phi)以及內(nèi)外錐衰減(falloff)。可以把聚光燈光源看作由內(nèi)外兩個(gè)錐形組成,內(nèi)部錐形中的光照強(qiáng)度最強(qiáng),從內(nèi)部錐形到外部錐形逐漸減弱,同時(shí),光照強(qiáng)度也受到距離的影響,距離光源位置越遠(yuǎn),光照強(qiáng)度越弱。第18頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.1頂點(diǎn)設(shè)計(jì)1.法線計(jì)算第5章光照在進(jìn)行光照計(jì)算時(shí),需要頂點(diǎn)的法線。法線分為頂點(diǎn)法線和面法線,面法線垂直于面,在面法線的方向上是正面,背向面法線方向的是背面。頂點(diǎn)法線垂直于一個(gè)面,并且位于頂點(diǎn)之上,頂點(diǎn)法線說(shuō)明了多邊形表面的平滑程度。第19頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.1頂點(diǎn)設(shè)計(jì)1.法線計(jì)算第5章光照通常情況下,可以用三角形的面法線作為頂點(diǎn)法線。//順時(shí)針輸入三角形3個(gè)頂點(diǎn),計(jì)算面法線。voidComputeTriNormal(D3DXVECTOR3&v1,D3DXVECTOR3&v2, D3DXVECTOR3&v3,D3DVECTOR&normalVec){ D3DXVECTOR3tmpV1=v1-v2; D3DXVECTOR3tmpV2=v1-v3; D3DXVECTOR3tmpNormalVec; D3DXVec3Cross(&tmpNormalVec,&tmpV1,&tmpV2); //向量叉乘

D3DXVec3Normalize(&tmpNormalVec,&tmpNormalVec); //單位化向量

normalVec=(D3DVECTOR)tmpNormalVec;}第20頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.1頂點(diǎn)設(shè)計(jì)2.頂點(diǎn)格式第5章光照需要在頂點(diǎn)中添加法線的信息以便進(jìn)行光照計(jì)算。structCUBE_CUSTOMVERTEX{ FLOATx,y,z; //頂點(diǎn)位置坐標(biāo)

FLOATtu,tv //紋理坐標(biāo)

FLOATnx,ny,nz; //頂點(diǎn)法線 };//定義頂點(diǎn)格式#defineCUBE_D3DFVF_CUSTOMVERTEX\ (D3DFVF_XYZ|D3DFVF_TEX1|D3DFVF_NORMAL)第21頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.2設(shè)置物體材質(zhì)第5章光照在Direct3D中,結(jié)構(gòu)D3DMATERIAL9定義了物體的材質(zhì)屬性。typedefstruct_D3DMATERIAL9{D3DCOLORVALUEDiffuse;D3DCOLORVALUEAmbient;D3DCOLORVALUESpecular;D3DCOLORVALUEEmissive;floatPower;}D3DMATERIAL9;第22頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.2設(shè)置物體材質(zhì)第5章光照設(shè)定好材質(zhì),需要用函數(shù)SetMaterial指定材質(zhì)HRESULTSetMaterial(CONSTD3DMATERIAL9*pMaterial //指向定義材質(zhì)的指針);D3DMATERIAL9mtrl;ZeroMemory(&mtrl,sizeof(D3DMATERIAL9));mtrl.Diffuse.r=0.8f;mtrl.Diffuse.g=0.6f;mtrl.Diffuse.b=0.5f;mtrl.Diffuse.a=1.0f;//m_pD3DDevice為有效的Direct3D設(shè)備m_pD3DDevice->SetMaterial(&mtrl);第23頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.3添加光源1.光源類型第5章光照在Direct3D中有3種光源類型:方向光(DirectionalLight)、點(diǎn)光源(PointLight)和聚光燈(SpotLight)。typedefenum_D3DLIGHTTYPE{D3DLIGHT_POINT=1, //點(diǎn)光源

D3DLIGHT_SPOT=2, //聚光燈

D3DLIGHT_DIRECTIONAL=3, //直射光(或平行光)

D3DLIGHT_FORCE_DWORD=0x7fffffff}D3DLIGHTTYPE;第24頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.3添加光源2.光源屬性第5章光照在Direct3D中,使用結(jié)構(gòu)體D3DLIGHT9定義各種類型光源的屬性。typedefstruct_D3DLIGHT9{D3DLIGHTTYPEType; //光源類型D3DCOLORVALUEDiffuse; //漫反射顏色D3DCOLORVALUESpecular; //鏡面反射顏色D3DCOLORVALUEAmbient; //環(huán)境光顏色D3DVECTORPosition; //位置D3DVECTORDirection; //方向floatRange; //方位floatFalloff; //光源內(nèi)外錐衰減floatAttenuation0; //距離衰減系數(shù)floatAttenuation1; //距離衰減系數(shù)floatAttenuation2; //距離衰減系數(shù)floatTheta; //內(nèi)錐floatPhi; //外錐}D3DLIGHT9;第25頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.3添加光源3.設(shè)置光源第5章光照光源類型不同,光源的屬性也不同。D3DLIGHT9d3dLight;memset(&d3dLight,0,sizeof(d3dLight));d3dLight.Type=D3DLIGHT_POINT;d3dLight.Diffuse.r=1.0f;d3dLight.Diffuse.g=1.0f;d3dLight.Diffuse.b=1.0f;d3dLight.Ambient.r=0.1f;d3dLight.Ambient.g=0.1f;d3dLight.Ambient.b=0.1f;d3dLight.Position.x=-300;d3dLight.Position.y=300;d3dLight.Position.z=-300;d3dLight.Attenuation0=1.0f; d3dLight.Attenuation1=0.0f;d3dLight.Attenuation2=0.0f;d3dLight.Range=400.0f;點(diǎn)光源第26頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.3添加光源3.設(shè)置光源第5章光照光源類型不同,光源的屬性也不同。D3DLIGHT9d3dLight;memset(&d3dLight,0,sizeof(d3dLight));d3dLight.Type=D3DLIGHT_DIRECTIONAL;d3dLight.Direction.x=1.0f;d3dLight.Direction.y=0.0f;d3dLight.Direction.z=0.0f;d3dLight.Diffuse.r=1.0f;d3dLight.Diffuse.g=1.0f;d3dLight.Diffuse.b=1.0f;//環(huán)境光d3dLight.Ambient.r=0.1f;d3dLight.Ambient.g=0.1f;d3dLight.Ambient.b=0.1f;平行光第27頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.3添加光源3.設(shè)置光源第5章光照光源類型不同,光源的屬性也不同。D3DLIGHT9d3dLight;memset(&d3dLight,0,sizeof(d3dLight));d3dLight.Type=D3DLIGHT_SPOT;d3dLight.Position.x =-300.0f;d3dLight.Position.y =300.0f;d3dLight.Position.z =-300.0f;d3dLight.Direction.x=1.0f;d3dLight.Direction.y=0.0f;d3dLight.Direction.z=0.0f;d3dLight.Diffuse.r=1.0f;d3dLight.Diffuse.g=1.0f;d3dLight.Diffuse.b=1.0f;聚光燈//環(huán)境光d3dLight.Ambient.r=0.0f;d3dLight.Ambient.g=0.0f;d3dLight.Ambient.b=0.0f;//鏡面反射d3dLight.Specular.r=0.0f;d3dLight.Specular.g =0.0f;d3dLight.Specular.b =0.0f;d3dLight.Attenuation0=1.0f;d3dLight.Attenuation1=0.0f;d3dLight.Attenuation2=0.0f;d3dLight.Range=100.0f;d3dLight.Phi=10.0f;d3dLight.Theta=1.0f;d3dLight.Falloff =1.0f;第28頁(yè)/共35頁(yè)5.3Direct3D中基本光照的實(shí)現(xiàn)5.3.4激活光照運(yùn)算第5章光照//m_pDevice為有效的Direct3D設(shè)備m_pDevice->SetRenderState(D3DRS_LIGHTING,TRUE)激活光照運(yùn)算//m_pDevice為有效的Direct3D設(shè)備//d3dLight為一個(gè)表示光源的指針m_pDevice->SetLight(0,&d3dLight);指定光源//m_pDevice為有效的Direct3D設(shè)備m_pDevice->LightEnable(1,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論