2009-07-01 7 views
1

J'ai créé un modèle 3D simple dans Blender, et l'ai importé dans OpenGLES pour le SDK iPhone. Le modèle importé sans problèmes pour la plupart, mais comme vous pouvez le voir à partir des liens photo inclus (photobucket), OpenGL étire le modèle au-delà de ses proportions prévues. Les cylindres circulaires sont ovulaires, le corps trapu rectangulaire est grand, etc. Je suis un novice en ce qui concerne OpenGL alors s'il vous plaît éclairez-moi: Pourquoi OpenGL (ES) étirerait mon modèle 3D et quelles sont les étapes de dépannage?Pourquoi OpenGLES étire mon modèle 3D?

PICS(pls ouvrir des liens dans une nouvelle fenêtre vous)

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

Répondre

2

Peut-être votre objet dans un mélangeur a un de ses échelles di fferent à partir de 1, il ne peut pas être exporté (par exemple si vous exportez uniquement le mesh, pas l'objet blender).

Dans blender vous pouvez effacer les échelles avec Alt S -> Clear Scale en mode objet.

+0

Merci! Cela a résolu mon problème. – RexOnRoids

2

Je sais que c'est vieux mais il serait utile si quelqu'un cherche ce problème pour avoir une référence correcte.

Lorsque vous restituez les choses en OpenGL, la matrice de projection est réglé sur la matrice d'identité au moment du rendu dans le modèle:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

Cela signifie que openGL se rendre à un écran de format 1: 1. Pour résoudre ce problème, vous pouvez effectuer les opérations suivantes:

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); 

Ceci définit le rapport d'aspect de 1.33: 1 ou 3: 2 ce qui correspond à l'écran de l'iPhone.

Questions connexes