2010-04-22 88 views
0

我有一個增強現實iPhone應用程序,正在從核心動畫轉換爲OpenGL ES 1.1。我添加了從Apple OpenGL模板修改的代碼。我的3D對象(opengl es)正在消失在iPhone攝像頭視圖後面

我的問題是,我的3D對象,當沿負Z軸(遠離用戶)翻譯時,似乎消失在相機視圖中,直到它完全消失。我已經嘗試了幾種解決方案,但無濟於事。

我已經決定什麼:

使用從傑夫拉馬什的博客這裏的3D二十面體,該物體在0,0,0開始,然後隨Z座標轉換。當z值達到-2.0f時,物體消失。它看起來好像正在照相機視圖後面消失。 這是我如何設置我的frustrum &視口(與Apple的代碼不變)

glMatrixMode(GL_PROJECTION); size = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView)/ 2.0);

//Grab the size of the screen 
CGRect rect = self.bounds; 
glFrustumf(-size, size, 
      -size/(rect.size.width/rect.size.height), 
      size/(rect.size.width/rect.size.height), 
      zNear, zFar); 
glViewport(0, 0, rect.size.width, rect.size.height); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

我曾嘗試: 攝像機視圖是主視圖和其他幾個視圖添加到它的子視圖,包括openGLView。爲了測試目的,我評論了這些意見。 我已經應用CATransforms在z方向-500和+500上移動openGLView,並且對相機視圖也一樣。 我也已將上述代碼中的zFar更改爲1.0f,並且它在-2.0的z位置仍然消失,這沒有意義(它不應該在z = 1.0時消失)

我的實驗讓我比開始時更困惑(通常意味着我錯過了一個關鍵部分,但我無法弄清楚)。謝謝你的幫助。

+0

你確定你的相機在原點嗎?可能你已經在z-xis中將它翻譯爲-1。 – 2010-04-23 17:29:57

+0

是的,我確定相機在(0,0,0)。我還沒有移動它,此外,模型正在從視口移開,並進一步向下沿負Z軸。 – KLC 2010-04-26 01:20:48

回答

1

給這個zFar值相當大的值,如1000

順便說記得平截面z值應該給出-zNear和-zFar。所以如果你需要將你的對象從你身上轉移出來,那麼z值應該足夠大以支持場景。因此 - ( - zFar)變成較大的正值。