您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > D3D游戏开发02_4(上)
Direct3D客户端游戏开发本章要点:Direct3D客户端游戏开发光源类型和光源属性设置场景中的光源光照光源类型光源是指三维场景中具体的灯光,包括位置、方向、强度等信息。注意光照计算模型(简称光照模型)和光源类型的区别。光照模型说明图形工作系统以什么样的方法计算灯光照射在物体上的颜色值,它只是一种计算方法,而不是具体的灯光。D3D中的光源Direct3D游戏开发光照光源类型我们要做的是在场景中放置不同类型的光源,近似的模拟自然界的光源,由DirectX替我们生成不同类型的光,使场景显得更加的真实。D3D中的光源Direct3D游戏开发光源类型:方向光(D3DLIGHT_SPOT)点光源(D3DLIGHT_POINT)聚光灯(D3DLIGHT_DIRECTIONAL)Direct3D中以枚举类型D3DLIGHTTYPE表示。光照光源类型D3D中的光源Direct3D游戏开发方向光,只有颜色和方向,没有发光位置,光线以互相平行的方式通过整个场景,且不会因距离而减弱。方向光举例:太阳光。方向光计算量小,应用方向光,较少耗用系统资源。光照光源类型1.方向光(DirectionalLight)D3D中的光源Direct3D游戏开发光照光源类型1.方向光(DirectionalLight)D3D中的光源Direct3D游戏开发点光源,有特定的位置和颜色亮度,向所有方向放出光线。光的亮度会随着距离而衰减。点光源举例:电灯泡。点光源需要根据具体位置计算衰减,耗用系统资源多。光照光源类型2.点光源(PointLight)D3D中的光源Direct3D游戏开发光照光源类型2.点光源(PointLight)D3D中的光源Direct3D游戏开发聚光灯,有特定的位置和颜色亮度,发出的光由最亮的内部锥形组成,并从内部锥形到外部锥形逐渐减弱。这种光不仅会随着距离物体的远近而衰减,还会因受照射物体与聚光灯所成的角度不同而衰减。聚光灯举例:台灯或者汽车前灯。聚光灯是Direct3D中计算量最大的一种光源,应谨慎使用。光照光源类型3.聚光灯(Light)D3D中的光源Direct3D游戏开发光照光源类型3.聚光灯(Light)D3D中的光源Direct3D游戏开发8.2光照8.2.3光源属性光源属性包括光源的位置、方向、颜色和衰减范围等,程序里使用结构D3DLIGHT9定义:D3D中的光源Direct3D游戏开发typedefstruct_D3DLIGHT9{D3DLIGHTTYPEType;//光的类型D3DCOLORVALUEDiffuse;//漫反射D3DCOLORVALUESpecular;//镜面反射D3DCOLORVALUEAmbient;//环境光D3DVECTORPosition;//光的位置D3DVECTORDirection;//光的方向floatRang;//光的范围floatFalloff;//光的内外锥形衰退floatAttennation0;//光的距离衰减系数floatAttenuation1;floatAttenuation2;floatTheta;//聚光灯内部锥形角度floatPhi;//聚光灯外部锥形角度}D3DLIGHT9;8.2光照8.2.3光源属性D3D中的光源Direct3D游戏开发光照光源属性1.光的类型:Type枚举类型D3DLIGHTTYPE包含了光的3种类型:方向光、点光源和聚光灯。方向光(D3DLIGHT_SPOT)点光源(D3DLIGHT_POINT)聚光灯(D3DLIGHT_DIRECTIONAL)D3D中的光源Direct3D游戏开发Ambient(环境光)、Diffuse(漫反射)、Specular(镜面反射)分别表示光在以不同的光照模型计算时的光源颜色,一个光源可能同时具有3种光照模型,这时,顶点光照的颜色I就是3种光照结果的叠加:I=IAmbient+IDiffuse+ISpecular在D3DLIGHT9中光的颜色为D3DLIGHTTYPE类型,RGB的取值为0~1.0f。光照光源属性2.光的颜色:Ambient、Diffuse、SpecularD3D中的光源Direct3D游戏开发光照光源属性3.光的位置:PositionPosition指明光源在世界空间的三维坐标。方向光不具有位置属性,在光照计算中将忽略Position成员。D3D中的光源Direct3D游戏开发光照光源属性4.光的方向:Direction光的方向只在定义方向光和聚光灯时使用,Direction是一个三维的向量,我们在定义Direction时应该将它单位化。D3D中的光源Direct3D游戏开发光照光源属性5.光的范围:RangeRange表示光源可以照亮的距离范围,物体大于这个距离将不受光的影响。方向光没有Range属性。D3D中的光源Direct3D游戏开发光照光源属性6.光的内外锥形衰退:FalloffFalloff是聚光灯的特有属性,它表示从光的内部锥形到外部锥形的衰退。光强在内部锥形处最大,外部锥形处最小。Falloff=1.0时,衰减曲线呈线性变化,这时光照计算对系统的影响最小,因此大多数图形显示程序把Falloff设为1。D3D中的光源Direct3D游戏开发光照光源属性7.光的距离衰减系数:Attenuation0、Attenuationl、Attenuation2Attenuation0、Attenuationl、Attenuation2分别表示光的常量、线性、2次距离衰减系数,衰减公式为:Atten=1/(Attenuation0+Attenuationl∙d+Attenuation2∙d2)d为计算光照物体顶点与光源的距离。物体距离光源越远,它的亮度越小。距离衰减系数仅在点光源和聚光灯中有效。D3D中的光源Direct3D游戏开发光照光源属性8.聚光灯内部锥形角度:Theta光线在角度为Theta(以弧度表示)的锥形中最亮。D3D中的光源Direct3D游戏开发光照光源属性9.聚光灯外部锥形角度:Phi光线从内部锥形到角度为Phi(以弧度表示)的外部锥形逐渐衰退,外部锥形以外不受光。D3D中的光源Direct3D游戏开发1.Direct3D中的光照模型就是光源类型。()2.光源类型试图模拟自然界各种真实的光源。()3.光源类型在程序中以D3DLIGHT9表示。()4.方向光有发光位置,没有衰减。()5.点光源没有方向,有衰减。()6.聚光灯的发光外锥形角度为Theta。()7.聚光灯的光强在内锥形以内强度不变。()课堂练习:(判断题)D3D中的光源Direct3D游戏开发1.Direct3D中的光照模型就是光源类型。(F)2.光源类型试图模拟自然界各种真实的光源。(T)3.光源类型在程序中以D3DLIGHT9表示。(F)4.方向光有发光位置,没有衰减。(F)5.点光源没有方向,有衰减。(T)6.聚光灯的发光外锥形角度为Theta。(F)7.聚光灯的光强在内锥形以内强度不变。(T)课堂练习:(判断题答案)D3D中的光源Direct3D游戏开发小结:D3D中的光源光源的类型光源的属性D3D中的光源Direct3D游戏开发编程题:应用D3D中的三种光源类型,给场景中的物体加上灯光。课后作业:D3D中的光源Direct3D游戏开发
本文标题:D3D游戏开发02_4(上)
链接地址:https://www.777doc.com/doc-3217994 .html