相机空间和NDC空间示意图(来自奇乐编程学院)
相机坐标系一般都是右手坐标系, 相机朝向是 z 的负半轴
裁剪空间和NDC空间示意图
投影矩阵推导
【本文仅用于自身备忘】
正交投影推导结果如下
透视投影推导结果如下
备注
一般情况下,透视投影我们使用的是下面的矩阵,因为视锥体的r、l、t、b信息一般不好拿到
这个第三行三列和三行四列和上面一样,一行一列和二行二列不一样,怎么来的?
这里推导一下
首先aspect是横高比,aspect = r / t,一般也等于渲染窗口的横宽比,比如webgl中就是拿div的width/height计算
r = aspect * t(公式一)
还有tan(fovy/2) = t/n(公式二)这里fovy指的是y方向锥体的边和垂直视线的夹角
根据公式一和公式二可以得到
最终的结果
games101投影矩阵推导结果和上面那个为啥不一样
1.games101中相机空间是右手坐标系,这个一样,但是NDC也是右手坐标系,上面列的那个投影矩阵是Opengl用的,opengl NDC坐标系是左手坐标系,前提在这