我很困惑如何將世界空間座標轉換爲相機座標。世界空間相機空間
我現在的理解是,我需要計算攝像機空間向量,其中
N =視點 - LOOKAT
U =向上(0,1,0)×N(標準化)
v = n x u
然後,一旦我有< U,V,N>我會簡單地乘以每個點?
我很困惑如何將世界空間座標轉換爲相機座標。世界空間相機空間
我現在的理解是,我需要計算攝像機空間向量,其中
N =視點 - LOOKAT
U =向上(0,1,0)×N(標準化)
v = n x u
然後,一旦我有< U,V,N>我會簡單地乘以每個點?
讓我們假設:
現在首先構造一個標準正交幀:
爲了改造全局座標框架裝入凸輪座標框架可以應用以下矩陣M_R:
- | R_x,R_y,R_z,0 |
- | U_x,U_y,U_z,0 |
- | -D_x,-D_y,-D_z,0 |
- | 0.0,0.0,0.0,1。0 |
如果凸輪不位於全球原點您還可以申請翻譯M_T:
- | 1,0,0,-e_x |
- | 0,1,0,-e_y |
- | 0,0,1,-e_z |
- | 0,0,0,1 |
最終從全球的完整變換矩陣凸輪座標爲:
- | R_x,R_y,R_z,(R dot -E)|
- | U_x,U_y,U_z,(U dot -E)|
- | -D_x,-D_y,-D_z,(D dot E)|
- | 0.0,0.0,0.0,1.0 |
我認爲這是在以前的帖子錯誤
這個矩陣
| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|
應該是(我在OpenGL測試,這個人是右)
| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, -D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|
D_z中的否定取決於系統是使用右手還是左手的規則。 OpenGL使用右手系統,這就是爲什麼你必須修改你的矩陣(即在右手屏幕中負z點進入屏幕) –
順便說一句。你在文章中提到的矩陣對應於(M_R)^ - 1 =(M_R)^ T在我的文章中,是從凸輪座標到全球座標的逆向變換。 – Dirk
非常感謝!我一直堅持這一點,你的解釋非常明確,易於遵循。 +1 – Freddy