矩阵
- 方块矩阵:行和列数量相等
- 对角矩阵:方阵中除对角元素外,其他都是0
- 单位矩阵:对角阵中对角元素都为1
- 转置矩阵:对原矩阵做转置运算
- 逆矩阵:
- 行列式不为0的矩阵是可逆的
- 正交矩阵:矩阵的转置是矩阵的逆矩阵
- 正交基:基矢量之间是相互垂直,则称为一组正交基
- 标准正交基:基矢量长度为1的正交基
变换
- 线性变换:缩放、旋转、错切(shear)、镜像(mirroring、reflection)、正交投影(orthographic projection)
- 仿射变换:线性变换 + 平移变换
- 齐次坐标:在原N维坐标基础上增加一个维度(w),其中
- 点:w=1
- 方向:w=0
坐标空间
- 模型空间
- 世界空间
- 观察空间:
- func:观察变换:让摄像机空间的坐标原点通过变换矩阵转换到世界坐标空间的原点;
- 裁剪空间:方便对图元进行裁剪(剔除)
- func:投影矩阵(透视 或 正交)
- 屏幕空间:从裁剪空间通过透视除法(齐次除法)得到,在OpenGL中称为NDC坐标(在[-1, 1]之间),再通过屏幕映射转换为屏幕坐标
- func:透视除法 + 屏幕映射
- 总结
- 顶点着色器:负责将顶点转换到裁剪空间(MVP矩阵)
- 片段着色器:可以获得片元所在的屏幕空间的像素位置
法线变换
- 背景:通过矩阵变换得到的法线并不能确保其垂直性(书中P86图4.48介绍比较详细)
- 切线:书中P87中的推导公式有一个前置要求是切线Ta的转置和Ta一致,这是为何?