19

UV 纹理坐标与 ST 纹理坐标有什么区别?

我知道在 OpenGL 中使用了 UV 和 ST。

我也知道 ST 也用于 Java。

4

5 回答 5

29

它们的含义相同,只是命名约定不同。

U = S = x dimension
V = T = y dimension
于 2012-05-13T00:12:45.433 回答
29

计算机图形学原理和实践(Foley 等人)将 2 定义如下:

纹理映射可以分两步完成。一种简单的方法是首先将像素的四个角映射到表面上。对于双三次面片,此映射自然地定义了曲面 (s,t) 坐标空间中的一组点。接下来,将像素在表面的 (s,t) 坐标空间中的角点映射到纹理的 (u,v) 坐标空间中。纹理图中的四个 (u,v) 点定义了一个四边形,将更复杂的形状近似为由于表面曲率,像素实际上可能会映射。我们通过将位于四边形内的所有纹素相加来计算像素的值,并通过位于四边形内的纹素的分数对每个纹素进行加权。如果 (u,v) 空间中的变换点落在纹理贴图之外, 当表面是多边形时,通常将纹理贴图坐标直接分配给它的顶点。

于 2012-11-29T09:31:29.900 回答
8

uv坐标从左上角开始(v 轴朝下)。
st坐标从左下角开始(t 轴朝上)。

s = u;
t = 1-v;

我忘了告诉 opengl 中的纹理应该垂直翻转加载,因为行数据的第一个元素“对应于纹理图像的左下角” (参见 glTexImage2D)。只有在这种情况下,st 和 uv 坐标似乎是一回事。

于 2013-04-16T15:38:31.073 回答
2

这是一个约定俗成的问题。

Autodesk 3D Studio、Alias Maya、NewTek Lightwave 和其他可能使用字母 U 和 V 分别表示水平和垂直纹理坐标。 DirectX遵循相同的约定。

然而,皮克斯的 RenderMan 在其参数化 3D 基元中为参数保留了字母 U 和 V。所以对于纹理,他们改用S和 T。OpenGL 也将此约定用于纹理坐标。

所以它们的含义在理论上可能不同,但除非你处理一些好莱坞电影特效,否则它们可能都表示纹理坐标。

于 2012-11-04T15:30:35.170 回答
1

STQ是需要进行透视校正或变形时必须使用的纹理坐标系,它与齐次纹理坐标uv的关系如下:

u =(以像素为单位的图像宽度)* S / Q

v =(以像素为单位的图像高度)* T / Q

当不需要透视校正时,Q = 1.0,因此 ST 成为简单的 uv 的归一化版本,它们之间的差异变得微妙,因此一些 3D 系统完全跳过了 uv 表示法,只使用 st/STQ 进行均质/归一化。

于 2019-03-04T03:11:52.173 回答