【问题标题】:3D Spaces (Model/World, View/Eye, Projection)3D 空间(模型/世界、视图/眼睛、投影)
【发布时间】:2018-01-11 03:29:30
【问题描述】:

这不是一个问题,但我对什么 3D 空间对应什么感到非常困惑。我习惯于听到模型、视图、投影空间,但在我的工作中他们使用世界、眼睛、投影。我没有意识到 World 和 Eye 是模型和视图的同义词,所以如果有人对此有任何困惑,我发现以下说明会有所帮助(希望对您有所帮助)。

局部空间:这些是在 3Ds Max 或任何其他渲染程序中构成 3D 模型的坐标。它定义了 3D 模型本身的顶点空间。

模型/世界空间:将局部空间坐标乘以模型/世界矩阵会将它们带入模型/世界空间。模型/世界空间是我们想象的 3D 世界,没有考虑任何视角。

视图/眼睛空间:将模型/世界空间坐标乘以视图/眼睛矩阵会将它们带入视图/眼睛空间。这是坐标放置在屏幕上的位置,偏离正在使用的透视图。因此,如果您使用透视投影,这会将所有坐标定位为看起来有深度。

投影矩阵:将视图/眼睛空间坐标乘以投影矩阵将获取 3D 透视点并将它们正确映射到 2D 视口(也称为屏幕)。

视口/同质空间:乘以投影矩阵后,您的点需要映射到“真实平面”。这本质上是一种标准化;我们将每个 x,y,z 坐标除以它的 w 分量。坐标也被调整以将原点从屏幕中心移动到左上角。

请随时提供建设性的批评,我愿意接受任何建议。这是我使用的一些附加信息http://antongerdelan.net/opengl/raycasting.html

【问题讨论】:

  • 除了这甚至不是一个问题之外,这种说法还有很多错误。 “模型”空间用作对象空间或“局部”空间的同义词,而不是世界空间。视图空间不应用任何透视,典型的投影矩阵不进行 3d->2d 投影,“均匀空间”不是转换管道中的一个阶段,而是所有这些空间的基本数学概念,甚至转换管道的末端,窗口空间,仍然是 3D - 这就是 z 缓冲区的工作原理。
  • “3D 模型”一词可能会让人感到困惑,具体取决于您与谁交谈。这是基于我发现的内容以及该领域的多个人告诉我的内容、我在学校学到的内容以及我在书籍/互联网研究中发现的内容。同质空间是管道中的一个阶段,根据多个来源,包括我提供的来源。 4 年后,您是第一个不同意这一点的人。
  • 您的参考资料说“同质剪辑空间”,其中“同质”只是描述 剪辑空间 属性的形容词(这是该空间的实际名称) .但是,用于模型和视图变换的仿射变换的常用公式首先依赖于使用同质空间(这就是我们使用 4x4 矩阵进行 3D 变换的原因),尽管这并不是绝对必要的。
  • 正确,但究竟是什么“这个声明有这么多错误”?
  • 嗯,我确实在同一个评论中解释了这一点。

标签: opengl matrix 3d directx


【解决方案1】:

只是一个想法,但您可以添加一个最终阶段“视口空间”(或类似的东西)。

你在 Projection Matrix 阶段暗示过它,但它是在投影矩阵之后应用于顶点的单独变换,其中 x、y 和 z 坐标除以它们的 w 分量以将它们映射到“真实平面",从齐次坐标开始,坐标调整为从屏幕中心向左上角移动原点(0,0)。

【讨论】:

  • 好主意,我会补充的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多