【问题标题】:OpenGL ES Screen Projection Matrix and Camera Projection MatrixOpenGL ES屏幕投影矩阵和相机投影矩阵
【发布时间】:2015-04-11 16:05:43
【问题描述】:

我有一个从增强现实应用程序中的相机校准得到的投影矩阵,只要屏幕纵横比与相机图像纵横比匹配,一切都很好。当相机图像与屏幕边对边不匹配时,您会在跟踪中出现失真。

问题场景:

  • iPad 上的 1280x720 视频
  • iPhone 5S 上的 640x480 视频。

工作场景:

  • iPad 上的 640x480 视频
  • iPhone 5S 上的 1280x720 视频。

目标:我想以一般方式处理此屏幕/相机纵横比不匹配问题。

之所以存在此问题,是因为视图在屏幕纵横比中已标准化设备坐标(iPad 为 4:3),而投影矩阵具有相机图像的纵横比(720p 为 16:9)。背景图像需要与投影矩阵匹配,否则增强现实的错觉会失败,因此如果我想在“适合”和“填充”之间切换,我需要更改投影矩阵以匹配图像大小。

注意:我希望在没有 OpenGL 特定解决方案的情况下处理这个问题。因此,我正在寻找一个涉及操纵投影矩阵的更通用的数学答案。

【问题讨论】:

    标签: ios matrix opengl-es projection-matrix


    【解决方案1】:

    但是,我意识到我需要将相机的投影矩阵映射到 屏幕投影矩阵或缩放它。

    纵横比实际上只决定了屏幕上的内容(即您获得的周边视觉量) - 它不应该从根本上改变投影(假设您保持近端和远端剪辑相同)。

    首先要注意的是,实际上并没有安全的映射(即并非屏幕视图中的每个坐标在相机视图中都有对应的坐标,反之亦然)。

    为避免失真,您实际上有两个选择 - 剪辑到两个选项中较窄的一个(丢弃信息)或使用信箱缩小并保持原始纵横比(丢弃屏幕区域)。

    两者都觉得应该可以将一个简单的比例因子应用于最终的剪辑空间变换(假设你在平截头体的两侧同样剪辑,你应该能够乘以轴的剪辑空间坐标你想要剪辑(比例> 1),或者如果你想要信箱,则缩小(比例

    【讨论】:

      【解决方案2】:

      避免处理投影矩阵

      简单的方法,虽然不如数学解决方案在智力上令人满意,但将您的场景放置在相机图像大小的视图中。然后将该视图放在包含视图中。然后调整整个视图的大小以匹配屏幕或填充屏幕大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 2019-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多