Probleme Affichage Zbuffer OpenGL

Salut, j’ai une couille d’affichage dansun programme OpenGL et je sais pas pourquoi,
quand je passe dans un mode gluPerspective, voila ce que ca donne, alors qu’en glOrtho, il n’y a pas de problèmes d’affichage:

Le truc c’est que j’ai besoin de pouvoir me rapprocher de la scene, d’ou le gluPersoective.
Si quelqu’un peut m’aider je lui en serias très reconnaissant.

Merci d’avance
Jim

[quote]c’est sur mais bon doit falloir le chercher[/quote]c’est facile : je vais voir les gars du support, je crie “Cliiiieeeentsss” et j’en ai 12 a la douzaine ;)))

Ma carte c une Geforce3Ti200 drivers 30.82 de nvidia
en TP on a des silicon (openGL hard) mais la j’ai testé sur une machine ou c’etait en soft.

Ouais pour le fov c vrai vu comme ca, c’est sur mais bon doit falloir le chercher :wink:

a) implementation OpenGl pourite pour cygwin
:wink: implementation des driver opengl de ta carte pourrie

c une implementation software ou hardware de opengl que vous avez, en TP ?

et sinon, pour la FOV, si car ca change le ratio, donc ca change ta matrice de projection, donc potentiellement ca peut changer la facons dont ton z buffer va etre ecrit, donc ca peut creer du Z fight ! des fois, si ! :wink:

Merci c0unt0 d’essayer de m’aider c sympa.
Bon pour le fov ca change rien, et a priori c normal, je vois pas en quoi ca devrait faire couiller l’affichage (a moins peut etre de mettre de toutes petites valeurs).

J’ai ramené tous mes Z dans une fourchette pas trop grande pour eviter le “Z-fighting” (je savais pas que ca s’appellait comme ca), j’y ai pensé au début, mais en fait non ca change rien, enfin ouais je mets bien glEnable(GL_DEPTH_TEST).

Mais je reviens de TP et la surprise sous Linux, je n’ai pas ce probleme (je programme sous Cygwin a la maison), la bas tout marche nikel, ci dessou un shot pour illustrer mes dires:
<img src=’ http://membres.lycos.fr/jimmatprod/jim/linux_roulaize2.png’ border=0>

Donc :??:

[quote]bah sinon je sais pas ![/quote]C’est pas mal deja moi je trouve :mad: Respect.

  • ton fov (dans gluPerspective) est de 45 ce qui est tres petit (un quake like moyen tourne aux allentours de 90, un jeux course sur les 100/120 (grans angles == impression de vitesse, sisi j’insiste !))
  • l’autre truc c’est que si ton Z depth est trops grands, tu peux avoir du “Z fighting”, c a dire des valeurs de Z trops proches et la carte video se fout dedans (genre un coup un triangle/un coup l’autre), tu peux arranger ca en changeant ton Z far et ton Z Near (gluPerspective), ou bien dans le meme register si tout les z de tes poly sont entre 0 et 10 et que tu as un Z far de 300 tu gache de la precision, ca aussi ca cree du Z fighting.
  • sinon, est-ce que a un moment donne tu lui dit :
    glEnable(GL_DEPTH_TEST); pour qu’il fasse un z test, car le problem peut venir du fait que tu as eu un coup de bol sur ta version 2d (pas de fight, tout dans le bon ordre, ca arrive) mais que la projection te fait "perdre2 ton “bol”.

bah sinon je sais pas !

Merci pour vos reponses,
bon alors c’est des triangles qui sont plans (normal pour des triangles), ensuite voila la definition de ma matrice:
[php]
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(0,
0,
(GLsizei)w,
(GLsizei)h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (GLfloat) w /(GLfloat) h,0.1,300);
glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

gluLookAt( 0, 0, 3*maxZ,
0, 0, 0,
0, 1, 0);
[/php]

Sinon les differents triangles sont sur des plans différents (pas de recouvrements de triangle)
et ils sont issus d’une triangulation de Delaunay (donc aucun recouvrement).

Enfin voici une image en Ortho:
<img src=’ http://membres.lycos.fr/jimmatprod/jim/ortho_couillepo.png’ border=0>

et pour finir ce que dit alain en math :

si tu fait une projection ortho, et que tu veux tracer un point qui est en (x,y,z):
tu va tracer (ou openGL va tracer ) :
(x * x_scale_pour_que_ca_rentre_dans_l_ecran, /* Coordonee ecran /
y * y_scale_pour_que_ca_rentre_dans_l_ecran, /
Coordonee ecran /
1/z /
Z buffer */
(a note que le 1/z est juste la pour que l’affichage soit correcte, car en theorie (donc sans problemes de hardware, tu devrait avoir z, mais vue qu’il faut quand meme que ca s’affiche…)

alors que si tu fait une project en perspective, tu va faire :
(x/z * x_scale_pour_que_ca_rentre_dans_l_ecran, /* Coordonee ecran /
y/z * y_scale_pour_que_ca_rentre_dans_l_ecran, /
Coordonee ecran /
1/z /
Z buffer */

et voila… rulez !

je ne suis pas count0, mais je pense pouvoir t’éclairer:
Dans l’affichage en ortho il n’y a pas de redimensionnement des objets… pas de perspective… si un objet est a Z=0 ou Z=10000 il est affiché la même chose a l’ecran… L’ortho est utile si tu veux faire de l’affichage 2D ou si tu fais un jeu en 3D isométrique…

Avec une projection en perspective, les objets sont plus petits selon leur distance… cette projection est utilisée pour tous les jeux 3D standard…

voila… hope it helps comme on dit.

c0unt0, tu pourrais m’éclairer sur les différences entre l’affichage en ortho et en Perspective, je saisie pas trop et ca m’intéresse.

2 questions :

  • c’est des ngones ou des triangles ? (si c’est des n-gones, alors ZGoblin a raison, sinon un triangle, c’est toujours sur un seul plan !)
  • sinon est-ce que tu est sur que ta matrice de projection est correctement sette ?
  • et est-ce qu’on pourait avoir un shot de la version ortho (pas de projection, pas de perspective) histoire de pouvoir compare ?

marci

Y’a un truc que j’ai pas suivit, normalement gluPerspective, ca doit afficher en mode 3D alors que glOrtho doit afficher en 2D, non ?
Pour moi ton problème vient de tes polygons, ils doivent etre plat c’est à dire tous tes poins doivent etre sur le même plan, j’ai lu que lorsque tous les points du polygon n’était pas sur le même plan, ca dessiné n’importe quoi donc ton problème provient peut etre de la.

Sinon, ca serait plus simple que tu mettes ton source à disposition que je puisse y jeter un coup d’oeil, si ca ne te dérange pas.

Si tu as d’autres problèmes, n’hésite pas à m’en faire part, moi aussi je débute en OpenGL mais je veux bien partager mes quelques connaissances.