U V纹理坐标与S T纹理坐标之间有什么区别?
我知道U V和S T用于OpenGL。
我也知道S T也用在Java中。
答案 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用于均质/归一化。