第七章灯光与材质.docVIP

  • 2
  • 0
  • 约7.67千字
  • 约 7页
  • 2018-01-19 发布于江苏
  • 举报
第七章灯光与材质

第七章:灯光与材质 Introduction (序) 新的一章又开始了,这一章,我们将学习DirectX中的灯光和材质。在例程中,我们将在原点附近创建四个旋转的立方体,在它们的中间(原点附近),我们会放置一个光源,你将会看到光照的效果是怎样形成的。 DirectX Lighting vs. Real World Lighting (DX光照 对 真实世界光照) 在DX中,我们能创建不同类型的光,使场景看起来更真实。但要记住,DX中的光只是在近似地模拟自然界的光。在自然界中,光由光源(如灯泡)发出,然后延直线传播,直到消耗完毕或传入眼睛;光在遇到物体时会发生反射,每次反射都会有能量的消耗;实际上,光可以在物体间反射千百万次,而且光滑表面会比不光滑的表面反射更多的光。这一切如果全算进来的话,计算量是巨大的,所以,DX只是在近似地模仿。 Attributes of a light (光的属性): 想要不同的光可以指定不同的属性,不是所有类型的光都拥有下面的这些属性: Position (位置) 这是在3D空间中光源的位置,例如(0, 10, 0)。 Direction (方向) 这是一个向量(例如(0, 1, 0)),表示从光源发射出来的光的方向。 Range (范围) 这是光从光源发出后所能到达的最大距离,范围以外的物体将不会接受到此光源的光。 Attenuation (衰减) 在光源到它的范围之间,光会逐渐衰减,这是很正常的。如果想要,你也可以指定让光不衰减,或反而越来越亮。 Diffuse Light (漫反射) 光的漫反射颜色。漫射光是分散的,但仍然具有方向,不像环境光没有方向。 Ambient Light (环境光) 这是环境光的颜色,它是通用的背景光,它是分散的且没有方向和光源,它充满整个场景。 Specular Light (镜面反射) 镜面反射的的颜色。它是相对于漫射光来说的,它根本不会分散,你可以用它在对象上创建高亮。 Types of lighting (光的类型): 在场景中共有四中类型的光可以被你创建,每种都有不同的行为与属性。 Ambient Light (环境光) 可以为场景指定通用的环境光,与其它灯光互不影响,用红、绿、蓝三个分量来设置颜色。 Point Light (点光源) 电光源的一个很好的例子就是灯泡,它没有方向(因为向全部方向发出),但是有颜色、范围和衰减。下面是图示(7.1)。 Fig 7.1 Directional Light (直射光) 直射光具有颜色,没有位置。举个例子应该是太阳,场景里的所有对象都会从同样的方向接收到同样的光。直射光也没有范围和衰减。下面是图示(7.2)。 Fig 7.2 Spotlight (聚光灯) 手电筒是聚光灯的好例子,它具有位置、方向、范围、发光内径和发光外径,光强度还会随距离衰减 Fig 7.3 所有的类型的光都会增加程序的负担,从小到大作负担排序:环境光、直射光、点光源、聚光灯。要记住在做程序时需要考虑这些。 Materials (材质) 材质用于描述对象(三角形)的反光性能,使它看起来有没有光泽和带有什么颜色。下面是描述材质的一些设置: Diffuse Reflection (漫反射) 物体的漫反射颜色,能使物体看起来是什么颜色。 Ambient Reflection (环境反射) 这也是一个颜色值,用于描述对象反射环境光的数量。你甚至可以指定它根本不反射环境光,这意味着它将不可见,除非接收到其它类型的光。 Specular Reflection and Power (镜面反射与高光强度) 镜面反射的值,可以用镜面反射和高光强度设置对象,使它看起来发亮。 Emission (放射) 使物体自发光,但不会影响到场景内的其它物体。 Normals (法线) 法线是垂直于三角形面的一个向量,它的方向是由三角形的顶点定义顺序所决定的。下图(7.4)演示了一个顺时针定义的三角形的及它的法线。顶点的法线一般均分它周围的三角形法线。下图(7.5)演示了4个三角形的横截面和它们的法线(亮红),同样也演示了3个顶点的法线(红)。本教程只把法线用于描述阴影(译者:还有其他用途)。 Fig 7.4 Fig 7.5 Implementing lights in DirectX (在DX中实现灯光) 在此章的代码中,我们设置了一个点光源,而且我们把环境光设置的很暗以突出它。 我们还设置了能使立方体棱角分明的法线,而且使材质没有高光。 Step 1: Modify FVF and Custom Vertex (修改FVF和自定义定点) 第一件有做的就是修改FVF和自定义定点结构。在FVF中我们移除了D3DFVF_DIFFUSE而替换为D3DFVF_NORMA

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档