【问题标题】:camera extrinsic matrix for gluLookAtgluLookAt 的相机外在矩阵
【发布时间】:2016-09-27 05:03:03
【问题描述】:

我想使用相机外在矩阵和 gluLookAt 函数在图像上显示模型。

模型被平移到原点,即模型的质心在原点。 (模型坐标以右手为准)

使用 cvFindExtrinsicCameraParams2 函数,我得到了相机外在矩阵 E = [R|t]。

对于这种情况,我想使用 gluLookat 显示 cad 模型。

它有三个参数;相机位置,相机眼睛,相机向上。

我必须输入什么值?

我猜,相机位置是 t :外在矩阵的平移值。

此外,如果旋转和平移为零,则相机通过 (0,0,1) 向量查看模型。因此,如果存在旋转,相机眼睛应该是 R*(0,1,0)。

最后相机向上,如果相机在前面看模型,首先应该是(0,-1,0)。那么新的相机向上向量为 R * (0,-1,0)。

但它并没有给我一个正确的结果。有什么问题?我的错误是什么?

【问题讨论】:

    标签: c++ opencv opengl camera


    【解决方案1】:

    眼睛是相机正在注视的空间点。您当前计算的是它应该看的方向。例如,您可以使用

    eye = t + R * [0,0,1];
    

    我想知道您为什么尝试使用 glLookAt 重新创建相机矩阵,因为结果应该正是您已经拥有的外部相机矩阵。

    【讨论】:

    • 我使用 opencv 得到了外在矩阵。然后我想使用 opengl 函数(用于着色)显示它。我尝试了 t+r*(0,0,1),但没有显示模型。我不知道为什么.. T_T 因为它在我设置相机时显示模型 (0,0,-z), eye(0,0,0), up(0,-1,0) 然后它显示正确的结果,所以我认为代码是正确的,但是没有正确选择值...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多