C++ gluLookAt相机外部矩阵
我想使用相机外部矩阵和gluLookAt函数在图像上显示模型 模型将转换为原点,即模型的质心位于原点。(模型的坐标基于右侧) 使用cvFindExtrinsicCameraParams2函数,我得到了相机外部矩阵E=[R | t] 对于这种情况,我想使用gluLookat显示cad模型 它有三个参数;摄像机位置,摄像机眼睛,摄像机向上 我必须输入哪些值 我猜,摄像机的位置是t:外部矩阵的平移值 此外,如果旋转和平移为零,则摄影机通过(0,0,1)向量查看模型。因此,如果存在旋转,相机眼睛应为R*(0,1,0) 最后,相机向上,如果相机从前面看模型,首先应该是(0,-1,0)。然后新的摄像机上方向向量是R*(0,-1,0)C++ gluLookAt相机外部矩阵,c++,opencv,opengl,camera,C++,Opencv,Opengl,Camera,我想使用相机外部矩阵和gluLookAt函数在图像上显示模型 模型将转换为原点,即模型的质心位于原点。(模型的坐标基于右侧) 使用cvFindExtrinsicCameraParams2函数,我得到了相机外部矩阵E=[R | t] 对于这种情况,我想使用gluLookat显示cad模型 它有三个参数;摄像机位置,摄像机眼睛,摄像机向上 我必须输入哪些值 我猜,摄像机的位置是t:外部矩阵的平移值 此外,如果旋转和平移为零,则摄影机通过(0,0,1)向量查看模型。因此,如果存在旋转,相机眼睛应为R*
但它并没有给我一个正确的结果。有什么问题吗?我的错在哪里?眼睛是相机在空间中观察的一个点。您当前计算的是它应该看的方向。例如,您可以使用
eye = t + R * [0,0,1];
我想知道为什么您要尝试使用
glLookAt
重新创建摄影机矩阵,因为结果应该是您已经拥有的外部摄影机矩阵。眼睛是摄影机正在查看的空间点。您当前计算的是它应该看的方向。例如,您可以使用
eye = t + R * [0,0,1];
我想知道为什么您尝试使用
glLookAt
重新创建摄影机矩阵,因为结果应该是您已经拥有的外部摄影机矩阵。我使用opencv获得了外部矩阵。然后我想使用opengl函数(用于着色)显示它。我尝试了t+r*(0,0,1),但没有显示模型。我不知道为什么。。T_T因为当我设置camera(0,0,-z)、eye(0,0,0)、up(0,-1,0)时它显示模型,然后它显示正确的结果,所以我认为代码是正确的,但值选择不正确…我使用opencv获得外部矩阵。然后我想使用opengl函数(用于着色)显示它。我尝试了t+r*(0,0,1),但没有显示模型。我不知道为什么。。T_T因为当我设置相机(0,0,-z)、眼睛(0,0,0)、向上(0,-1,0)时它会显示模型,然后它会显示正确的结果,所以我认为代码是正确的,但是没有正确选择值。。。