版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1d游戏设计游戏设计(shj)光照光照第一页,共35页。在三维图形(txng)程序中,所有的光照效果都能够通过一定的计算方式生成,这种计算的方式就被称为光照模型(Lighting Model)。在计算机图形学里,把光照模型分为3种:环境光、漫反射、镜面反射。复杂的光照模型可以由这3个分量组成,用公式表示为:ambientdiffusespecularIIII第1页/共35页第二页,共35页。一个物体即使没有直接被光源照射,但只要有光线(gungxin)通过其他物体的折射、反射到达物体,它也可能被看见。这种基于整个自然界环境的整体亮度,称为环境光。环境光没有空间上的位置和方向的特征,只有一
2、个颜色亮度值。环境光模型也被称为全局光照模型(Global Lighting Model)。ambientambientIS第2页/共35页第三页,共35页。漫反射光的空间位置和方向对物体的照明有很大影响。在漫反射光照中一个(y )物体的表面在所有方向上的反射都是一样的。第3页/共35页第四页,共35页。漫反射光照模型遵循Lambert定理,该定理认为(rnwi),对于理想漫反射的物体表面(完全不光滑并且没有光泽)来说,反射光由物体表面法线N和光向量L(从物体表面的点指向光源的向量)的夹角的余弦值决定。cosdiffusediffuseIS()diffusediffuseISLN第4页/共35
3、页第五页,共35页。观察一下金属物品或者玻璃制品(如玻璃杯)的表面(biomin),移动自己所处的观察点位置,可以发现玻璃杯表面(biomin)的亮度也在发生变化。这种现象往往发生在光滑物体表面(biomin)的高光反射中,称之为镜面反射(Specular Reflection)。第5页/共35页第六页,共35页。镜面反射的计算公式为:(cos)()ppspecularspecularspecularISSVR公式中的p表示物体表面镜面反射的光强度,可以看出(kn ch),V和R靠拢,反射光就越亮。第6页/共35页第七页,共35页。R表示反射光线向量(xingling),可以通过光向量(xin
4、gling)L与法线向量(xingling)N求出2()()2()RNL NLNL NL 第7页/共35页第八页,共35页。在一个场景中,决定光照的因素除了光源以外,还有物体的材质。物体表面材质属性决定了它能反射什么(shn me)颜色的光线以及能反射多少光线。物体的表面材质有很多材质参数,包括:环境反射、漫反射、镜面反射、光亮度(Power)和自发光(Emissive)。分别表示在各种光照模型下的反射系数。第8页/共35页第九页,共35页。引入材质(ci zh)后,物体表面的反射光计算公式变为:()()TotalAmbientDiffuseSpecularEmissiveambientamb
5、ientambientdiffusediffusediffusepspecularspecularspecularIIIIIImSImSLNImSVR第9页/共35页第十页,共35页。物体最终的颜色是几个(j )分量的颜色之和,在进行颜色的叠加时,由于各个RGB分量叠加的值可能会超出1,而最后渲染时需要将光照颜色压缩到0,1之间。在图形系统中,可以按照最大的分量对溢出颜色进行缩放,也可以通过限制给定分量对最终颜色的贡献量来避免颜色偏移。第10页/共35页第十一页,共35页。着色处理是计算光照并由此决定像素颜色的过程(guchng),主要存在3种类型的着色处理:Flat、Gouraud和Phon
6、g。这3种方法分别基于多边形、顶点和像素来计算光照效果。Flat着色处理也被称为扁平着色处理,它以三角形为单位进行颜色计算,然后用这种颜色对三角形进行填充。Flat着色处理第11页/共35页第十二页,共35页。Gouraud着色处理首先计算(j sun)三角形每个顶点的颜色,然后用顶点颜色通过插值来计算(j sun)三角形内部各个点(像素点)的光照。Gouraud着色处理第12页/共35页第十三页,共35页。Phong着色处理方法用三角形顶点处的法向量通过插值的方式计算(j sun)三角形内部各个点的法向量,再根据各个像素点的法向量重新计算(j sun)像素点的颜色。Phong着色处理第13页
7、/共35页第十四页,共35页。在物理学中,将能够发光的一切物体(wt)都叫光源。常见的光源可以分为3种:点光源、平行光、聚光灯。平行光源表示一个距离被照物体无穷远的光源,由光源发出的光线平行通过整个场景(或者说认为是平行的光线),平行光也可以称为方向光。平行光只有颜色和方向,没有发光位置。第14页/共35页第十五页,共35页。点光源具有特定的位置和颜色亮度(lingd),向四周所有的方向发出光线,通常也把点光源称为泛光灯(omni)或者球形光源(spherical light)。第15页/共35页第十六页,共35页。点光源的属性包括:位置、颜色(yns)、衰减半径以及衰减率。衰减半径说明了光照
8、的范围,光照强度在光源所处的位置(中心点)最高,向四周逐渐减弱,到达衰减半径的距离时光强变为0。minmaxminmaxmaxminmax10dif ddddIif dddddif dd 第16页/共35页第十七页,共35页。聚光灯和点光源被称为位置光源,因为它们都具有位置的属性(shxng),在空间中有一个明确的位置。聚光灯表示从空间的一个特定位置向特定的方向放射光子。第17页/共35页第十八页,共35页。聚光灯的属性是3种光源中最多的,包括位置(position)、方向(direction)、距离衰减因子(attenuation)、内半径(theta)、外半径(phi)以及内外锥衰减(fa
9、lloff)。可以把聚光灯光源看作由内外两个锥形组成,内部锥形中的光照强度最强,从内部锥形到外部锥形逐渐减弱,同时(tngsh),光照强度也受到距离的影响,距离光源位置越远,光照强度越弱。第18页/共35页第十九页,共35页。在进行光照计算时,需要顶点的法线。法线分为顶点法线和面法线,面法线垂直于面,在面法线的方向上是正面,背向(bi xin)面法线方向的是背面。顶点法线垂直于一个面,并且位于顶点之上,顶点法线说明了多边形表面的平滑程度。第19页/共35页第二十页,共35页。通常情况(qngkung)下,可以用三角形的面法线作为顶点法线。1212pABABpCBCBnpp /顺时针输入三角形3
10、个顶点,计算面法线。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(&tmpNormalVec,&tmpNormalVec);/单位化向量normalVec=(D3DVECTOR)
11、tmpNormalVec;第20页/共35页第二十一页,共35页。需要在顶点中添加(tin ji)法线的信息以便进行光照计算。struct CUBE_CUSTOMVERTEXFLOAT x, y, z;/顶点位置坐标FLOAT tu, tv/纹理坐标FLOAT nx, ny, nz;/顶点法线;/定义顶点格式#define CUBE_D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1|D3DFVF_NORMAL)第21页/共35页第二十二页,共35页。在Direct3D中,结构D3DMATERIAL9定义了物体的材质(ci zh)属性。typedef str
12、uct _D3DMATERIAL9 D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power; D3DMATERIAL9;TotalAmbientDiffuseSpecularEmissiveIIIII第22页/共35页第二十三页,共35页。设定好材质,需要(xyo)用函数SetMaterial指定材质HRESULT SetMaterial( CONST D3DMATERIAL9 *pMaterial/指向定义材质的指针);D3DMATERI
13、AL9 mtrl;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页第二十四页,共35页。在Direct3D中有3种光源类型(lixng):方向光(Directional Light)、点光源(Point Light)和聚光灯(Spot Light)。ty
14、pedef enum _D3DLIGHTTYPE D3DLIGHT_POINT = 1,/点光源 D3DLIGHT_SPOT = 2,/聚光灯 D3DLIGHT_DIRECTIONAL = 3,/直射光(或平行光) D3DLIGHT_FORCE_DWORD = 0 x7fffffff D3DLIGHTTYPE;第24页/共35页第二十五页,共35页。在Direct3D中,使用结构体D3DLIGHT9定义(dngy)各种类型光源的属性。typedef struct _D3DLIGHT9 D3DLIGHTTYPE Type;/光源类型 D3DCOLORVALUE Diffuse;/漫反射颜色 D3
15、DCOLORVALUE Specular;/镜面反射颜色 D3DCOLORVALUE Ambient;/环境光颜色 D3DVECTOR Position;/位置 D3DVECTOR Direction;/方向 float Range;/方位 float Falloff;/光源内外锥衰减 float Attenuation0;/距离衰减系数 float Attenuation1;/距离衰减系数 float Attenuation2;/距离衰减系数 float Theta;/内锥 float Phi;/外锥 D3DLIGHT9;第25页/共35页第二十六页,共35页。光源类型(lixng)不同,光
16、源的属性也不同。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.Position.x=-300;d3dLight.Position.y=300;d3dLight.Positi
17、on.z=-300;d3dLight.Attenuation0=1.0f;d3dLight.Attenuation1=0.0f;d3dLight.Attenuation2=0.0f;d3dLight.Range=400.0f;点光源第26页/共35页第二十七页,共35页。光源类型不同(b tn),光源的属性也不同(b tn)。D3DLIGHT9 d3dLight;memset(&d3dLight,0,sizeof(d3dLight);d3dLight.Type = D3DLIGHT_DIRECTIONAL;d3dLight.Direction.x = 1.0f;d3dLight.Directi
18、on.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.Ambient.b = 0.1f;平行光第27页/共35页第二十八页,共35页。光源类型不同(b tn),光源的属性也不同(b tn)。D3DLIGHT9 d3dLight;memset(&d3dLight,0,sizeof(d3dL
19、ight);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;聚光灯/环境光d3dLight.
20、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.The
21、ta = 1.0f;d3dLight.Falloff= 1.0f;第28页/共35页第二十九页,共35页。/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页第三十页,共35页。光照(gungzho)模型光源Direct3D中基本光照(gungzho)的实现第30页/共35页第三十一页,共35页。单选题单选题1下列选项中不属于光照模型概念的是(下列选项中不属于光照模型概念的是( )。)。A环境光环境光B漫反射漫反射 C镜面反射镜面反射 D聚光灯聚光灯2关于着色处理的类型,以下说法正确的是(关于着色处理的类型,以下说法正确的是( )。)。APhong着色处理速度最快着色处理速度最快BFlat着色处理最为真实着色处理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 具身智能+水下探测智能机器人系统分析方案
- 部编版小学数学五年级上册第7单元同步练习题及答案
- 高中英语教资面试完形填空专项试卷及解析
- 文旅岗2026事业单位面试模拟练习含答案配套答题思路
- 河北计算机岗2026结构化面试自测卷附答案
- 中小学校消防安全教育教学主题班会课件
- DB13-T 6346-2026 钢铁企业能碳计量器具配备和管理通 用要求
- 国开工程项目管理课程设计(广西)形成性作业1-4参考答案
- 中国铁塔-工业园区智慧消防解决方案
- 海南省三亚市定安县2026年中考猜题数学试卷含解析
- 低空空域资源合理配置与运行效率优化策略研究
- 2026年人工智能训练师(二级)实操技能综合试题及解析
- 尺神经松解术课件
- 储能方面培训
- 显微手足外科科普
- AI与3D打印融合的个性化智能医疗方案设计
- 包装设计案例汇报
- (2026年)实施指南《JBT 3233-2018 超硬磨料 钻探用人造金刚石聚晶》
- 胃癌中西医结合诊疗指南
- 土建消防安全培训内容课件
- 湖湘文化教学课件
评论
0/150
提交评论