使用视锥体透视和GLKit创建天空盒

时间:2012-11-03 08:02:56

标签: iphone ios ipad opengl-es

我在尝试以截头的角度包裹我的场景天空盒时遇到了一些麻烦。

GLKMatrix4 projectionMatrix = GLKMatrix4MakeFrustum(-50, 50, -50, 50, 0.1, 100);

GLKMatrix4 baseModelViewMatrix = GLKMatrix4MakeTranslation(0.0f, -0.8f, 0.0); 
baseModelViewMatrix = GLKMatrix4Scale(baseModelViewMatrix, 0.5f, 0.5f, 0.5f);

self.effect.transform.projectionMatrix = projectionMatrix;
self.effect.transform.modelviewMatrix = GLKMatrix4Multiply(camera, baseModelViewMatrix);

GLKMatrix4 camera = GLKMatrix4MakeLookAt(
                                         self.cameraEye.x,
                                         self.cameraEye.y,
                                         self.cameraEye.z,
                                         0.0,
                                         0.0,
                                         0.0,
                                         0, 1, 0);


self.effect.transform.modelviewMatrix = GLKMatrix4Multiply(camera, baseModelViewMatrix);

self.skyBoxEffect.center = self.cameraEye;
self.skyBoxEffect.transform.projectionMatrix = self.effect.transform.projectionMatrix;
self.skyBoxEffect.transform.modelviewMatrix = self.effect.transform.modelviewMatrix;

我在场景中渲染的对象在感觉或深度上看起来非常漂亮,但是天空盒根本不起作用,图像因为截头锥体视角而扭曲。这里有诀窍吗?如何使用平截头视角制作带有GLKit的天空盒?谢谢!

1 个答案:

答案 0 :(得分:0)

通常需要进行一些调整才能获得与场景相关的平截头体变量。我可能错了,但我认为你的视锥体的数学目前会给你一个160度左右的视野。正常的fov大约是45到80度。检查http://www.songho.ca/opengl/gl_projectionmatrix.html以获取有关定义适当平截头体的更多信息。