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

问题描述 投票:12回答:5

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

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

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

java opengl java-3d texture-mapping
5个回答
21
投票

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

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

22
投票

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

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


5
投票

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

s = u;
t = 1-v;

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


1
投票

这是一个惯例问题。

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

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

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.