簡體   English   中英

從相機矩陣獲取投影和視圖矩陣

[英]Get Projection and View Matrix from Camera Matrix

我有3 * 4相機矩陣,即P = K[R | -RC] P = K[R | -RC] ,其中K是固有攝像機矩陣, R是旋轉矩陣, C是攝像機相對於世界原點的位置, -RC是平移。 我可以將P分解為KRC 我想如何使用此相機信息在openGL中進行渲染。 我應該如何使用KRC設置View Matrix和Projection Matrix; 在openGL中,使其代表實際的相機位置?

在OpenGL中,所有矩陣都是4x4齊次變換,如下所述:

[Xx][Yx][Zx][Tx]
[Xy][Yy][Zy][Ty]
[Xz][Yz][Zz][Tz]
[Xw][Yw][Zw][Tw]

您的相機矩陣和視圖矩陣是同一件事,並由“向上”向量,“位置”向量和“方向”向量構成。

從這些向量,您可以計算視圖矩陣:

vec3 Z = Eye - Location; //this is your "forward" vector
Z.Normalize();
vec3 Y = Up;
vec3 X = Y.Cross( Z ); //crossing Y with Z gives you a perpendicular vector, which is needed to construct a coordinate basis matrix

然后,您可以像這樣構造矩陣:

[Xx][Yx][Zx][-X.Dot( Eye )]
[Xy][Yy][Zy][-Y.Dot( Eye )]
[Xz][Yz][Zz][-Z.Dot( Eye )]
[Xw][Yw][Zw][1.0]

然后你有你的觀點矩陣

您的投影矩陣與此數據無關,代表了視圖/世界到屏幕空間的轉換,並且取決於您的屏幕尺寸,視角范圍以及近/遠剪切范圍。

我不記得如何從這些數據計算投影矩陣,所以我只建議您,如果您使用C ++進行GL工作,則應下載並使用GLM數學庫,該庫具有這些常用功能已經編寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM