2017-09-27 135 views
0

我有一个固定摄像头位置的世界空间中的3d对象的变换矩阵。如果对象没有被转换并且相机被转换,我想导出相机矩阵(位置,查找向量,右向量)。我怎么能计算出来?希望我的问题有道理从对象变换矩阵获取相机矩阵

+0

旋转然后翻译对象由'M1 = T * R'完成。相反,转换摄像头是用'M2'完成的。问题是,如果从相机中看到物体*两个选项都相同*表示'M1 = M2' – Ripi2

+0

这[看链接](https://www.khronos.org/registry/OpenGL-Refpages/gl2。 1/xhtml/gluLookAt.xml)演示如何在相机变换时导出矩阵。 – Ripi2

+0

请参阅[了解4x4同质变换矩阵](https://stackoverflow.com/a/28084380/2521214),例如,您只需在对象后面(相对于它)进行翻译并做相反处理即可获得具有以下内容的相机矩阵模式...但粗糙,你必须采取你的约定... – Spektre

回答

0

前提。我们用4x4矩阵表示坐标变换。具体地,4×4矩阵Qab表示坐标从帧b变换帧a的是这样的:

  • 及其3x3的左上角子矩阵是旋转矩阵Rab,即3×3正交矩阵,其列是的x_b,所述ordinately组件y_b,帧bz_b单位矢量,分解d在框架a
  • 及其3X1右上子矩阵是从帧a的原点到帧b的原点,在帧a分解平移向量t_ab
  • 其第4行是[0,0,0,1]。
  • 如果p是一个点的坐标在帧bp_b= [px_b, py_b, pz_b, 1],然后在帧a在帧中的相同点的p_a= [px_a, py_a, pz_a, 1]p_a.T=Qab * p_b.T,其中x.T给出的坐标指的是矢量x的转置。请注意,我们附加一个1作为虚拟第四个坐标,以便能够将3D点乘以4x4矩阵。

现在,你的问题。假设Qcw是代表来自世界参考框架的相机的旋转和平移的4x4矩阵,并且Qow对象从世界的类似转换。

然后你的答案是相机从对象变换Qco。我们可以通过注意到我们可以从oc,首先从ow,然后从wc来计算它。因此,这是Qco=Qcw * Qwo,其中Qwo=inv(Qow)Qow倒数,以及表示从所述对象看到的世界坐标系。

+0

有点复杂,但我明白了。谢谢 – itsaMe