2016-09-27 66 views
1

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

该模型被翻译为原点,即模型的质心位于原点。 (模型的坐标基于右侧)

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

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

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

我必须输入什么值?

我猜,相机位置是t:外在矩阵的翻译值。另外,如果旋转和平移为零,则相机通过(0,0,1)向量看到模型。因此,如果存在旋转,相机眼睛应该是R *(0,1,0)。

最后照相机起来,它应该是(0,-1,0)如果相机看起来在前面模型。然后新的相机向上矢量是R *(0,-1,0)。

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

回答

0

眼睛是相机正在看的空间中的一个点。你目前计算的是它看起来的方向。你可以,例如,使用

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

我不知道为什么你尝试重新使用glLookAt相机矩阵,因为其结果应该是准确,你已经拥有的外部照相机矩阵。

+1

我用opencv获得了外部矩阵。然后我想用opengl函数来显示它(用于阴影)。我试过t + r *(0,0,1),但模型不显示。我不知道为什么.. T_T 因为它显示模型,当我设置相机(0,0,-z),眼睛(0,0,0),向上(0,-1,0),那么它显示正确的结果,所以我认为代码是正确的,但值没有被正确选择... – Wooni