【问题标题】:OpenGL: Mix orthographic and perspective projectionOpenGL:混合正交投影和透视投影
【发布时间】:2013-11-26 06:39:14
【问题描述】:

我想混合使用透视和正交视图,但无法使用。

我希望 X 和 Y 坐标是正交和 Z 透视。为了澄清起见,我添加了从 OpenGL 坐标到屏幕显示的所需转换的草图:

(我从tutorial 开始,但找不到如何获取顶部、底部等值)

【问题讨论】:

  • 您使用的是哪个版本的 OpenGL?并且您已经使用自定义矩阵了吗?
  • 您想组合透视矩阵和剪切矩阵,我相信...我认为没有用于构建剪切矩阵的命令。您必须自己构建它。
  • 图表上的坐标看起来不对,有 6 个顶点的 x 坐标为 10。
  • @JWWalker:坐标我修好了,谢谢提示。

标签: opengl projection-matrix


【解决方案1】:

您绘制的只是透视图,而不是混合图。您只需确保观察方向与 z 轴平行,以使盒子的正面和背面保持矩形。

【讨论】:

  • 我已经尝试过了,它确实有效。一旦我弄清楚如何缩放场景以使场景在视锥体内最大化,我会将其发布为答案。
【解决方案2】:

您或许可以使用glFrustum 来实现这一点。

如果您使用标准透视矩阵并且相机朝向盒子正面,X/Y 将是均匀的,但远离相机移动会将 X/Y 坐标移向中心,从而缩小它们以获得标准视差效果.您绘制的是向窗口顶部移动。您需要做的就是将透视投影裁剪到其标准中心以下。这就是glFrustum 的用武之地 - 将通常对称的 top/bottom 参数向下移动,沿您想要的轴对齐相机/视图矩阵,您应该会获得所需的投影。

相机/视图的任何旋转都会破坏 X/Y 平面上的均匀投影。对于相机移动,您只能平移和移动glFrustum 边界。

编辑想一想,您可能只需在调用 gluPerspective 之前输入一个 glTranslatef(shearX, shearY, 0) 并实现相同的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2012-05-15
    相关资源
    最近更新 更多