【问题标题】:Why are model and view matrices specifically often combined together?为什么模型和视图矩阵经常特别组合在一起?
【发布时间】:2013-08-27 17:27:35
【问题描述】:

我很难理解为什么模型矩阵和视图矩阵传统上是结合在一起的。我知道你在顶点着色器中做的矩阵乘法越少越好,但是结合投影和视图矩阵对我来说更有意义。

这是因为它们本质上都是相机属性。对我来说,首先使用模型矩阵将顶点转换为世界空间,执行照明等,然后使用您的组合相机矩阵转换为标准化剪辑空间是有意义的。

我知道如果我想在可编程管道中这样做,我可以这样做,但我想知道为什么过去人们将模型矩阵和视图矩阵结合在一起。

【问题讨论】:

  • 看看这里:stackoverflow.com/questions/10617589/…。我觉得答案解释得很好
  • 我还是不明白你为什么不在世界空间做光照,然后一跳就去剪辑空间(我已经读过那个页面了)
  • @ranmat11:该页面上有一篇文章的链接,该文章详细解释了原因。

标签: opengl 3d webgl


【解决方案1】:

在图形编程中,相机不存在。它始终固定在 (0,0,0) 并朝向 (0,0,-1)。众所周知,相机完全是人造的,它模仿了我们习惯于观察物体的方式,就像人类一样,我的意思是:四处移动,转动我们的头等等。为了模仿这一点,cg 引入了相机的概念。有趣且众所周知的是,无论您是将摄像机向右移动还是将场景中的所有其他对象向左移动,都是一样的。然后,通过将对象上的所有转换组合在一个矩阵 - MVMatrix 中,将该不变性转移到 modelMatrix

View 和 Projection 矩阵是分开的,因为这些矩阵进行非常不同的转换。一个与modelMatrix 非常相似,表示3d 空间变换,另一个用于计算观察对象的角度。

【讨论】:

  • 啊。最后一段就是我要找的。​​span>
  • 很高兴它有帮助。在 www.scratchapixel.com 上,您可以从 cg 中找到许多有趣的事实和概念。
  • 虽然我认为我会在我的项目中将模型和视图矩阵分开,所以我不必在灯光位置上使用矩阵将它们带到相机空间。
  • 这就是我喜欢可编程管道的原因!
  • @ranmat11:查看视图和投影矩阵的方式略有不同:投影定义了相机的镜头。就像您可以使用真实镜头进行倾斜和移动(将相机机身保持在原位)一样,您也可以对投影进行相同的操作。视矩阵 OTOH 是您的相机机身或安装在其上的三脚架。您使用视图变换(=“三脚架”)在场景中移动您的相机,并使用投影变换(“镜头的焦距,相对于相机机身的倾斜和移动”)。应该直观地清楚,这些是不同的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多