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

问题描述 投票:0回答:6

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

我知道OpenGL中使用UV和ST。

我也知道Java中也使用ST。

java opengl java-3d texture-mapping
6个回答
38
投票

它们的意思是相同的,只是命名约定不同。

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

35
投票

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

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


9
投票

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

s = u;
t = 1-v;

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


3
投票

这是一个惯例问题。

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

然而,Pixar 的 RenderMan 在其参数化 3D 图元中保留了字母 U 和 V 作为参数。因此,对于纹理,他们使用

S 和 T 代替。 OpenGL 也使用这种约定来表示纹理坐标。

因此,它们的含义在理论上可能有所不同,但是,除非您从事某些好莱坞电影特效,否则它们可能都表示纹理坐标。


2
投票
STQ是需要透视校正或畸变时必须使用的纹理坐标系,它与齐次纹理像素坐标uv的关系如下:

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

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

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


0
投票
虽然经常有其他解释,但通常 ST 坐标是图元几何结构所固有的,而 UV 是手动创作和编辑的。通常,每个基元都有自己的 ST 坐标,并且整个基元网格都有 UV 坐标。 早期的书籍,如《Foley & Van Dam》,与 ST 手工编写的用法完全相反,但业界采用 UV 作为编写的参数命名约定。

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