UV 纹理坐标与 ST 纹理坐标有什么区别?
我知道在 OpenGL 中使用了 UV 和 ST。
我也知道 ST 也用于 Java。
UV 纹理坐标与 ST 纹理坐标有什么区别?
我知道在 OpenGL 中使用了 UV 和 ST。
我也知道 ST 也用于 Java。
它们的含义相同,只是命名约定不同。
U = S = x dimension
V = T = y dimension
计算机图形学原理和实践(Foley 等人)将 2 定义如下:
纹理映射可以分两步完成。一种简单的方法是首先将像素的四个角映射到表面上。对于双三次面片,此映射自然地定义了曲面 (s,t) 坐标空间中的一组点。接下来,将像素在表面的 (s,t) 坐标空间中的角点映射到纹理的 (u,v) 坐标空间中。纹理图中的四个 (u,v) 点定义了一个四边形,将更复杂的形状近似为由于表面曲率,像素实际上可能会映射。我们通过将位于四边形内的所有纹素相加来计算像素的值,并通过位于四边形内的纹素的分数对每个纹素进行加权。如果 (u,v) 空间中的变换点落在纹理贴图之外, 当表面是多边形时,通常将纹理贴图坐标直接分配给它的顶点。
uv坐标从左上角开始(v 轴朝下)。
st坐标从左下角开始(t 轴朝上)。
s = u;
t = 1-v;
我忘了告诉 opengl 中的纹理应该垂直翻转加载,因为行数据的第一个元素“对应于纹理图像的左下角” (参见 glTexImage2D)。只有在这种情况下,st 和 uv 坐标似乎是一回事。
STQ是需要进行透视校正或变形时必须使用的纹理坐标系,它与齐次纹理坐标uv的关系如下:
u =(以像素为单位的图像宽度)* S / Q
v =(以像素为单位的图像高度)* T / Q
当不需要透视校正时,Q = 1.0,因此 ST 成为简单的 uv 的归一化版本,它们之间的差异变得微妙,因此一些 3D 系统完全跳过了 uv 表示法,只使用 st/STQ 进行均质/归一化。