参考
may佬《技术美术百人计划》
视差映射(Parallax Mapping)
图形2.5 BUMP图改进
Bump Mapping介绍
在屏幕上绘制物体时需要表达物体的细节,从尺度方面来说物体的细节可以分成三种:宏观尺度、中观尺度、微观尺度
- 宏观尺度:由顶点、三角形或其他的几何图元来表示(三维角色的头、四肢)
- 中观尺度:包含了宏观和微观之间的特征
- 细节比较复杂,没法用单个三角形来进行渲染
- 细节足够大,让观察者能够看出几个像素以上的表面曲率变化(如皱纹、衣服褶皱、砖块之间的细节)
- 微观尺度:作用于着色模型中,通常在像素着色器里实现,并使用纹理贴图作为参数;着色模型模拟了物体表面微观几何形状的相互作用
- 有光泽的物体在微观尺度下是光滑的,漫反射物体在微观尺度下是粗糙的
- 皮肤或衣服看起来材质不同是因为使用了不同的着色模型
凹凸映射(Bump Mapping)就是模拟中观尺度的常用方法之一,能够让观察者感觉到比几何模型尺度更小的细节
- 基本思想:在纹理中把尺度细节相关的信息编码进去,在着色过程中使用稍微受到干扰的表面代替真实的表面,使得表面看起来有小尺度的细节
- 原理:凹凸映射技术是对物体表面贴图进行变化然后再进行光照计算的一种技术
- 给法线分量添加噪音(法线贴图)
- 在保存扰动值的纹理图中进行查找(视差映射贴图、浮雕贴图)
- 是一种提升物体真实感的有效方法,但是不需要额外提升模型的几何复杂度就能提升物体表面的细节或不规则性
- 分类:法线映射、视差映射、浮雕映射
- 三种映射都会用到法线贴图,法线贴图会对物体表面进行法线扰动从而改变明暗关系
- 三种映射都会用到法线贴图,法线贴图会对物体表面进行法线扰动从而改变明暗关系
Normal Mapping 法线映射
法线贴图
- 法线贴图是一张存有物体局部表面发现信息的贴图
- 在计算光照的时候,程序会去读取法线图,并获取到当前像素点的法线信息,结合光线信息进行光照计算
- 使用法线贴图计算光照,可以让物体表现出更加丰富的细节,并随着光照方向的变换实时变化
- 法线贴图一般由高模映射到对应的低模上来生成,但像金属,木头这样细节丰富的物体,可借助程序化的软件如Photo Shop、Substance Designer来生成对应的法线贴图
切线空间
法线贴图一般会将信息存储在切线空间中,切线空间是以物体表面的切线、副切线和法线组成的空间
计算光照时,需要把光照运算的向量放到统一坐标系下,因此需要转换矩阵
世界和切线空间转换
- 将世界坐标系下的顶点法线(Normal)、切线(Tangent)、副切线(Bitangent)作为切线空间坐标系的正交基,法线作为Z轴,切线为X轴,副切线对应Y轴
- 由于需要转换的都是方向向量,所以只需要构建一个3×3的旋转矩阵来进行世界空间到切线空间的转换,称为TBN矩阵: T B N = [ T x B x N x T y B y N y T z B z N z ] TBN=\begin{bmatrix} T_x & B_x & N_x \\ T_y & B_y & N_y \\ T_z & B_z & N_z\end{bmatrix} TBN=⎣⎡TxTyTzBxByBz