




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1d游戲設計光照5.1光照模型5.1.1光照計算第5章光照在三維圖形程序中,所有的光照效果都能夠通過一定的計算方式生成,這種計算的方式就被稱為光照模型(LightingModel)。在計算機圖形學里,把光照模型分為3種:環(huán)境光、漫反射、鏡面反射。復雜的光照模型可以由這3個分量組成,用公式表示為:第1頁/共35頁5.1光照模型5.1.1光照計算1.環(huán)境光(Ambient)第5章光照一個物體即使沒有直接被光源照射,但只要有光線通過其他物體的折射、反射到達物體,它也可能被看見。這種基于整個自然界環(huán)境的整體亮度,稱為環(huán)境光。環(huán)境光沒有空間上的位置和方向的特征,只有一個顏色亮度值。環(huán)境光模型也被稱為全局光照模型(GlobalLightingModel)。第2頁/共35頁5.1光照模型5.1.1光照計算2.漫反射(Diffuse)第5章光照漫反射光的空間位置和方向對物體的照明有很大影響。在漫反射光照中一個物體的表面在所有方向上的反射都是一樣的。第3頁/共35頁5.1光照模型5.1.1光照計算2.漫反射(Diffuse)第5章光照漫反射光照模型遵循Lambert定理,該定理認為,對于理想漫反射的物體表面(完全不光滑并且沒有光澤)來說,反射光由物體表面法線N和光向量L(從物體表面的點指向光源的向量)的夾角的余弦值決定。第4頁/共35頁5.1光照模型5.1.1光照計算3.鏡面反射(Specular)第5章光照觀察一下金屬物品或者玻璃制品(如玻璃杯)的表面,移動自己所處的觀察點位置,可以發(fā)現(xiàn)玻璃杯表面的亮度也在發(fā)生變化。這種現(xiàn)象往往發(fā)生在光滑物體表面的高光反射中,稱之為鏡面反射(SpecularReflection)。第5頁/共35頁5.1光照模型5.1.1光照計算3.鏡面反射(Specular)第5章光照鏡面反射的計算公式為:公式中的p表示物體表面鏡面反射的光強度,可以看出,V和R靠攏,反射光就越亮。第6頁/共35頁5.1光照模型5.1.1光照計算3.鏡面反射(Specular)第5章光照R表示反射光線向量,可以通過光向量L與法線向量N求出第7頁/共35頁5.1光照模型5.1.2著色處理1.材質第5章光照在一個場景中,決定光照的因素除了光源以外,還有物體的材質。物體表面材質屬性決定了它能反射什么顏色的光線以及能反射多少光線。物體的表面材質有很多材質參數(shù),包括:環(huán)境反射、漫反射、鏡面反射、光亮度(Power)和自發(fā)光(Emissive)。分別表示在各種光照模型下的反射系數(shù)。第8頁/共35頁5.1光照模型5.1.2著色處理1.材質第5章光照引入材質后,物體表面的反射光計算公式變?yōu)椋旱?頁/共35頁5.1光照模型5.1.2著色處理1.材質第5章光照物體最終的顏色是幾個分量的顏色之和,在進行顏色的疊加時,由于各個RGB分量疊加的值可能會超出1,而最后渲染時需要將光照顏色壓縮到[0,1]之間。在圖形系統(tǒng)中,可以按照最大的分量對溢出顏色進行縮放,也可以通過限制給定分量對最終顏色的貢獻量來避免顏色偏移。第10頁/共35頁5.1光照模型5.1.2著色處理2.著色處理第5章光照著色處理是計算光照并由此決定像素顏色的過程,主要存在3種類型的著色處理:Flat、Gouraud和Phong。這3種方法分別基于多邊形、頂點和像素來計算光照效果。Flat著色處理也被稱為扁平著色處理,它以三角形為單位進行顏色計算,然后用這種顏色對三角形進行填充。Flat著色處理第11頁/共35頁5.1光照模型5.1.2著色處理2.著色處理第5章光照Gouraud著色處理首先計算三角形每個頂點的顏色,然后用頂點顏色通過插值來計算三角形內部各個點(像素點)的光照。Gouraud著色處理第12頁/共35頁5.1光照模型5.1.2著色處理2.著色處理第5章光照Phong著色處理方法用三角形頂點處的法向量通過插值的方式計算三角形內部各個點的法向量,再根據(jù)各個像素點的法向量重新計算像素點的顏色。Phong著色處理第13頁/共35頁5.2光源5.2.1平行光(DirectionalLight)第5章光照在物理學中,將能夠發(fā)光的一切物體都叫光源。常見的光源可以分為3種:點光源、平行光、聚光燈。平行光源表示一個距離被照物體無窮遠的光源,由光源發(fā)出的光線平行通過整個場景(或者說認為是平行的光線),平行光也可以稱為方向光。平行光只有顏色和方向,沒有發(fā)光位置。第14頁/共35頁5.2光源5.2.2點光源(PointLight)第5章光照點光源具有特定的位置和顏色亮度,向四周所有的方向發(fā)出光線,通常也把點光源稱為泛光燈(omni)或者球形光源(sphericallight)。第15頁/共35頁5.2光源5.2.2點光源(PointLight)第5章光照點光源的屬性包括:位置、顏色、衰減半徑以及衰減率。衰減半徑說明了光照的范圍,光照強度在光源所處的位置(中心點)最高,向四周逐漸減弱,到達衰減半徑的距離時光強變?yōu)?。第16頁/共35頁5.2光源5.2.3聚光燈(SpotLight)第5章光照聚光燈和點光源被稱為位置光源,因為它們都具有位置的屬性,在空間中有一個明確的位置。聚光燈表示從空間的一個特定位置向特定的方向放射光子。第17頁/共35頁5.2光源5.2.3聚光燈(SpotLight)第5章光照聚光燈的屬性是3種光源中最多的,包括位置(position)、方向(direction)、距離衰減因子(attenuation)、內半徑(theta)、外半徑(phi)以及內外錐衰減(falloff)。可以把聚光燈光源看作由內外兩個錐形組成,內部錐形中的光照強度最強,從內部錐形到外部錐形逐漸減弱,同時,光照強度也受到距離的影響,距離光源位置越遠,光照強度越弱。第18頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.1頂點設計1.法線計算第5章光照在進行光照計算時,需要頂點的法線。法線分為頂點法線和面法線,面法線垂直于面,在面法線的方向上是正面,背向面法線方向的是背面。頂點法線垂直于一個面,并且位于頂點之上,頂點法線說明了多邊形表面的平滑程度。第19頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.1頂點設計1.法線計算第5章光照通常情況下,可以用三角形的面法線作為頂點法線。//順時針輸入三角形3個頂點,計算面法線。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頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.1頂點設計2.頂點格式第5章光照需要在頂點中添加法線的信息以便進行光照計算。structCUBE_CUSTOMVERTEX{ FLOATx,y,z; //頂點位置坐標
FLOATtu,tv //紋理坐標
FLOATnx,ny,nz; //頂點法線 };//定義頂點格式#defineCUBE_D3DFVF_CUSTOMVERTEX\ (D3DFVF_XYZ|D3DFVF_TEX1|D3DFVF_NORMAL)第21頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.2設置物體材質第5章光照在Direct3D中,結構D3DMATERIAL9定義了物體的材質屬性。typedefstruct_D3DMATERIAL9{D3DCOLORVALUEDiffuse;D3DCOLORVALUEAmbient;D3DCOLORVALUESpecular;D3DCOLORVALUEEmissive;floatPower;}D3DMATERIAL9;第22頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.2設置物體材質第5章光照設定好材質,需要用函數(shù)SetMaterial指定材質HRESULTSetMaterial(CONSTD3DMATERIAL9*pMaterial //指向定義材質的指針);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設備m_pD3DDevice->SetMaterial(&mtrl);第23頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.3添加光源1.光源類型第5章光照在Direct3D中有3種光源類型:方向光(DirectionalLight)、點光源(PointLight)和聚光燈(SpotLight)。typedefenum_D3DLIGHTTYPE{D3DLIGHT_POINT=1, //點光源
D3DLIGHT_SPOT=2, //聚光燈
D3DLIGHT_DIRECTIONAL=3, //直射光(或平行光)
D3DLIGHT_FORCE_DWORD=0x7fffffff}D3DLIGHTTYPE;第24頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.3添加光源2.光源屬性第5章光照在Direct3D中,使用結構體D3DLIGHT9定義各種類型光源的屬性。typedefstruct_D3DLIGHT9{D3DLIGHTTYPEType; //光源類型D3DCOLORVALUEDiffuse; //漫反射顏色D3DCOLORVALUESpecular; //鏡面反射顏色D3DCOLORVALUEAmbient; //環(huán)境光顏色D3DVECTORPosition; //位置D3DVECTORDirection; //方向floatRange; //方位floatFalloff; //光源內外錐衰減floatAttenuation0; //距離衰減系數(shù)floatAttenuation1; //距離衰減系數(shù)floatAttenuation2; //距離衰減系數(shù)floatTheta; //內錐floatPhi; //外錐}D3DLIGHT9;第25頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.3添加光源3.設置光源第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;點光源第26頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.3添加光源3.設置光源第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頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.3添加光源3.設置光源第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頁/共35頁5.3Direct3D中基本光照的實現(xiàn)5.3.4激活光照運算第5章光照//m_pDevice為有效的Direct3D設備m_pDevice->SetRenderState(D3DRS_LIGHTING,TRUE)激活光照運算//m_pDevice為有效的Direct3D設備//d3dLight為一個表示光源的指針m_pDevice->SetLight(0,&d3dLight);指定光源//m_pDevice為有效的Direct3D設備m_pDevice->LightEnable(1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乙肝病毒母嬰傳播阻斷與乙肝疫苗低無應答的免疫預防策略優(yōu)化研究
- 2025年中國重卡汽車行業(yè)發(fā)展趨勢預測及投資戰(zhàn)略咨詢報告
- 2020-2025年中國智慧牧場市場運營態(tài)勢及發(fā)展前景預測報告
- 窗簾配件項目投資可行性研究分析報告(2024-2030版)
- 2024年中國復方莪術油行業(yè)調查報告
- 2025年中國微咸水處理行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報告
- 2025年中國銀耳粉行業(yè)市場調查研究及投資前景預測報告
- 2025年中國自動搬運車行業(yè)市場前景預測及投資戰(zhàn)略研究報告
- 2025年中國接駁皮帶機行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 電器底板行業(yè)深度研究分析報告(2024-2030版)
- 多功能呼吸機項目安全風險評價報告
- 2025年法律碩士入學考試試題及答案
- 2025年黑龍江、吉林、遼寧、內蒙古高考生物真題試卷(解析版)
- 2025年藝術與數(shù)字藝術類事業(yè)單位招聘考試綜合類專業(yè)能力測試試卷
- 福建省泉州市晉江市2025屆數(shù)學七下期末調研試題含解析
- GB 35181-2025重大火災隱患判定規(guī)則
- 2025至2030年中國鋼結構制品行業(yè)投資前景及策略咨詢研究報告
- 山西省運城市2025年中考一模語文試題(含答案)
- 2025河南中考:政治必背知識點
- 2024年貴州省普通高校招生信息表(普通類本科批-物理組合)
- GB/T 44570-2024塑料制品聚碳酸酯板材
評論
0/150
提交評論