我有一個增強現實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時消失)
我的實驗讓我比開始時更困惑(通常意味着我錯過了一個關鍵部分,但我無法弄清楚)。謝謝你的幫助。
你確定你的相機在原點嗎?可能你已經在z-xis中將它翻譯爲-1。 – 2010-04-23 17:29:57
是的,我確定相機在(0,0,0)。我還沒有移動它,此外,模型正在從視口移開,並進一步向下沿負Z軸。 – KLC 2010-04-26 01:20:48