【问题标题】:Why OpenGLES stretch my 3D Model?为什么 OpenGLES 会拉伸我的 3D 模型?
【发布时间】:2010-11-07 06:12:36
【问题描述】:

我在 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

【问题讨论】:

    标签: iphone opengl-es blender


    【解决方案1】:

    也许您在搅拌机中的对象有一个不同于 1 的比例,它可能不会被导出(例如,如果您只导出网格,而不是搅拌机对象)。

    在搅拌机中,您可以在对象模式下使用 Alt S -> Clear Scale 清除比例。

    【讨论】:

      【解决方案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 屏幕。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多