d游戏设计光照实用教案

上传人:鲁** 文档编号:568446711 上传时间:2024-07-24 格式:PPT 页数:36 大小:1.80MB
返回 下载 相关 举报
d游戏设计光照实用教案_第1页
第1页 / 共36页
d游戏设计光照实用教案_第2页
第2页 / 共36页
d游戏设计光照实用教案_第3页
第3页 / 共36页
d游戏设计光照实用教案_第4页
第4页 / 共36页
d游戏设计光照实用教案_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《d游戏设计光照实用教案》由会员分享,可在线阅读,更多相关《d游戏设计光照实用教案(36页珍藏版)》请在金锄头文库上搜索。

1、5.1光照(gungzho)模型5.1.1光照(gungzho)计算第5章光照(gungzho)在三维图形(txng)程序中,所有的光照效果都能够通过一定的计算方式生成,这种计算的方式就被称为光照模型(Lighting Model)。在计算机图形学里,把光照模型分为3种:环境光、漫反射、镜面反射。复杂的光照模型可以由这3个分量组成,用公式表示为:第1页/共35页第一页,共36页。5.1光照(gungzho)模型5.1.1光照(gungzho)计算1环境光(Ambient)第5章光照(gungzho)一个物体即使没有直接被光源照射,但只要有光线通过其他(qt)物体的折射、反射到达物体,它也可能被

2、看见。这种基于整个自然界环境的整体亮度,称为环境光。环境光没有空间上的位置和方向的特征,只有一个颜色亮度值。环境光模型也被称为全局光照模型(Global Lighting Model)。第2页/共35页第二页,共36页。5.1光照模型(mxng)5.1.1光照计算2漫反射(Diffuse)第5章光照(gungzho)漫反射光的空间位置和方向对物体(wt)的照明有很大影响。在漫反射光照中一个物体(wt)的表面在所有方向上的反射都是一样的。第3页/共35页第三页,共36页。5.1光照(gungzho)模型5.1.1光照(gungzho)计算2漫反射(Diffuse)第5章光照(gungzho)漫反

3、射光照模型遵循Lambert定理,该定理认为,对于理想漫反射的物体表面(完全不光滑并且没有光泽)来说,反射光由物体表面法线N和光向量(xingling)L(从物体表面的点指向光源的向量(xingling))的夹角的余弦值决定。第4页/共35页第四页,共36页。5.1光照模型(mxng)5.1.1光照计算3镜面反射(Specular)第5章光照(gungzho)观察一下金属(jnsh)物品或者玻璃制品(如玻璃杯)的表面,移动自己所处的观察点位置,可以发现玻璃杯表面的亮度也在发生变化。这种现象往往发生在光滑物体表面的高光反射中,称之为镜面反射(Specular Reflection)。第5页/共3

4、5页第五页,共36页。5.1光照(gungzho)模型5.1.1光照(gungzho)计算3镜面反射(Specular)第5章光照(gungzho)镜面反射的计算公式为:公式中的p表示物体表面(biomin)镜面反射的光强度,可以看出,V和R靠拢,反射光就越亮。第6页/共35页第六页,共36页。5.1光照(gungzho)模型5.1.1光照(gungzho)计算3镜面反射(Specular)第5章光照(gungzho)R表示反射光线(gungxin)向量,可以通过光向量L与法线向量N求出第7页/共35页第七页,共36页。5.1光照(gungzho)模型5.1.2着色处理1材质第5章光照(gun

5、gzho)在一个场景中,决定光照的因素除了光源以外(ywi),还有物体的材质。物体表面材质属性决定了它能反射什么颜色的光线以及能反射多少光线。物体的表面材质有很多材质参数,包括:环境反射、漫反射、镜面反射、光亮度(Power)和自发光(Emissive)。分别表示在各种光照模型下的反射系数。第8页/共35页第八页,共36页。5.1光照(gungzho)模型5.1.2着色处理1材质第5章光照(gungzho)引入材质(ci zh)后,物体表面的反射光计算公式变为:第9页/共35页第九页,共36页。5.1光照模型(mxng)5.1.2着色处理1材质第5章光照(gungzho)物体(wt)最终的颜色

