使用纹理坐标生成技术的高级纹理.doc

上传人:cn****1 文档编号:563851045 上传时间:2022-11-21 格式:DOC 页数:6 大小:387.52KB
返回 下载 相关 举报
使用纹理坐标生成技术的高级纹理.doc_第1页
第1页 / 共6页
使用纹理坐标生成技术的高级纹理.doc_第2页
第2页 / 共6页
使用纹理坐标生成技术的高级纹理.doc_第3页
第3页 / 共6页
使用纹理坐标生成技术的高级纹理.doc_第4页
第4页 / 共6页
使用纹理坐标生成技术的高级纹理.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《使用纹理坐标生成技术的高级纹理.doc》由会员分享,可在线阅读,更多相关《使用纹理坐标生成技术的高级纹理.doc(6页珍藏版)》请在金锄头文库上搜索。

1、5.5 使用纹理坐标生成技术的高级纹理463 5.5 使用纹理坐标生成技术的高级纹理Ryan Woodland当今的图形处理器可以处理越来越多的多边形,人们也开始将注意力转向使用此能力来创建并行纹理效果。很多处理器都具备了额外的多纹理能力,人们开始思索如何有效地使用这些特性。当然,手工绘制纹理是我们最为熟知的,但我们很快发现,在运行时进行纹理映射可以产生一些有趣的效果。开发者开始使用纹理坐标生成(texture coordinate generation)技术执行动画、光照、反射、折射以及凹凸贴图等等。本文讨论了几个最常见的纹理坐标生成技术。通过矩阵来变换数据(位置、法线、纹理坐标),是大多数

2、人最乐意使用纹理坐标生成方法的地方。这种方法很容易被采用,因为大多数3D程序员都对矩阵变换很熟,而且矩阵变换也常常可由硬件加速。本文讲述的技术都是可以用矩阵运算执行的。5.5.1 简单纹理坐标动画游戏常使用简单的纹理坐标旋转或平移来模拟一些简单效果,如反射,或呈现水或一些运动介质。其思想就是:一个纹理坐标可以被简单地看作一个2D点。程序员习惯用矩阵来进行点变换,因而很容易理解,可以将纹理坐标转换成33矩阵来进行旋转、平移或缩放。就像几何体一样,必须将同质的坐标加到s、t对才能进行转换。因而,坐标生成方法如下:(s, t, 1) * 3x3mtx = s, t 图5.5.1中的演示图是使用旋转和

3、缩放生成的。第一幅图是未经变换的纹理;第二幅是纹理坐标旋转45的效果;第三幅是纹理坐标平移0.5的效果。5.5.2 纹理投影纹理投影(texture projection)对生成很多效果都很有用。它最常用于模拟如聚光灯或阴影的灯光效果。纹理投影的结果很直接:纹理从空间中的某个点投影到一些几何体上。例如,可以在场景中某点定义一个聚光灯,投影一个纹理(如圆形光)在几何体上,产生了聚光灯的照明效果。再次重申,纹理投影的思想源于常规3D几何技术。当模拟摄像机时,投影矩阵用于在摄像机空间投影顶点到摄像机的近裁剪面上。这些点的X和Y都映射到范围 11中,并且它们将通过视点变换转换到屏幕空间中(通常用到平移

4、和缩放变换)。图5.5.1 对于纹理投影,我们通常在空间中对光建模,而不是对摄像机建模。光空间的顶点投影到光的近裁剪面上,其X和Y值被用作S和T值,将纹理映射到投影几何体上。对光建模和对摄像机建模一样。近裁剪面应该设定成反射投影纹理的形状。例如,方形的近裁剪面应该用于投影方形纹理。正如所提到的,被投影在纹理上的几何体应该在光空间中,就如投影在屏幕上的几何体需要在摄像机空间中一样。要做到这一点,首先需要将几何体变换到世界空间中。然后,光矩阵(就如摄像机矩阵)必须转换该几何体。之后,几何体就可以通过光的投影矩阵投影了。一旦几何体被投影,另一个问题就会产生。如前所述,投影几何体的X和Y都将落在 11

5、的范围中,原点(0, 0)为投影面相对光源的中心。纹理坐标的S和T通常都在01范围中,原点为纹理的左上角。要将投影坐标映射到纹理空间中,需要先以0.5的比例进行缩放,使取值范围变为 0.50.5;然后再平移0.5,使范围变为01。这些矩阵可以集中在一起形成一个给定几何体的最终的投影矩阵。顺序如下:M_obj * M_light * M_proj * M_scale * M_trans * x, y, 0, z = s, t, r, q 其中: M_obj 对象的世界空间矩阵 M_ligh t用于将几何体从世界空间转换到光空间的光矩阵 M_proj 光的投影矩阵 M_scale 以0.5的比例缩

