深入解析投影矩阵的数学方法

  • 齐次空间
    要理解3d的齐次空间,我们先理解2d的齐次空间。
    2d的齐次空间可以理解为三维空间上的向量在(x, y, 1)平面上的投影. 投影结果是(x/z, y/z, 1)
    深入解析投影矩阵的数学方法_第1张图片
  • 齐次矩阵
    深入解析投影矩阵的数学方法_第2张图片
    • 齐次矩阵能够对向量做仿射变换,也就是能够将平移加入到矩阵中,这是3*3矩阵做不到的。
    • 而4*3矩阵虽然也能做仿射变换,但是不能求逆矩阵,因为不是方阵。

-齐次矩阵的透视投影
空间坐标与其投影到投影平面上的坐标的关系:
深入解析投影矩阵的数学方法_第3张图片
这里写图片描述
我们构造齐次矩阵来实现这样的计算
深入解析投影矩阵的数学方法_第4张图片

  • 平截头体
    深入解析投影矩阵的数学方法_第5张图片

这样构造矩阵,得到齐次向量,然后用x,y,z分量除以w分量就得到真实的(x,y,z).
真正的投影也是在这一步发生的。这个在shader里面做。
深入解析投影矩阵的数学方法_第6张图片

  • 计算缩放系数
    fov为90°的时候,就相当于透视投影的比例为1:1.当fov变动的时候,投影的比例也会跟着变动。
    焦距越大,fov就越小,像在投影平面的比例就越大,这就是长焦镜头。
    深入解析投影矩阵的数学方法_第7张图片
    缩放系数和视场角有关系,最终会提现在x方向和y方向的缩放分量上。
    深入解析投影矩阵的数学方法_第8张图片
    计算缩放系数

深入解析投影矩阵的数学方法_第9张图片

  • 透视投影矩阵
    先看看构造好的投影矩阵
    深入解析投影矩阵的数学方法_第10张图片

    x,y方向的缩放:主要是将相机坐标系下的坐标
    zoomx 在x方向的缩放值
    zoomy 在y方向的缩放值

    z方向缩放:主要是为了将z值归一化到-1到1之间
    (f+n)/(f-n) 在z方向的缩放量
    z方向平移:主要是为了将z值归一化到-1到1之间
    -2nf/(f-n) 在z方向的平移量

    • 设备空间

你可能感兴趣的:(3d数学基础,矩阵篇,图形学)