问题的简短版本:
我会放一个四边形。我知道窗口坐标中屏幕的宽度和高度,我知道 3D 中四边形的 Z 坐标。我知道FOVY,我知道方面。四边形将沿 Z 轴放置,我的相机不会移动(放置在 0、0、0)。我想找出恰好适合我的屏幕的四边形 IN 3D COORDINATES 的宽度和高度。
问题的长版:
我想在指定的偏移 Z 处沿 Z 轴放置一个四边形,我想找出将完全填充整个屏幕的四边形的宽度和高度。
我曾经在 gamedev.net 上发表过一篇文章,其中使用了类似于以下的公式:
*dist = Z * tan ( FOV/2 )*
现在我再也找不到那个帖子了!虽然相似,但还是有所不同,因为我记得在那个工作公式中,它们确实使用了 screenWidth 和 screenHeight,它们是窗口坐标中屏幕的宽度和高度。
我对视锥体、fov 和方面等概念并不十分熟悉,所以这就是我无法自己计算公式的原因。此外,我确定我不需要 gluUnproject (我试过了,但结果还差得很远)。这不是一些gl调用,它只是一个数学公式,可以找出可以填充整个屏幕的3D空间中的宽度和高度,IF Z偏移,窗口坐标中的宽度和窗口坐标中的高度是已知的。
最佳答案
假设在 Y-Z 平面中测量 FOV,则:Height = Z * tan(fov/2)
width = height * aspect_ratio
关于Opengl:给定 Z 的值,将四边形拟合到屏幕上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4590588/