【问题标题】:3D rendering in OpenGL: model/view/projection vs translation/rotation/camera matricesOpenGL 中的 3D 渲染:模型/视图/投影与平移/旋转/相机矩阵
【发布时间】:2016-11-28 20:40:29
【问题描述】:

我想在从相机捕获的帧中添加一个网格模型(比如说一个立方体)

我也知道关于放置立方体的所有信息:

  1. 平移矩阵 - 相对于相机
  2. 旋转矩阵 - 相对于相机
  3. 相机校准矩阵 - 焦距、主点等(内在参数)

如何将此信息转换为模型/视图/投影矩阵?

应该为这些矩阵设置什么值?

例如,假设我想在屏幕上显示点 [x, y, z, 1], 那么应该是这样的: [u, v, 1] = K * [R | T] * [x, y, z, 1], 而:

u, v 是屏幕(或摄像头捕获)中的坐标,并且:

K、R 和 T 是相机的内在参数,分别是旋转和平移。

如何将 K、R、T 转换为模型/视图/投影矩阵?

【问题讨论】:

    标签: opengl computer-vision augmented-reality


    【解决方案1】:

    [R | T] 将是您的 model-view 矩阵,K 将是您的 projection 矩阵。

    模型-视图矩阵通常是一个矩阵。分离只是概念性的:模型从模型坐标转换为世界坐标,视图从世界坐标转换为相机(尚未投影)坐标。这在相机和物体相互独立移动的应用中是有意义的。另一方面,在您的情况下,相机可以被认为是固定的,并且其他所有内容都与相机相关。所以你只需要处理两个矩阵:model-view和projection。

    【讨论】:

      【解决方案2】:

      假设您的相机内在矩阵来自 OpenCV (http://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html),这里描述了如何初始化您的 OpenGL 投影矩阵: https://blog.noctua-software.com/opencv-opengl-projection-matrix.html


      cx, cy, width 和 height 以像素为单位

      至于你的 OpenGL 模型视图矩阵,真的很简单:


      所以最后你的模型-视图-投影矩阵是:

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 1970-01-01
        • 2015-04-11
        • 2018-07-15
        • 2014-07-31
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多