写在前面:MVP矩阵变换在本科的时候就已经学过多次,研究生接触到的Nerf,3DGaussian用到的世界空间转屏幕空间则都是用相机内外参矩阵计算的,虽然这两种变换本质上做的是一件事,但是由于这两种表示方法直接参与计算的物理量不太一样,表示形式也不太一样,经常是我头脑旋转。昨晚又重新学了一遍相机内外参矩阵,思考了一下其与MVP矩阵的对应关系,终于感觉自己几近神功大成,故把学到的所有知识和思路整理于此,以便再次学习(倒。
首先在讨论空间直角坐标系的时候一定先区分手系,左手系和右手系的旋转矩阵是不一样的,常见的软件和框架使用的手系及默认朝上的坐标轴区别如下图(图源网络):
另外,不同的框架对相机的坐标系建模也会有差别,原理上没有区别,但不同的建模会导致最后的变换矩阵有些符号差异:
涉及到的坐标系
不管是相机内外参还是MVP矩阵,所要做的事情都是空间坐标系的转换,涉及到的坐标系有:
- 模型空间坐标系
- 世界空间坐标系
- 裁剪空间坐标系
- 屏幕空间坐标系