UV 坐标是一种用于纹理映射的二维坐标系统。它将纹理图片上的点映射到三维模型的表面。U 代表水平方向,V 代表垂直方向,通常范围是 0 到 1。通过 UV 坐标,模型表面上的每个顶点都能对应纹理上的一个点,实现贴图效果。
为什么叫 UV 而不是 XY
之所以用 U 和 V 而不是 X 和 Y,是为了避免与三维空间中的 X、Y、Z 坐标混淆。UV 坐标属于纹理空间,与模型的世界坐标系是独立的。有些系统(如 法线贴图)还会用到第三个纹理坐标 W,合称 UVW 坐标。
UV 坐标范围与寻址模式
标准 UV 值在 [0, 1] 区间内,(0,0) 通常对应纹理的左下角(OpenGL 惯例)或左上角(DirectX 惯例),(1,1) 对应对角。当 UV 值超出 [0, 1] 范围时,GPU 会根据纹理寻址模式 (wrap mode) 决定如何处理:
- Repeat:纹理重复平铺,适合砖墙、地板等连续纹理
- Clamp:超出部分取边缘像素颜色,适合不需要重复的贴图
- Mirror:镜像重复,产生对称效果
UV 展开
对于复杂的三维模型,UV 坐标的分配过程叫做 UV 展开 (UV Unwrapping)。可以把它想象成把一个三维物体的表面”剪开”并”摊平”到二维平面上。这个过程通常在建模软件(如 Blender、Maya)中手动或半自动完成。UV 展开的质量直接影响最终的贴图效果——展开不当会导致纹理拉伸、接缝明显等问题。
常见应用场景
UV 坐标不仅用于基础的颜色贴图,在现代渲染管线中还广泛用于 法线 贴图、高光贴图、环境光遮蔽 (AO) 贴图等。在 着色器 中,通过对 UV 坐标做数学运算(如缩放、偏移、旋转),可以实现纹理动画、UV 滚动等效果。