我有一個固定攝像頭位置的世界空間中的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