HPP_Graphics_1.2.3 MVP矩阵运算

a). 简介

MVP矩阵分别是模型(Model)观察(View)投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么:MVP

b). M: 模型空间→世界空间

  • 变换顺序

    1. 缩放
    2. 旋转
    3. 平移

c). V: 世界空间→观察空间

  • 变换顺序:
    1. 平移
    2. 旋转
    3. Z分量取反(观察空间采用的是右手坐标系,而Unity则是左手坐标系)

d). P: 观察空间→裁剪空间

  • 不是真正的投影,为投影做准备
  • 目的:判断顶点是否在可见范围内
  • P矩阵:对x,y,z分量进行缩放,用w分量做范围值。如果x,y,z都在w范围内,那么该点在裁剪空间内。

d.1) 正交矩阵

d.2) 透视矩阵

TODO: 推导各项矩阵

e). 光栅化补充

  • 三角形设置:得到图元的边界条件,并对边进行插值;
  • 三角形遍历:对单行进行插值