U V和S T纹理坐标之间的差异

时间:2012-05-13 00:08:55

标签: java opengl java-3d texture-mapping

U V纹理坐标与S T纹理坐标之间有什么区别?

我知道U V和S T用于OpenGL。

我也知道S T也用在Java中。

5 个答案:

答案 0 :(得分:21)

Computer graphics principles and practice (Foley et al)将2定义如下:

  

纹理映射可以分两步完成。一个简单的方法   首先将像素的四个角映射到曲面上。对于   一个双三次补丁这个映射自然地定义了一组点   surface(s,t)坐标空间。接下来,像素的角点指向   曲面的(s,t)坐标空间被映射到纹理中   (u,v)坐标空间纹理贴图中的四个(u,v)点   定义一个近似更复杂形状的四边形   由于表面曲率,像素可以实际映射。我们计算   通过对位于其中的所有纹素进行求和来得到像素的值   四边形,按每个纹素的分数加权   在四边形内。如果(u,v)空间中的变换点下降   在纹理贴图之外,纹理贴图可以是as   复制,就像2.1.3节的模式一样,而不是总是使用   在(s,t)和(u,v)之间的身份映射,我们可以定义一个   0到1(s,t)矩形的四个角之间的对应关系   和(u,v)中的四边形。 当表面是多边形时,它是   通常将纹理贴图坐标直接指定给其顶点。

答案 1 :(得分:20)

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

U = S = x dimension
V = T = y dimension

答案 2 :(得分:4)

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

s = u;
t = 1-v;

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

答案 3 :(得分:1)

这是一个惯例问题。

Autodesk 3D Studio,Alias Maya,NewTek Lightwave以及其他人可能分别使用字母U和V来表示水平和垂直纹理坐标。 DirectX遵循相同的惯例。

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

所以他们的理论在理论上可能有所不同,但是,除非你在好莱坞电影特效中工作,否则它们可能都意味着纹理坐标。

答案 4 :(得分:0)

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

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

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

当不需要透视校正时,Q = 1.0,因此ST只是uv的规格化版本,它们之间的差异变得微妙,因此某些3D系统会完全跳过uv表示法,而仅将st / STQ用于均质/归一化。