我有一个固定摄像头位置的世界空间中的3d对象的变换矩阵。如果对象没有被转换并且相机被转换,我想导出相机矩阵(位置,查找向量,右向量)。我怎么能计算出来?希望我的问题有道理从对象变换矩阵获取相机矩阵
0
A
回答
0
前提。我们用4x4矩阵表示坐标变换。具体地,4×4矩阵Qab
表示坐标从帧b
变换帧a
的是这样的:
- 及其3x3的左上角子矩阵是旋转矩阵
Rab
,即3×3正交矩阵,其列是的x_b
,所述ordinately组件y_b
,帧b
的z_b
单位矢量,分解d在框架a
。 - 及其3X1右上子矩阵是从帧
a
的原点到帧b
的原点,在帧a
分解平移向量t_ab
。 - 其第4行是[0,0,0,1]。
- 如果
p
是一个点的坐标在帧b
是p_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
。我们可以通过注意到我们可以从o
到c
,首先从o
到w
,然后从w
到c
来计算它。因此,这是Qco
=
Qcw * Qwo
,其中Qwo
=
inv(Qow)
是Qow
倒数,以及表示从所述对象看到的世界坐标系。
+0
有点复杂,但我明白了。谢谢 – itsaMe
相关问题
- 1. 基本矩阵相机矩阵
- 2. 获取两个变换矩阵之间的旋转矩阵(XNA)
- 3. 对新对象实施矩阵变换
- 4. 变换矩阵
- 5. 从单应矩阵提取变换和旋转矩阵?
- 6. 变换矩阵1×4成4X1矩阵
- 7. Matlab的变换2D矩阵3D矩阵
- 8. 变换矩阵对列表
- 9. 将矩阵转换为对角矩阵
- 10. OpenTK矩阵变换
- 11. Qt变换矩阵
- 12. CSS变换矩阵
- 13. MATLAB矩阵变换
- 14. Spritebatch.Begin()变换矩阵
- 15. 从基本矩阵确定相机旋转和平移矩阵
- 16. 从矩阵列表中提取矩阵
- 17. 矩阵的对象?
- 18. 将类似矩阵的对象转换为矩阵
- 19. 相机/查看矩阵
- 20. 矩阵相机,运动conecpt
- 21. gluLookAt相机外在矩阵
- 22. C++矩阵模板,矩阵矩阵和矩阵数相乘之间的模糊
- 23. 获取所选矩阵的列从矩阵
- 24. 从R中的矩阵列表中获取矩阵的维数
- 25. 从矩阵中获取矩阵的名称和值列表
- 26. 相关矩阵
- 27. 对于一个矩阵值获取价值的载体和更换矩阵值
- 28. 转换3D矩阵级联2D矩阵
- 29. 将2D矩阵转换为3D矩阵?
- 30. 用矩阵替换矩阵元素
旋转然后翻译对象由'M1 = T * R'完成。相反,转换摄像头是用'M2'完成的。问题是,如果从相机中看到物体*两个选项都相同*表示'M1 = M2' – Ripi2
这[看链接](https://www.khronos.org/registry/OpenGL-Refpages/gl2。 1/xhtml/gluLookAt.xml)演示如何在相机变换时导出矩阵。 – Ripi2
请参阅[了解4x4同质变换矩阵](https://stackoverflow.com/a/28084380/2521214),例如,您只需在对象后面(相对于它)进行翻译并做相反处理即可获得具有以下内容的相机矩阵模式...但粗糙,你必须采取你的约定... – Spektre