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

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

ID:7821625

大小:387.50 KB

页数:6页

时间:2018-02-27

使用纹理坐标生成技术的高级纹理_第1页
使用纹理坐标生成技术的高级纹理_第2页
使用纹理坐标生成技术的高级纹理_第3页
使用纹理坐标生成技术的高级纹理_第4页
使用纹理坐标生成技术的高级纹理_第5页
资源描述:

《使用纹理坐标生成技术的高级纹理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、见的纹理坐标生成技术。通过矩阵来变换数据(位置、法线、纹理坐标),是大多数人最乐意使用纹理坐标生成方法的地方。这种方法很容易被采用,因为大多数3D程序员都对矩阵变换很熟,而且矩阵变换也常常可由硬件加速。本文讲述的技术都是可以用矩阵运算执行的。5.5.1简单纹理坐标动画游戏常使用简单的纹理坐标旋转或平移来模拟一些简单效果,如反射,或呈现水或一些运动介质。其思想就是:一个纹理坐标可以被简单地看作一个2D点。程序员习惯用矩阵来进行点变换,因而很容易理解,可以将纹理坐标转换成3×3矩阵来进行旋转、平移或缩放。就像几何

3、体一样,必须将同质的坐标加到s、t对才能进行转换。因而,坐标生成方法如下:(s,t,1)*3x3mtx=s',t'图5.5.1中的演示图是使用旋转和缩放生成的。第一幅图是未经变换的纹理;第二幅是纹理坐标旋转45°的效果;第三幅是纹理坐标平移0.5的效果。5.5.2纹理投影纹理投影(textureprojection5.5使用纹理坐标生成技术的高级纹理463)对生成很多效果都很有用。它最常用于模拟如聚光灯或阴影的灯光效果。纹理投影的结果很直接:纹理从空间中的某个点投影到一些几何体上。例如,可以在场景中某点定义一

4、个聚光灯,投影一个纹理(如圆形光)在几何体上,产生了聚光灯的照明效果。再次重申,纹理投影的思想源于常规3D几何技术。当模拟摄像机时,投影矩阵用于在摄像机空间投影顶点到摄像机的近裁剪面上。这些点的X和Y都映射到范围−1~1中,并且它们将通过视点变换转换到屏幕空间中(通常用到平移和缩放变换)。图5.5.1对于纹理投影,我们通常在空间中对光建模,而不是对摄像机建模。光空间的顶点投影到光的近裁剪面上,其X和Y值被用作S和T值,将纹理映射到投影几何体上。对光建模和对摄像机建模一样。近裁剪面应该设定成反射投影纹理的形状。

5、例如,方形的近裁剪面应该用于投影方形纹理。正如所提到的,被投影在纹理上的几何体应该在光空间中,就如投影在屏幕上的几何体需要在摄像机空间中一样。要做到这一点,首先需要将几何体变换到世界空间中。然后,光矩阵(就如摄像机矩阵)必须转换该几何体。之后,几何体就可以通过光的投影矩阵投影了。一旦几何体被投影,另一个问题就会产生。如前所述,投影几何体的X和Y都将落在−1~1的范围中,原点(0,0)为投影面相对光源的中心。纹理坐标的S和T通常都在0~1范围中,原点为纹理的左上角。要将投影坐标映射到纹理空间中,需要先以0.5的

6、比例进行缩放,使取值范围变为−0.5~0.5;然后再平移0.5,使范围变为0~1。这些矩阵可以集中在一起形成一个给定几何体的最终的投影矩阵。顺序如下: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的比例缩放矩阵•M_trans=平移0.5的矩阵这个计算的结果是一个四维点。对于简单的纹理投影,r坐

7、标应该忽略,应该输出(s,t,q)三元组。如果硬件允许,可直接将这三个坐标传给光栅化处理。q坐标用于执行透视矫正,只有在光栅化时执行才是正确的。图5.5.2是使用纹理投影生成的。它展示了光的截面体,在球体上投影出了高光的圆。5.5使用纹理坐标生成技术的高级纹理463以这种方式投影几何体,会产生一些意外的结果。首先,纹理坐标通常都是以平铺的方式使用的,这意味着范围是0~1的坐标与范围是−1~0的坐标之间没有区别。然而投影在几何体上的纹理则常常有限定范围,在该纹理边缘之外的应该为坐标小于0或大于1的任意纹理。因此

8、,纹理边缘应该进行上色,以使得选择的纹理结合模式能够产生正确的效果。图5.5.2纹理投影示例第二个问题更复杂,我把它叫做“照透(shine-through)”。例如,当我们投影纹理在球上时,球对着光的正、背两个面都出现纹理。这是因为球正面和背面上的顶点都投影在正确的纹理空间中。图5.5.3展示了这个问题。可以看到,聚光灯纹理正确地投影在了球的正面上,但它也同时照透到了球的背面上。图5.5.3纹理投影

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。