gluLookAt 的相机外在矩阵
Posted
技术标签:
【中文标题】gluLookAt 的相机外在矩阵【英文标题】:camera extrinsic matrix for gluLookAt 【发布时间】: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)。
但它并没有给我一个正确的结果。有什么问题?我的错误是什么?
【问题讨论】:
【参考方案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) 然后它显示正确的结果,所以我认为代码是正确的,但是没有正确选择值...以上是关于gluLookAt 的相机外在矩阵的主要内容,如果未能解决你的问题,请参考以下文章