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