OpenGL, déformation des objets

Signaler
Messages postés
68
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2012
-
Messages postés
68
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2012
-
Bonjour

Je programme avec les bibliothèques OpenGL et GLUT, et je me trouve confronté à quelque chose d'un peu génant.
Je dessine plusieurs objets(cube, sphère...) dans ma scène 3D à l'aide la la fonction glutSolid...().
Tout les objets se trouvant au bord de l'écran sont déformés, par exemple dans le cas de la sphère on dirait qu'elle n'est plus construite à partir de cercles mais d'éllipses.
J'utilise un angle de vision de 45 degrés, j'ai essayer de le changer mais pour avoir quelque chose de presque correct il me faut une valeur inférieure à 10 degrés.

Est-ce que ce phénomène est normal ? Puis-je faire quelque chose pour éviter cette déformation ?

Merci d'avance.

5 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Salut,

Tu es sûr d'avoir mis en place le ratio largeur / hauteur correctement si tu utilises gluPerspective ? Si tu n'utilises pas gluPerspective, qu'utilises tu ?
Messages postés
68
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2012

Salut

Oui oui j'ai bien mis en place le ratio avec cette fonction, tout les objets proches du centre de l'écran sont impécables et plus on se raproche des bords plus c'est déformé.

J'ai ceci :
gluPerspective(45,this->screenRatio,0.1,3000);

screenRatio est défini en float, comme la largeur divisé par la hauteur.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Tu as bien vérifier la valeur de this->screenRatio (Avec un débogueur ou un cout juste avant l'appel à gluPerspective) ?
Messages postés
94
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2013

[b]Salut
Premièrement la déformation est normale !!! /b

Pour etre sur de ta valeur de Ratio. Essaye ceci :

// Fonction Redimensionnement de la Fenetre
void MyReshape(int width, int height)
{
gFenetreWidth = width; // Variable Globale.
gFenetreHeight = height; // Variable Globale.


}


/*...Puis dans ta fonction pointé par glutDisplayFunc ...*/
gluPerspective(50.0f,(GLfloat) gFenetreWidth/(GLfloat)gFenetreHeight,0.1,50);



sinon tu as :
void glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far)
pour définir ton volume de Visu.
Mais gluPerspective donne de bon résultat.

Sinon, envoie une photo de ton réultat, je ne vois pas bien ton problème:
La perspective induit une Déformation, mais avec 45° cela ne devrait pas être génant !!!!

Si la percpective te cause problème renplace :
gluPerspective()
par gluOrtho2D() ou glOrtho().

++

Yeeh Baby
Messages postés
68
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2012

Salut

Je sais bien que la perspective implique une déformation, mais c'est simplement que je la trouve un peu trop importante.

Comme tu me l'a conseillé j'ai fait une prise d'écran, il s'agit du menu principal. Lorsque que l'on survole les boutons il apparait à gauche et à droite de ceux-ci une sphère. Pour que tu puisse mieux voir la déformation j'ai désactivé l'éclairage sur la sphère de droite.



Normalement en désactivant la lumière on perd l'effet de profondeur et on devrait obtenir un cercle, ce qui n'est pas vraiment le cas.