Texturing 纹理相关


补:

之前的纹理笔记:Texture Mapping 纹理映射


1. The Texturing Pipeline 纹理管线

avatar

过程的起点是在空间中的位置,可以是世界空间,但大多数情况下是模型空间,因此纹理会随着模型移动。接着利用投影函数得到纹理坐标,即映射(mapping)的概念。在获得纹理之前,还需要用相应函数把纹理坐标转换到纹理空间。得到纹理值后,再经过转换应用到颜色或法线等等。

例如下面的砖墙,projector把$(x,y,z)$转换为二维向量$(u,v)$,接着将uv值乘以纹理图片的分辨率,得到所求图片中的位置,取得颜色值。

avatar


1.1 The Projector Function 投影函数

纹理处理的第一步是获取表面位置并将其投影到纹理坐标空间,通常是二维空间。 投影函数通常在美术建模阶段使用,美术人员可以逐顶点定义uv坐标并将投影结果存储于顶点数据中,当然也有例外的情况,比如:

通常在建模中使用的投影函数有球形、圆柱、以及平面投影,还有自然uv投影(下图第一行);下面一行所示为把不同的投影运用于同一个物体的情形。

avatar

非交互式渲染器(Noninteractive renderers)通常将这些投影函数称为渲染过程本身的一部分。一个单独的投影方程就有可能适用于整个模型,但其实实际上,美术同学不得不使用各种各样的工具将模型进行分割,针对不同的部分,分别使用不同的投影函数:

avatar

各种常见投影的要点:


1.2 The Corresponder Function 映射函数

映射函数的作用是将参数空间坐标(Parameter-space coordinates)转换为纹理空间位置(Texture space locations)。我们知道图像会出现在物体表面的(u,v)位置上,且uv值的正常范围在[0,1)范围内。超出这个值域的纹理,其显示方式便可以由映射函数(The Corresponder Function)来决定。

在OpenGL中,这类映射函数称为封装模式(Warapping mode);在Direct3D中叫做寻址模式(Texture addressing mode)。最常见的映射函数有以下几种:

avatar

另外,每个纹理轴可以使用不同的映射函数。例如在u轴使用重复寻址模式,在v轴使用夹取寻址模式。



2. Image Texturing 图像纹理



3. Procedural Texturing 程序纹理



4. Texture Animation 纹理动画



5. Material Mapping 材料贴图



6. Alpha Mapping 透明度贴图



7. Bump Mapping 凹凸贴图



8. Parallax Mapping



9. Textured Lights