6、放矩阵 M_trans 平移0.5的矩阵这个计算的结果是一个四维点。对于简单的纹理投影,r坐标应该忽略,应该输出(s, t, q)三元组。如果硬件允许,可直接将这三个坐标传给光栅化处理。q坐标用于执行透视矫正,只有在光栅化时执行才是正确的。图5.5.2是使用纹理投影生成的。它展示了光的截面体,在球体上投影出了高光的圆。以这种方式投影几何体,会产生一些意外的结果。首先,纹理坐标通常都是以平铺的方式使用的,这意味着范围是01的坐标与范围是 10的坐标之间没有区别。然而投影在几何体上的纹理则常常有限定范围,在该纹理边缘之外的应该为坐标小于0或大于1的任意纹理。因此,纹理边缘应该进行上色,以使得选择的

7、纹理结合模式能够产生正确的效果。图5.5.2 纹理投影示例第二个问题更复杂,我把它叫做“照透(shine-through)”。例如,当我们投影纹理在球上时,球对着光的正、背两个面都出现纹理。这是因为球正面和背面上的顶点都投影在正确的纹理空间中。图5.5.3展示了这个问题。可以看到,聚光灯纹理正确地投影在了球的正面上,但它也同时照透到了球的背面上。图5.5.3 纹理投影中的照透有两种方法可以修正这种照透问题。第一种是对顶点法线和光法线执行点积,以判断该顶点是否是背面。如果是背面,将该顶点的纹理坐标设为范围在01之外的纹理。第二种是,可以使用标准光照方程的输出值来判断该顶点是否是背面。在纹理投影点

8、的地方放置一个平行光,如果该平行光对于一个顶点的输出是黑色,你就知道这个顶点是背面(因为只有该顶点的法线没有对着光的时候它的输出才会是黑色)。5.5.3 反射映射要执行反射映射,我使用了一种简单的方法,叫做“球形映射(sphere mapping)”。该方法的基本思想有两个前提条件。首先,假定不论什么形状和大小的物体,都像球形一样反射周围环境。这个假定很重要,因为,从逻辑上来说,人物手上的点与脚上相同法线的点,反射效果是不同的。使用球形映射,则这两个点的反射相同(因为它们法线相同)。其次,假定物体被看作反射球是无限小的。这意味着,在场景中从视点到该无限小球上所有点的所有视线都相互平行。通过以上

9、的限制,球形映射方法符合基本反射法则。例如,在场景中有一条从视点看向球上某个点的视线,该视线射在球体上,绕着交点的法线被反射。不论什么情况,视线都应该在球上的交点处反射。图5.5.4为此概念的图示。追踪球上的每个点弹出的射线是不可行的,因此我们创建了一个包含必要环境信息的纹理图,该图叫做球形反射图(spherical reflection map)或球形图(sphere map)。图5.5.4 在可反射物体上,射线绕着交点上的表面法线被反射球形图的基本定义就是,一个包含空间中某点360全视角视图的纹理图。使用球形映射用于反射有一个很大的缺点用作反射图的纹理是独立于视点的。这意味着,若要效果完全

10、正确,每次摄像机移动时,纹理图必须动态创建。不过我发现,对一些常见效果,如在小汽车上生成特殊高光或创建人物的光照效果,不按照视点更新球形图常常不被觉察(要深入研究球形图生成,请参见Blythe99)。一旦有了合适的球形图,纹理坐标生成就不算什么问题了。使用物体模型矩阵的逆变换,将物体的法线变换到世界空间。然后使用摄像机矩阵将法线变换到观察空间。最后,假设摄像机朝着Z轴反方向放置,分别用法线的X和Y作为S和T坐标,用于相应的顶点。显然,使用这个技术, Z坐标的法线与+Z坐标的法线会生成相同的S、T对。这没有问题,因为法线Z坐标为负值的顶点是背面的点,不会被看到(这在观测空间中会进行计算)。彩图5

11、是使用一个室外环境的球形反射图映射到圆环上生成的。使用该技术,很容易通过使用正确的纹理图,执行反射、镜面映射和漫射光照。关于独立于视图的方法生成这些效果,请参见Heidrich98,它讲述了双抛物面映射。此外,如果目标硬件支持,立方体环境映射是个很好的方法生成动态光照和反射效果。要获取更多信息,请参见Nvidia00。5.5.4 参考文献Blythe99 Blythe, David, Advanced Graphics Programming Techniques Using OpenGL, http:/ April 7, 2000.Watt92 Watt, Alan, and Watt, M

12、ark, Advanced Animation and Rendering Techniques, ACM Press, 1992.Heidrich98 Heidrich, Wolfgang, and Seidel, Hans-Peter, View-independent Environment Maps, Eurographics/ACM Siggraph Workshop on Graphics Hardware 1998, www9.informatik.uni-erlangen.de/eng/research/rendering/envmap/, March 22 2000.Nvidia00 NVIDIA technical brief, Perfect Reflections and Specular Lighting Effects with Cube Environment Mapping, March 10, 2000.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号