贴图UV
一个多边形Mesh中有Index Buffer和Vertex Buffer,其中Vertex Buffer上存储着顶点信息,包括顶点坐标、UV、法线、切线
最开始,我们只有顶点坐标,三角形的边向量叉积可以得到面法线,将面法线求和可以得到顶点法线,切线和次切线的方向就是沿着UV方向,那么问题来了,UV是怎么生成的?
UV的用用途
UV是贴图的颜色的索引,可以用来采样贴图,是一种高效的传递模型表面材质信息的方式
UV的分类
UV通常分为全展UV和重叠UV
- 重叠UV允许模型不同位置采样贴图的同一位置,于是更省空间(或者精度更好)
- 全展UV模型每一处UV都是不同的,可以用来采样Lightmap信息
UV的生成
我们这里说的都是多边形网格的UV,对于参数表面这类模型,是有天生的UV的
DCC工具允许美术像编辑顶点坐标那样编辑顶点UV,但在这之前,我们需要先将三维的顶点坐标投影(Projector)到二维的UV上
投影方式有球面(spherical)投影、圆柱(cylindrical)投影、平面(planar)投影
球面投影:模型顶点坐标和一个虚构的球心会形成一个向量,沿着这个向量将顶点坐标投影到球面上
圆柱投影:u的投影和球面相同,v是模型顶点到虚拟圆锥轴的距离
面投影:将模型顶点做正交投影
美术通常会将模型进行切分,在不同位置应用不同的投影方法
Corresponder
采样UV和贴图坐标有时范围是不同的(当你进行缩放采样时经常出现),于是我们需要处理边缘采样
有四种方法:
- 重复(wrap、repeat、tile)
- 镜像(mirror)
- 截断(clamp to edge)
- 边界(clamp to border)