6、是几个分量的颜色之和,在进行颜色的叠加时,由于各个RGB分量叠加的值可能会超出1,而最后渲染时需要将光照颜色压缩到0,1之间。在图形系统中,可以按照最大的分量对溢出颜色进行缩放,也可以通过限制给定分量对最终颜色的贡献量来避免颜色偏移。第10页/共35页第十页,共36页。5.1光照模型5.1.2着色(zhus)处理2着色(zhus)处理第5章光照(gungzho)着色处理是计算光照并由此决定像素颜色的过程,主要存在3种类型的着色处理:Flat、Gouraud和Phong。这3种方法分别基于多边形、顶点(dngdin)和像素来计算光照效果。Flat着色处理也被称为扁平着色处理,它以三角形为单位进行

7、颜色计算,然后用这种颜色对三角形进行填充。Flat着色处理第11页/共35页第十一页,共36页。5.1光照(gungzho)模型5.1.2着色处理2着色处理第5章光照(gungzho)Gouraud着色处理(chl)首先计算三角形每个顶点的颜色,然后用顶点颜色通过插值来计算三角形内部各个点(像素点)的光照。Gouraud 着色处理第12页/共35页第十二页,共36页。5.1光照模型5.1.2着色(zhus)处理2着色(zhus)处理第5章光照(gungzho)Phong着色处理方法用三角形顶点处的法向量通过插值的方式计算三角形内部各个(gg)点的法向量,再根据各个(gg)像素点的法向量重新计算

8、像素点的颜色。Phong着色处理第13页/共35页第十三页,共36页。5.2光源(gungyun)5.2.1平行光(DirectionalLight)第5章光照(gungzho)在物理学中,将能够发光(f un)的一切物体都叫光源。常见的光源可以分为3种:点光源、平行光、聚光灯。平行光源表示一个距离被照物体无穷远的光源,由光源发出的光线平行通过整个场景(或者说认为是平行的光线),平行光也可以称为方向光。平行光只有颜色和方向,没有发光位置。第14页/共35页第十四页,共36页。5.2光源(gungyun)5.2.2点光源(gungyun)(PointLight)第5章光照(gungzho)点光源

9、具有特定的位置和颜色亮度,向四周所有的方向发出光线(gungxin),通常也把点光源称为泛光灯(omni)或者球形光源(spherical light)。第15页/共35页第十五页,共36页。5.2光源(gungyun)5.2.2点光源(gungyun)(PointLight)第5章光照(gungzho)点光源的属性包括:位置(wi zhi)、颜色、衰减半径以及衰减率。衰减半径说明了光照的范围,光照强度在光源所处的位置(中心点)最高,向四周逐渐减弱,到达衰减半径的距离时光强变为0。第16页/共35页第十六页,共36页。5.2光源(gungyun)5.2.3聚光灯(SpotLight)第5章光照

10、(gungzho)聚光灯和点光源被称为位置光源,因为它们都具有位置的属性,在空间中有一个明确(mngqu)的位置。聚光灯表示从空间的一个特定位置向特定的方向放射光子。第17页/共35页第十七页,共36页。5.2光源(gungyun)5.2.3聚光灯(SpotLight)第5章光照(gungzho)聚光灯的属性是3种光源中最多的,包括位置(position)、方向(direction)、距离衰减(shui jin)因子(attenuation)、内半径(theta)、外半径(phi)以及内外锥衰减(shui jin)(falloff)。可以把聚光灯光源看作由内外两个锥形组成,内部锥形中的光照强度

11、最强,从内部锥形到外部锥形逐渐减弱,同时,光照强度也受到距离的影响,距离光源位置越远,光照强度越弱。第18页/共35页第十八页,共36页。5.3Direct3D中基本光照的实现(shxin)5.3.1顶点设计1法线计算第5章光照(gungzho)在进行光照计算时,需要(xyo)顶点的法线。法线分为顶点法线和面法线,面法线垂直于面,在面法线的方向上是正面,背向面法线方向的是背面。顶点法线垂直于一个面,并且位于顶点之上,顶点法线说明了多边形表面的平滑程度。第19页/共35页第十九页,共36页。5.3Direct3D中基本光照的实现5.3.1顶点(dngdin)设计1法线计算第5章光照(gungzh

12、o)通常(tngchng)情况下,可以用三角形的面法线作为顶点法线。/顺时针输入三角形3个顶点,计算面法线。void ComputeTriNormal(D3DXVECTOR3& v1, D3DXVECTOR3& v2, D3DXVECTOR3& v3,D3DVECTOR& normalVec)D3DXVECTOR3 tmpV1=v1-v2;D3DXVECTOR3 tmpV2=v1-v3;D3DXVECTOR3 tmpNormalVec;D3DXVec3Cross(&tmpNormalVec, &tmpV1, &tmpV2);/向量叉乘D3DXVec3Normalize(&tmpNormalVe

13、c,&tmpNormalVec);/单位化向量normalVec=(D3DVECTOR)tmpNormalVec;第20页/共35页第二十页,共36页。5.3Direct3D中基本( jbn)光照的实现5.3.1顶点设计2顶点格式第5章光照(gungzho)需要在顶点中添加法线(f xin)的信息以便进行光照计算。struct CUBE_CUSTOMVERTEXFLOAT x, y, z;/顶点位置坐标FLOAT tu, tv/纹理坐标FLOAT nx, ny, nz;/顶点法线;/定义顶点格式#define CUBE_D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFV

