网站大量收购独家精品文档,联系QQ:2885784924

光影对映和环境对映9.docVIP

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

11. 光影对映和环境对映 Microsoft Direct3D立即模式提供两种能大幅增进您游戏及模拟3D绘图真实感的功能:光影对映和环境对映。您会在本章中学习这些技术所能产生的视觉效果,并且看到如何在程序中进行实作。 光影对映   光影对映(light mapping)是对已经有底色或基底贴图的形状套用包含光影信息的贴图(单色或彩色)的程序。Direct3D需要很细的网格来计算顶点光影(vertex lighting)效果,因为只有在网格的顶点才会计算这个效果。不过由于光影对映并不需要Direct3D针对各个顶点计算光影信息,所以不需要使用顶点光影必要的细密网格。因此绘制多边形数量少而用光影对映的场景会比多边形数量多而用顶点光影的场景更有效率。另外由于光影对映信息可以在执行前先算好,执行时就可以用这种技术获得更高的速度。 光影对映有时也称作暗对映(dark mapping),因为这种技术是把一张光影对映贴图当作第二混合贴图(覆盖在已打光的(lit)基底贴图上),让场景更暗而不是更亮。光影对映可以在您的3D场景中产生戏剧性的光影效果。只要连续套用不同的光影对映,就可以产生单纯阴影到闪亮不同变化的明暗度。产生光影对映时要把内容送到一个特别的绘制程式,通常是一个只计算光影并把各像素光影存成贴图对映的光迹追踪程序或是热幅射(radiosity)算法。热幅射程式是一种影像绘制算法,利用封闭系统中能量不变原理来定义3D场景(通常是房间内部)内各表面的光线散射反应。这个算法会检视任意两个多边形三角面(facet)间的几何反应,并建立一组联立方程式,而方程式的解就决定各个三角面表面的颜色。由于Direct3D没有针对各个像素的光影运算单元,您必须自己写一个绘制程式或是选用免费、分享软件或是商业工具。然后就可以把算好的光影对映套用在3D场景中。 您可以用光影对映为对象加上单色或彩色光影,还可以加上散射光或直接反射强光等效果。在进行光影对映时要对3D形状套用两张贴图。其中一张是均匀打上完全光量的基底贴图(砖墙是这种贴图的例子之一),另一张贴图就是光影对映。两种贴图会混合产生像是自然打光的场景。光影对映可以包括一张具有复杂光影的位图。您可以把这些光影信息储存在光影对映的alpha值或颜色值中。 您可能会问自己「这些光影对映不会占用很多内存吗?」。您可以重复地用「正常」的贴图对映(砖块、地板、空白墙面等等)一个位,不过各个面的光影常常都会不同,所以每个面都要有一张光影对映,这似乎会占用大量的可用贴图内存。要回答这个有关内存的问题,必须先考虑下列的光影对映特性: 光影对映的分辨率可以比贴图对映低很多。举例来说,一张256×256的贴图对映通常只要用16×16的双线性滤镜处理光影对映就够了。   光影对映常常都是单色的,所以每像素只要4或8位而不需要用到16或24位。(另外光影对映压缩存在磁盘的效率都很好)。   您可以分析所产生的光影对映,并且经常会放弃它们改用顶点颜色产生相同的效果。举例来说,很多光影对映到最后和固定强度或线性渐层很类似,不需要用贴图对映来产生光影效果。   由于光影对映通常很小,所以有个好方法就是把很多光影对映结合成单一大张贴图对映以减少绘制时变更贴图对映的负荷(在?第八章?中讨论过)。   要将多张光影对映合成单一张贴图对映时,应该小心会在光影对映边界出现的滤镜处理副作用。要确认合并储存在贴图中光影对映的最佳方法就是检查绘出场景的结果。 图11-1、图11-2和图11-3显示一个基底贴图、一张单色光影对映以及将光影对映及贴图套用在表面上的结果。   图11-1 基底贴图   图11-2 单色光影对映   图11-3 将基底贴图和光影对映套用在一个表面上。 图11-4和图11-5显示套用不同光影对映的相同场景。光影对映模拟在打到墙壁上两个地方的闪光灯光束。这张光影对映用了比需要还高很多的分辨率。通常您应该用简单的贴图。如图11-4所显示,用较高分辨率的光影并没有明显提升视觉质量,这种改善并不值得消耗内存。   图11-4 闪光光束光影对映   图11-5 套用闪光光束光影对映的的场景 您可以看到,有效地应用光影对映可以大幅改善场景的外观,同时省下计算「真实」光影效果所损失的绘制时间。 用多次贴图混合的光影对映   您可以用各种方式混合用于光影对映的贴图。就像我们在?第八章?所讨论的,您可以套用D3DRENDERSTATE_SRCBLEND 和 D3DRENDERSTATE_DESTBLEND列举值来启用旧式的多次贴图混合方法。您也可以用较新的 SetTextureStageState 方法来进行多贴图混合。让我们先看看多次贴图混合技术。我们将会在本章稍后看看较新的多贴图混合作法。 单色光影对映   您可以利用单

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档