2012-01-20 166 views
1

讓以下矩陣位於左手座標系(列專業)投影視圖矩陣,opengl es。 iOS

我正在使用蘋果的GLKMatrix4x4結構和函數,所以數學運算可以假定爲正確的。

我認爲以下內容會產生正確的矩陣。

projectionViewModel = camera.projection * camera.view * model.view 

但是,這是不正確的,因爲模型開始圍繞相機的平移偏移旋轉。

但是當我做以下事情時,結果是正確的。

projectionViewModel = camera.projection * camera.inverseView * model.view 

我的問題是,我搞砸了別的地方嗎?或者,這是產生projectionViewModel矩陣的正確方法?

GLKMatrix4 modelView = GLKMatrix4Multiply(*[_scene.camera inverseView],*[_frame worldMatrix]); 

GLKMatrix4 projectionViewModel = GLKMatrix4Multiply(*[_scene.camera proj],modelView); 

回答

2

想想看在你想要直接定位在相機上的對象發生什麼條件。所以你有camera.view = model.view。在這種情況下,你真正想要的是無論相機在做什麼以及模型是如何相乘來構成單位矩陣的,因爲在投影之前不需要應用變換。

因此,您需要在設置相機時使用任何用於定位的反算符,因爲反過來就是定義的事情,即與原始數字相乘會給出身份。

所以你沒有搞砸任何東西 - 你給的第二個公式,你說的給你正確的結果是正確的。

+0

結束雙重猜測我自己 – Nico