UV和ST纹理坐标之间的差异

Nab*_*ter 12 java opengl java-3d texture-mapping

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

我知道在OpenGL中使用UV和ST.

我也知道ST也用在Java中.

Goz*_*Goz 23

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

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

  • 那是正确的.我参考OpenGL ES 2.0规范,第3.7节关于纹理.(S,T)是片段的归一化对.(U,V)可以被视为纹理数组中的纹理数组宽度和高度.这些条款不应互换使用. (2认同)

Tim*_*Tim 21

它们意味着相同的东西,它只是一个不同的命名约定.

U = S = x dimension
V = T = y dimension
Run Code Online (Sandbox Code Playgroud)

  • 一个次要的nit:U和V通常在[0,0 ... w,h]的范围内,而ST在[0,0 ... 1,1]的范围内.至少这是OpenGL定义它的方式,纹理矩形除外. (4认同)
  • 库斯马,那不对.UV处于纹理坐标中,因此也将介于0和1之间.ST可以高于1.0,但通常会被包裹到UV空间中. (4认同)

小智 5

UV坐标从开始左上角(v轴朝下)。
ST坐标从开始左下角(叔轴朝上)。

s = u;
t = 1-v;
Run Code Online (Sandbox Code Playgroud)

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

  • 我不认为uv坐标从左上角开始。它们从左下角开始,就像OpenGl中的所有其他坐标系一样。但是,某些图像格式从底部开始存储其数据,这迫使您立马翻转图像,或假装坐标系从左上角开始。 (5认同)