2013-10-28 64 views
3

說我是使用下面的代碼來設置投影視圖:將投影矩陣移動到特定的X,Y,Z點? OpenGLES 2.0 - iOS設備

float aspect = fabsf(self.view.bounds.size.width/self.view.bounds.size.height); 
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f),  aspect, 4.0f, 10.0f);  
self.effect.transform.projectionMatrix = projectionMatrix; 

如果我現在想使相機看在我的場景中的特定點,我將如何最好地實現這一點?目前,我改變了modelViewMatrix所以它是鑑於中心移動的對象,但我想知道如果我能以某種方式操縱projectionMatrix達到相同的。

+1

不是我的問題已經解決,但我認爲我們達到類似的(或至少接近)的東西?檢查出來:http://stackoverflow.com/questions/19602190/camera-overlay-change-with-bearing-and-elevation – rkh

回答

2

正如任何好的3D編程基礎教程(如可能爲this one)會告訴你...

  • 一個模式矩陣轉換頂點從模型空間座標(座標中指定您的網格空間,這通常不知道你想在場景中放置模型的位置)到世界空間(你的場景的概念空間)。
  • 一個查看矩陣從世界空間到眼空間轉換(即座標系統相對於爭奪場景中的「攝像機」一)。
  • 投影矩陣從眼空間轉換爲剪輯空間(-1.0〜1.0的立方體表示屏幕加上一些深度,其中GPU然後轉換爲像素空間)。

投影矩陣已經按照相對於視點的方式工作 - 您已經確定了眼睛在哪裏以及它在看什麼點,所以投影矩陣只會改變視場角,縱橫比,以及近和遠的剪切平面。如果您想更改要查看的點,請爲您的View矩陣指定一個不同的LookAt變換。