【问题标题】:Setting Up a Coordinate System For Perspective Viewing?为透视视图设置坐标系?
【发布时间】:2012-10-02 18:32:18
【问题描述】:

我了解平截头体查看系统背后的概念;它的形状像金字塔,随着物体靠近中心,它们会变小,直到最终被剪掉。但是,当在 OpenGL 中使用查看投影时(注意:我不使用已弃用的功能),您可以像这样设置坐标系:

orthoExample(left, right, bottom, top, near, far);

没关系,但说到透视,事情就有点奇怪了。

perspectiveExample(field_of_view_y, aspect, near, far);

如何使用这样的功能设置坐标系?!?它不允许我指定左、右、下、上等。我知道透视只是平截头体投影的一种变体......

【问题讨论】:

  • 确实没有正交投影那么简单。我不记得数学了,但你可以看看 GLU 库的 gluPerspective 命令。它大大简化了透视投影的设置。如果你真的想,我可以做一些数学研究并将它们发布在这里(它们并不难)。
  • 我建议查看 GLM - OpenGL 数学库。它具有构建所有这些的例程 - 并且面向 GLSL(例如,非弃用功能;))glm.g-truc.net
  • 我希望可以,但我使用的是 C。不过,我使用的是类似的库,所以如果你能指出我类似的 GLM 方法。 @ViníciusGobboA.deOliveira:我正在使用来自单独库的等效函数,但我不明白如何通过该命令设置坐标系?我知道它在内部使用了截锥体。
  • 我将清除我书本上的灰尘,并挖掘数学实际上是如何完成的。我有一个斯诺克游戏的旧项目(我想是 2009 年),只是为了好玩。我将向您发送使用 gluPerspective 设置投影的 cod sn-p(或整个项目,如果您愿意)。这不是您想要的,但它可能对我们双方都有帮助。

标签: c opengl projection-matrix frustum perspectivecamera


【解决方案1】:

找到here 的代码应该可以为您解决问题。

以 Z 轴为投影中心。 tan(fov_y)*near 给你顶部(和负值,底部)。纵横比是宽度与高度的比率,因此将纵横比乘以顶部可以得到右,而负数是左。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多