第七章灯光与材.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章:灯光与材质 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 (聚光灯) 手电筒是聚光灯的好例子,它具有位置、方向、范围、发光内径和发光外径属性,光照强度还会随距离而衰减。下图(7.3)中,Theta是内径,Phi是外径。 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中我们移除了D3DFV

文档评论(0)

yx118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档