今天将着重强调什么是uv?
所有的图像文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系。我们可以定位图像上的任意一个像素。但是一个问题是如何把这个二维的平面贴到三维的NURBS表面和多边形表面呢?
对于NURBUS表面。由于他本身具有UV参数,尽管这个UV值是用来定位表面上的点的参数,但由于它也是二维的,所以很容易通过换算把表面上的点和平面图像上的象素对应起来。所以把图像贴到NURBUS表面上是很直接的一件事。
但是对于多变形模型来讲,贴图就变成一件麻烦的事了。所以多边形为了贴图就额外引进了一个UV坐标,以便把多边形的顶点和图像文件上的像素对应起来,这样才能在多边形表面上定位纹理贴图。所以说多边形的顶点除了具有三维的空间坐标外。还具有二维的UV坐标。
对于纹理贴图而言,一张贴图的U和V坐标的数值范围都是0到1,而不管他的实际分辨率是多少,MAYA会自动把UV纹理坐标换算成贴图的象素坐标。
“UV”这里是指u,v纹理贴图坐标的简称(它和空间模型的X, Y, Z轴是类似的),它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置, UV就是将图像上每一个点精确对应到模型物体的表面, 在点与点之间的间隙位置由软件进行图像光滑插值处理, 这就是所谓的UV贴图。
那为什么用UV坐标而不是标准的投影坐标呢? 通常给物体纹理贴图最标准的方法就是以planar(平面),cylindrical(圆柱), spherical(球形),cubic(方盒)坐标方式投影贴图。
Planar projection(平面投影方式)是将图像沿x,y或z轴直接投影到物体. 这种方法使用于纸张, 布告, 书的封面等 , 也就是表面平整的物体.平面投影的缺点是如果表面不平整, 或者物体边缘弯曲, 就会产生如图A的不理想接缝和变形. 避免这种情况需要创建带有alpha通道的图像, 来掩盖临近的平面投影接缝, 而这会是非常烦琐的工作。
所以不要对有较大厚度的物体和不平整的表面运用平面投影方式. 对于立方体可以在x, y方向分别进行平面投影, 但是要注意边缘接缝的融合. 或者采用无缝连续的纹理, 并使用cubic投影方式。多数软件有图片自动缩放功能, 使图像与表面吻合. 显然, 如果你的图像与表面形状不同, 自动缩放就会改变图像的比例以吻合表面。 这通常会产生不理想的效果, 所以制作贴图前先测量你的物体尺寸。网上最多的说法就是切线(Tangent)与UV坐标的U方向对齐,副切线(Bitangent)与UV坐标的V方向对齐。这就很抽象,UV坐标变化本身就是一个二维空间的向量,而切线方向是一个三维空间的向量,这两者是如何对齐的呢?
首先我们考虑一个三角形,要为这个三角形内的每一个像素都给定一个法线矢量 ,这个三角形是一个平面,有一个平面法矢量,我们可以修改这个矢量去定义每个像素的法矢量,例如每个像素上向某个轴偏移一个值,向另一个轴偏移一个值。这两个轴最好都垂直于该平面法线 但问题是, 那另外两个轴如何确定呢,这是一个常见的三维问题,给定一个轴,另外两个轴有无限种可能,就像下图一样。
针对上述情况,比较简单的一种方式就是利用纹理坐标来确定另外两个轴的方向。
一个简单的思考方式 :
我有一个向量,该向量指向(uv坐标的)U值在三角形上增加的方向,那么它在模型空间坐标系中的坐标将是多少。
另一个思考方式:
模型空间X,Y,Z轴坐标相对于UV坐标的变化率。也就是说 切线(Tangent)向量实际上是模型空间坐标相对于U值分量的变化率,而副切线(Bitangent)向量则是模型空间坐标相对于V值分量的变化率。
上面两句话其实已经将切线与UV坐标的关系描述的很清楚了,不知道小伙伴有没有理解清楚?