DirectX11 纹理坐标

本文介绍了Direct3D中的纹理坐标系,包括纹理坐标的定义、表示方法以及如何通过线性插值计算3D三角形上的纹理坐标。同时,讨论了纹理坐标如何影响纹理映射,强调了合理设置纹理坐标以避免拉伸和扭曲的重要性,并提到了纹理贴图集的概念。

纹理坐标

1. 纹理坐标是什么?

Direct3D的纹理坐标系由表示图像水平方向的u轴和表示图像垂直方向的v轴组成。坐标(u,v)指定了纹理上的一个元素,我们将该元素称为纹理元素(texel,译者注:texel是texture element的缩写),其中0≤u,v≤1。注意,v轴的正方向是“垂直向下”的(参见图8.2)。另外,将规范化坐标区间设为[0,1],是因为这样可以使 Direct3D拥有一个独立于纹理尺寸的坐标空间;例如,无论纹理的实际尺寸是256×256、512×1024还是2048×2048,(0.5, 0.5)永远表示中间的纹理元素。同样,(0.25, 0.75)表示在水平方向上位于总宽度的1/4 处、在垂直方向上位于总高度的3/4处的纹理元素。现在,我们只讨论[0,1]区间内的纹理坐标,稍后会讲解当纹理坐标超出一范围时的处理方法。

这里写图片描述
(纹理坐标系(texture coordinate system),有时也称为纹理空间(texture space)。)

对于每个3D三角形,我们都要在纹理上定义一个相应的2D三角形,以使纹理映射到 3D三角形上(参见下图)。
(左图是3D空间中的一个三角形,右图是我们在纹理上定义的2D三角形,它会被映射到3D三角形上。)

若三角形的顶点坐标为p0,p1和p2,对应的纹理坐标为q0、q1和q2。对于3D三角形上的任意一个点(x,y,z),它的纹理坐标(u,v)都可以通过在3D三角形表面对顶点纹理坐标进行线性插值得到,而线性插值中的参数s、t是相同的;也就是说:

(x,y,z)=p=p0+s(p1−p0)+t(p2−p0)

若s≥0,t≥0,s+t≤1则

(u,v)=q=q0+s(q1−q0)+t(q2−q0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值