【问题标题】:Opengl: fit a quad to screen, given the value of ZOpengl:给定Z的值,将四边形拟合到屏幕上
【发布时间】:2019-11-12 23:33:25
【问题描述】:

问题的简短版本:

我会放一个四边形。我知道窗口坐标中屏幕的宽度和高度,我知道 3D 中四边形的 Z 坐标。我知道FOVY,我知道方面。四边形将沿 Z 轴放置,我的相机不会移动(放置在 0、0、0 处)。我想找出完全适合我的屏幕的四边形 IN 3D 坐标的宽度和高度。

问题的长版:

我想在 Z 轴上以指定的偏移量放置一个四边形Z,我想找出恰好填满整个屏幕的四边形的宽度和高度。

我曾经在 gamedev.net 上发过一个帖子,使用的公式类似于以下:

*dist = Z * tan (FOV / 2)*

现在我再也找不到帖子了!虽然类似,但还是有区别,因为我记得在那个工作公式中,它们确实使用了 screenWidth 和 screenHeight,它们是窗口坐标中屏幕的宽度和高度。

我对平截头体、fov 和方面等概念并不十分熟悉,因此我无法自己制定公式。此外,我确定我不需要 gluUnproject(我试过了,但结果很差)。这不是一些gl调用,它只是一个数学公式,可以找出可以填满整个屏幕的3D空间中的宽度和高度,IF Z偏移量,窗口坐标中的宽度和窗口坐标中的高度是已知的。

【问题讨论】:

  • 为什么需要这个?您可以轻松地从 2D 渲染模式来回切换。

标签: opengl coordinates screen


【解决方案1】:

假设 FOV 是在 Y-Z 平面上测量的,那么:

Height = Z * tan(fov/2)

width = height * aspect_ratio

【讨论】:

  • 非常感谢。我刚刚意识到我的 fov 不是弧度,这导致了错误的值。
  • 这不是应该是 2 * Z * tan(fov/2) 吗?
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多