欢迎来到天天文库
浏览记录
ID:11383299
大小:115.50 KB
页数:7页
时间:2018-07-11
《第七章灯光与材质》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、DirectXTutorialswww.andypike.comByAndyPike第七章:灯光与材质Introduction(序)新的一章又开始了,这一章,我们将学习DirectX中的灯光和材质。在例程中,我们将在原点附近创建四个旋转的立方体,在它们的中间(原点附近),我们会放置一个光源,你将会看到光照的效果是怎样形成的。DirectXLightingvs.RealWorldLighting(DX光照对真实世界光照)在DX中,我们能创建不同类型的光,使场景看起来更真实。但要记住,DX中的光只是在近似地模拟自然界的光。在自然界中,光由光源(
2、如灯泡)发出,然后延直线传播,直到消耗完毕或传入眼睛;光在遇到物体时会发生反射,每次反射都会有能量的消耗;实际上,光可以在物体间反射千百万次,而且光滑表面会比不光滑的表面反射更多的光。这一切如果全算进来的话,计算量是巨大的,所以,DX只是在近似地模仿。Attributesofalight(光的属性):想要不同的光可以指定不同的属性,不是所有类型的光都拥有下面的这些属性:Position(位置)这是在3D空间中光源的位置,例如(0,10,0)。Direction(方向)这是一个向量(例如(0,1,0)),表示从光源发射出来的光的方向。Rang
3、e(范围)这是光从光源发出后所能到达的最大距离,范围以外的物体将不会接受到此光源的光。Attenuation(衰减)在光源到它的范围之间,光会逐渐衰减,这是很正常的。如果想要,你也可以指定让光不衰减,或反而越来越亮。DiffuseLight(漫反射)光的漫反射颜色。漫射光是分散的,但仍然具有方向,不像环境光没有方向。AmbientLight(环境光)这是环境光的颜色,它是通用的背景光,它是分散的且没有方向和光源,它充满整个场景。SpecularLight(镜面反射)镜面反射的的颜色。它是相对于漫射光来说的,它根本不会分散,你可以用它在对象上
4、创建高亮。Typesoflighting(光的类型):在场景中共有四中类型的光可以被你创建,每种都有不同的行为与属性。AmbientLight(环境光)可以为场景指定通用的环境光,与其它灯光互不影响,用红、绿、蓝三个分量来设置颜色。PointLight(点光源)电光源的一个很好的例子就是灯泡,它没有方向(因为向全部方向发出),但是有颜色、范围和衰减。下面是图示(7.1)。-7-DirectXTutorialswww.andypike.comByAndyPikeFig7.1DirectionalLight(直射光)直射光具有颜色,没有位置。举
5、个例子应该是太阳,场景里的所有对象都会从同样的方向接收到同样的光。直射光也没有范围和衰减。下面是图示(7.2)。Fig7.2Spotlight(聚光灯)手电筒是聚光灯的好例子,它具有位置、方向、范围、发光内径和发光外径属性,光照强度还会随距离而衰减。下图(7.3)中,Theta是内径,Phi是外径。-7-DirectXTutorialswww.andypike.comByAndyPikeFig7.3所有的类型的光都会增加程序的负担,从小到大作负担排序:环境光、直射光、点光源、聚光灯。要记住在做程序时需要考虑这些。Materials(材质)材
6、质用于描述对象(三角形)的反光性能,使它看起来有没有光泽和带有什么颜色。下面是描述材质的一些设置:DiffuseReflection(漫反射)物体的漫反射颜色,能使物体看起来是什么颜色。AmbientReflection(环境反射)这也是一个颜色值,用于描述对象反射环境光的数量。你甚至可以指定它根本不反射环境光,这意味着它将不可见,除非接收到其它类型的光。SpecularReflectionandPower(镜面反射与高光强度)镜面反射的值,可以用镜面反射和高光强度设置对象,使它看起来发亮。Emission(放射)使物体自发光,但不会影响到
7、场景内的其它物体。Normals(法线)法线是垂直于三角形面的一个向量,它的方向是由三角形的顶点定义顺序所决定的。下图(7.4)演示了一个顺时针定义的三角形的及它的法线。顶点的法线一般均分它周围的三角形法线。下图(7.5)演示了4个三角形的横截面和它们的法线(亮红),同样也演示了3个顶点的法线(红)。本教程只把法线用于描述阴影(译者:还有其他用途)。Fig7.4Fig7.5-7-DirectXTutorialswww.andypike.comByAndyPikeImplementinglightsinDirectX(在DX中实现灯光)在此章
8、的代码中,我们设置了一个点光源,而且我们把环境光设置的很暗以突出它。我们还设置了能使立方体棱角分明的法线,而且使材质没有高光。Step1:ModifyFVFandCustomVe
此文档下载收益归作者所有