14、F_TEX1|D3DFVF_NORMAL)第21页/共35页第二十一页,共36页。5.3Direct3D中基本光照(gungzho)的实现5.3.2设置物体材质第5章光照(gungzho)在Direct3D中,结构D3DMATERIAL9定义了物体的材质(ci zh)属性。typedef struct _D3DMATERIAL9 D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power; D3DMATERIAL9;第22页/共35页第二十二页

15、,共36页。5.3Direct3D中基本光照的实现5.3.2设置(shzh)物体材质第5章光照(gungzho)设定好材质(ci zh),需要用函数SetMaterial指定材质(ci zh)HRESULT SetMaterial( CONST D3DMATERIAL9 *pMaterial/指向定义材质的指针);D3DMATERIAL9 mtrl;ZeroMemory( &mtrl , sizeof(D3DMATERIAL9);mtrl.Diffuse.r = 0.8f;mtrl.Diffuse.g = 0.6f;mtrl.Diffuse.b = 0.5f;mtrl.Diffuse.a =

16、1.0f;/m_pD3DDevice为有效的Direct3D设备m_pD3DDevice-SetMaterial(&mtrl);第23页/共35页第二十三页,共36页。5.3Direct3D中基本光照的实现5.3.3添加光源(gungyun)1光源(gungyun)类型第5章光照(gungzho)在Direct3D中有3种光源(gungyun)类型:方向光(Directional Light)、点光源(gungyun)(Point Light)和聚光灯(Spot Light)。typedef enum _D3DLIGHTTYPE D3DLIGHT_POINT = 1,/点光源 D3DLIGHT

17、_SPOT = 2,/聚光灯 D3DLIGHT_DIRECTIONAL = 3,/直射光(或平行光) D3DLIGHT_FORCE_DWORD = 0x7fffffff D3DLIGHTTYPE;第24页/共35页第二十四页,共36页。5.3Direct3D中基本光照的实现5.3.3添加(tinji)光源2光源属性第5章光照(gungzho)在Direct3D中,使用(shyng)结构体D3DLIGHT9定义各种类型光源的属性。typedef struct _D3DLIGHT9 D3DLIGHTTYPE Type;/光源类型 D3DCOLORVALUE Diffuse;/漫反射颜色 D3DCO

18、LORVALUE Specular;/镜面反射颜色 D3DCOLORVALUE Ambient;/环境光颜色 D3DVECTOR Position;/位置 D3DVECTOR Direction;/方向 float Range;/方位 float Falloff;/光源内外锥衰减 float Attenuation0;/距离衰减系数 float Attenuation1;/距离衰减系数 float Attenuation2;/距离衰减系数 float Theta;/内锥 float Phi;/外锥 D3DLIGHT9;第25页/共35页第二十五页,共36页。5.3Direct3D中基本( jb

19、n)光照的实现5.3.3添加光源3设置光源第5章光照(gungzho)光源类型不同(b tn),光源的属性也不同(b tn)。D3DLIGHT9 d3dLight;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.

20、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页第二十六页,共36页。5.3Direct3D中基本光照的实现5.3.3添加(tinji)光源3设置光源第5章光照(gungzho)光源(gungyun)类型不同,光源(gungyun)的属性也不同。D3DLIGHT9 d3dLight;me

21、mset(&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;/环境光d3dLight.Ambient.r = 0.1f;d3dLight.Ambient.g = 0.1f;d3dLight.Am

22、bient.b = 0.1f;平行光第27页/共35页第二十七页,共36页。5.3Direct3D中基本光照的实现5.3.3添加光源(gungyun)3设置光源(gungyun)第5章光照(gungzho)光源(gungyun)类型不同,光源(gungyun)的属性也不同。D3DLIGHT9 d3dLight;memset(&d3dLight,0,sizeof(d3dLight);d3dLight.Type = D3DLIGHT_SPOT;d3dLight.Position.x = -300.0f;d3dLight.Position.y= 300.0f;d3dLight.Position.z=

23、 -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;聚光灯/环境光d3dLight.Ambient.r = 0.0f;d3dLight.Ambient.g = 0.0f;d3dLight.Ambient.b = 0.0f;/镜面反射d3dLight.Specular.r = 0.0f;d3dLight.Spe

24、cular.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页第二十八页,共36页。5.3Direct3D中基本光照(gungzho)的实现5.3.4激活光照(gungzho)运算第5章光照(gungzh

25、o)/m_pDevice为有效(yuxio)的Direct3D设备m_pDevice-SetRenderState(D3DRS_LIGHTING, TRUE)激活光照运算/m_pDevice为有效的Direct3D设备/d3dLight为一个表示光源的指针m_pDevice-SetLight(0,&d3dLight);指定光源/m_pDevice为有效的Direct3D设备m_pDevice-LightEnable(1, TRUE); /使能灯光打开光源第29页/共35页第二十九页,共36页。小结(xioji)(理论课)第5章光照(gungzho)光照模型(mxng)光源Direct3D中基本

26、光照的实现第30页/共35页第三十页,共36页。小测验(题目(tm)部分)第5章光照(gungzho)单选题单选题1下列选项中不属于光照模型概念的是(下列选项中不属于光照模型概念的是( )。)。A环境光环境光B漫反射漫反射 C镜面反射镜面反射 D聚光灯聚光灯2关于着色关于着色(zhu s)处理的类型,以下说法正确的是(处理的类型,以下说法正确的是( )。)。APhong着色着色(zhu s)处理速度最快处理速度最快BFlat着色着色(zhu s)处理最为真实处理最为真实CFlat着色着色(zhu s)处理用顶点颜色进行插值运算,得到多边形内部的像素颜处理用顶点颜色进行插值运算,得到多边形内部的

27、像素颜色色D. Phong着色着色(zhu s)处理需要单独计算各个像素点的光照处理需要单独计算各个像素点的光照3在在Direct3D中,点光源不具备的属性是(中,点光源不具备的属性是( )。)。A方向方向B颜色颜色C范围范围D位置位置第31页/共35页第三十一页,共36页。小测验(答案(dn)部分)第5章光照(gungzho)单选题单选题1下列选项中不属于光照模型概念的是(下列选项中不属于光照模型概念的是( D )。)。A环境光环境光 B漫反射漫反射 C镜面反射镜面反射 D聚光灯聚光灯2关于着色处理的类型关于着色处理的类型(lixng),以下说法正确的是(,以下说法正确的是( D )。)。A

28、Phong着色处理速度最快着色处理速度最快BFlat着色处理最为真实着色处理最为真实CFlat着色处理用顶点颜色进行插值运算,得到多边形内部的像素颜色着色处理用顶点颜色进行插值运算,得到多边形内部的像素颜色D. Phong着色处理需要单独计算各个像素点的光照着色处理需要单独计算各个像素点的光照3在在Direct3D中,点光源不具备的属性是(中,点光源不具备的属性是( A )。)。A方向方向B颜色颜色C范围范围D位置位置第32页/共35页第三十二页,共36页。课后作业(zuy)第5章光照(gungzho)【作业【作业(zuy)1】制作霓虹灯】制作霓虹灯思路分析:利用点光源或者聚光灯,设计光源的颜

29、色和位置属性随着时间而变化。思路分析:利用点光源或者聚光灯,设计光源的颜色和位置属性随着时间而变化。第33页/共35页第三十三页,共36页。第5章光照(gungzho)The End第34页/共35页第三十四页,共36页。感谢您的欣赏(xnshng)!第35页/共35页第三十五页,共36页。内容(nirng)总结5.1 光照模型。在三维图形程序(chngx)中,所有的光照效果都能够通过一定的计算方式生成,这种计算的方式就被称为光照模型(Lighting Model)。一个物体即使没有直接被光源照射,但只要有光线通过其他物体的折射、反射到达物体,它也可能被看见。环境光模型也被称为全局光照模型(Global Lighting Model)。常见的光源可以分为3种:点光源、平行光、聚光灯第三十六页,共36页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号