我很难理解为什么模型和视图矩阵传统上结合在一起。我知道你在顶点着色器中做的矩阵乘法越少越好,但是结合投影和视图矩阵对我来说更有意义。
这是因为它们本质上都是相机属性。对我来说,首先使用模型矩阵将顶点转换为世界空间,执行照明等,然后使用您的组合相机矩阵转换为标准化剪辑空间是有意义的。
我知道如果我想在可编程管道中这样做,我可以这样做,但我想知道为什么历史上人们将模型和视图矩阵结合起来。
在图形编程中,相机不存在。它始终固定在 (0,0,0) 并朝向 (0,0,-1)。众所周知,相机完全是人造的,它模仿了我们习惯于观察物体的方式,就像人类一样,我的意思是:四处移动,转动我们的头等等。为了模仿这一点,cg 引入了相机的概念。有趣且众所周知的是,无论您是将相机向右移动还是将场景中的所有其他对象向左移动,都是一样的。modelMatrix
然后通过将对象上的所有变换组合在一个矩阵中来传递该不变性- MVMatrix
。
视图和投影矩阵是分开的,因为这些矩阵进行非常不同的转换。一个非常类似于modelMatrix
并表示 3d 空间内变换,另一个用于计算观察对象的角度。