为什么OpenGLES会拉伸我的3D模型?

时间:2009-07-01 07:57:15

标签: iphone opengl-es blender

我在Blender中创建了一个简单的3D模型,并将其导入到iPhone SDK的OpenGLES中。导入的模型大部分没有问题但是从包含的照片链接(photobucket)可以看出,OpenGL正在将模型拉伸超出预期的比例。圆形圆柱体是圆形的,深蹲的矩形体高,等等。我是OpenGL的新手所以请赐教:为什么OpenGL(ES)会拉伸我的3D模型以及有哪些故障排除步骤?

PICS (请自行在新窗口中打开链接)

Lego Brick Modeled in Blender
Lego Brick Modeled in Blender
Lego Brick Rendered (Stretched) in OpenGLES
Lego Brick Rendered (Stretched)in OpenGLES
Lego Brick Rendered (Stretched) in OpenGLES

2 个答案:

答案 0 :(得分:2)

也许您在blender中的对象有一个与1不同的比例,它可能无法导出(例如,如果您只导出网格,而不是blender对象)。

在搅拌机中,您可以使用Alt S清除秤 - >在对象模式下清除缩放。

答案 1 :(得分:2)

我知道这已经过时了,但如果有人正在搜索此问题以获得正确的参考,那将会非常有用。

在OpenGL中渲染时,投影矩阵在模板中的渲染时设置为单位矩阵:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

这意味着openGL将呈现为宽高比为1:1的屏幕。要解决此问题,您可以执行以下操作:

float m[16] = {1.33,0,0,0,
        0,1,0,0,
        0,0,1,0,
        0,0,0,1};
    glMatrixMode(GL_PROJECTION);
    glLoadMatrixf(m);

将宽高比设置为1.33:1或3:2,对应于iPhone屏幕。