OpenGL, déformation des objets

mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 4 sept. 2010 à 18:00
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 25 sept. 2010 à 21:16
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

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
7 sept. 2010 à 12:43
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 ?
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
7 sept. 2010 à 18:28
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.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
8 sept. 2010 à 09:46
Tu as bien vérifier la valeur de this->screenRatio (Avec un débogueur ou un cout juste avant l'appel à gluPerspective) ?
0
shorzy Messages postés 94 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 juin 2013
13 sept. 2010 à 10:19
[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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
25 sept. 2010 à 21:16
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.
0
Rejoignez-nous