第6章 Texturing

来源:互联网 发布:手机号查个人信息软件 编辑:程序博客网 时间:2024/05/18 03:02

6.1 The Texturing Pipeline

    先通过Projector Function模型空间的坐标信息映射到UV坐标,UV坐标映射到纹理坐标,纹理坐标映射到纹理中的值。

6.1.1 The Projector Function

    一般由建模软件定义,建模软件可以支持美术修改顶点的UV映射。

6.1.2 The Corresponder Function

    corresponder function 将参数空间坐标转换到纹理空间坐标

类型

    直接取里面的纹理信息
    matrix transformation
    OpenGL叫做warpping mode,Directx叫做texture addressing mode,正常uv坐标是在[0, 1)之前的,如果不在这个区间 那么可能会有下面的方法
        wrap(Directx), repeat(OpenGL), or tile  重复之前的纹理信息,比如uv 坐标为(1.1, 1.3) 就取(0.1, 0.3)的值
        mirror,镜像,比如(1.1, 1.3) 就取(0.9, 0.7)的值
        clamp  clampuv坐标值,比如(1.1, 1.3) 就用(1.0, 1.0)的值
        border 超出[0, 1)的值,直接使用一个指定的值
    warpping mode 可以单独正对一个u 或者一个v,互相独立

6.1.3 Texture Values

6.2 Image Texturing

6.2.1 Magnification

    nearest neighbor 取最近的点
    bilinear interpolation  查找周围的4个点的值,进行线性插值,会显得模糊,点之间的差别消失了。
    cubic convolution 对周围4×4或 5×5的纹理像素按照权重插值。

6.2.2 Minification

    nearest neighbor 取最近的点
    bilinear interpolation 如果由多余4个纹理像素构成一个像素,那么效果也不好。
    mipmap  预先生成不同大小的纹理,按照纹理和像素比例,选择两个最接近的mipmap,分别使用bilinear interpolation,再进行融合
    anisotropic filtering 在大角度显示的时候有更高精度

6.2.3 Volume Textures

    比如三维的贴图,对三维模型,可以省去UV展开等操作,表达三维信息。

6.2.4 Cube Maps

    类似一个立方体盒子六个面的纹理,采用的时候使用最靠近的那个面采样

6.2.5 Texture Caching

6.2.6 Texture Compression

6.3 Procedural Texturing

6.4 Texture Animation

    序列帧

6.5 Material Mapping

    diffuse color specular color存储在贴图中,在pixel shader中采样获得

6.6 Alpha Mapping

    在纹理像素中,设置alpha为0,标志为透明。
    场景中的,树,草,也可以用贴片做,先画一张贴片,再画一张旋转90度的,显得立体,如果还不够,增加贴片
    alpha blending 实现半透明的模型,通过颜色融合,达到最终结果,需要先渲染不透明的模型,再从后往前渲染半透明模型。完全透明的片元也会参与到融合。
    alpha test 作为开关,alpha小于一个值就抛弃片元。多重采样抗锯齿对alpha是无效的,因为值都是一样的。
    alpha to coverage

6.7 Bump Mapping

    通过修改像素级的法线,影响光照效果,可以造成凹凸感觉,但实际上没有改变几何结构

6.7.1 Blinn's Methods

    offset vector bump map中存bu bv,表示在u,v方向上向量的大小,利用原本的法向量 + bu*u + bv* v得到的新向量作为新的法线向量。

 6.7.2 Normal Mapping

    texture中直接存储法线向量的值,法线向量基于切线空间,在和光照计算的时候,将法线从切线空间变化到世界空间。

6.7.3  Parallax Mapping

    通过高度图,偏移片元的纹理坐标

6.7.4 Relief Mapping

    使用比Parallax Mapping更精确的方法,确定纹理坐标偏移

6.7.5 Heightfield Texturing

    displacemet mapping 通过 heightfield texture 来修改顶点位置。消耗高,可以通过lod来减少。
    relief mapping 和 displacement mapping 消耗高,displacement mapping 可以用来做碰撞检测。