【问题标题】:gluUnproject model-view matrixgluUnproject 模型视图矩阵
【发布时间】:2013-09-20 03:09:19
【问题描述】:

我正在将 GLU gluUnproject 方法移植到现代 OpenGL。我大致了解它背后的算法,但我的问题是为什么我们需要模型视图矩阵?它可以只是视图矩阵吗?我们将屏幕坐标取消投影到世界空间,那么为什么我还需要提供一些对象的模型矩阵(作为模型视图的一部分)?或者我可能误解了如何使用该方法?我从未真正使用过固定管道。

【问题讨论】:

  • 你的意思是按视图矩阵的投影矩阵吗?
  • 我的意思是在gluUnproject使用的固定管道示例中,查询GL_MODELVIEW。它是否还包含一些3d对象的模型矩阵?
  • 模型视图矩阵包含模型到世界空间和从世界空间到眼睛空间的转换,但不包含投影。
  • 我知道它不包含投影。但是如果我不引用任何特定对象,模型部分可以只是一个身份吗?
  • 我不确定我是否理解正确,但我会回答我认为你问的问题:模型矩阵可以是单位矩阵,这意味着模型和世界空间是相同的。

标签: c++ opengl glu


【解决方案1】:

gluUnproject 通常被描述为将坐标从屏幕空间(背面)转换到 object 空间。但是,您始终可以使用您喜欢的任何矩阵进入其他空间,因此只需使用此处的视图矩阵即可获得您似乎关心的世界空间值。 GL 的固定函数管道从来没有明确地使用世界空间,并且总是直接对模型和视图矩阵的组合起作用。

【讨论】:

  • 那么,根据你所说,如果模型部分是世界默认(身份),我可以丢弃它吗?
  • @MichaelIV:是的。恒等式的倒数仍然是恒等式,因此单独使用 use V 或假设 M=I 并使用 V*M 作为模型视图矩阵都没关系。
  • 好的,现在我明白了。如果非投影发生在与世界不同的空间中,这可能是必不可少的。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多