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