[OpenGL] [problème] zoom out rend ma heightmap bizarre

Le côté programmation du développement d'un jeu vidéo.

[problème] zoom out rend ma heightmap bizarre

Messagepar chboing » 13 Sep 2010, 11:04

Hello tout le monde !

Je suis débutant, j'ai déjà pas mal appris grâce a ce forum entre autre, mais il reste certains problèmes que je ne sais pas trop par ou prendre.
Le dernier en date qui me contrarie le plus : voir image en attach

à l'écran, une heightmap texturé, et un plan "d'eau" qui coupe cette heightmap à un certain niveau.
Cela fonctionne parfaitement de près, mais si je fais un zoomout un peu lointain, alors je me retrouve avec des "bugs d'affichages "? bizarres.
En gros, on voit l'eau qui est SOUS la heightmap ... comme si le depth test déconnait ou je ne sais pas trop quoi, je sais pas du tout par ou prendre ce pb
Il y avait le même bug avec la partie de la heightmap immergée(on voyait la terre sous la mer), mais je l'ai résolu en n'affichant pas les polygones au niveau 0 (donc en gros ceux qui sont sous la mer)

Si qqun avait un petit conseil, une bonne pratique ou autre ... je suis preneur.
Merci d'avance !

chboing

ps: petite précision qui finalement pourrait avoir son importance je sais pas
la heightmap utilise les vbo, et la mer une display list .... mais ça faisait la même chose avant que j'utilise les vbo donc a priori pas ça ....
Fichiers joints
zoomout.jpg
chboing
Hello World, I'm new !
 
Messages: 3
Inscription: 13 Sep 2010, 09:17

Messagepar teto » 13 Sep 2010, 11:09

est-ce que tu peux poster du code ?
Avatar de l’utilisateur
teto
 
Messages: 1168
Inscription: 26 Juil 2005, 19:02
Localisation: /home/Paris

Messagepar deathangel » 13 Sep 2010, 11:28

ça peut peut être venir des erreurs dues à la précision du tampon de profondeur.

Quand tu fais un rendu d'objet, chaque triangle dessiné à l'écran entraîne le stockage de la profondeur du pixel à l'écran dans le tampon de profondeur. Chaque pixel possède donc une "profondeur". Quand tu passes sur un deuxième objet, il va tester la valeur de profondeur courante du pixel avec celle stockée dans le tampon. Si la distance est inférieure, il affiche le nouveau pixel, sinon il garde l'ancien.

Vu qu'OpenGL gère tout seul les profondeurs dans le tampon, il se peut que le résultat du calcul de profondeur devienne moins précis ou les deux profondeurs sont trop proches et dans ce cas là, il fait des approximations.
Tu peux essayer de voir ça en affichant les valeurs de tampon de profondeur dans les pixels considérés.
95% des problèmes informatiques se situent entre la chaise et le clavier
--> Créez votre robot chien : http://doggyproject.free.fr/
--> Gagnez des PACK+ gratuitement : http://www.packbarre.com/
--> S.U.S Tennis de table http://www.sus.asso.fr
Avatar de l’utilisateur
deathangel
Hello World, I'm new !
 
Messages: 963
Inscription: 10 Avr 2005, 08:50
Localisation: Strasbourg

Messagepar chboing » 13 Sep 2010, 11:32

est-ce que tu peux poster du code ?

je pourrai sans doute me débrouiller pour isoler le terrain et la "mer" dans un morceau de code oui, mais je pensais plutôt a une erreur évidente qui saute aux yeux des experts...
je vais essayer de faire ça qd même

ça peut peut être venir des erreurs dues à la précision du tampon de profondeur.

c'était une des idées qui m'étaient venues et je suis content que tu en parles car cela ressemble exactement à ça,
je vais essayer d'afficher les valeurs de tampon de profondeur et comparer ca (en espérant que ca ne soit pas un calvaire :) )
si il s’avérait que ce soit ça, on peut améliorer la précision de ce tampon de profondeur ? ou bien il me faudra trouver une autre solution :/
chboing
Hello World, I'm new !
 
Messages: 3
Inscription: 13 Sep 2010, 09:17

Messagepar chboing » 13 Sep 2010, 12:01

chouette !

très bon petit papier qui a résolu mon problème !
http://www.opengl.org/resources/faq/technical/polygonoffset.htm

merci deathangel pour avoir confirmé mes doutes
:D
chboing
Hello World, I'm new !
 
Messages: 3
Inscription: 13 Sep 2010, 09:17

Messagepar deathangel » 13 Sep 2010, 12:52

de rien, je m'étais aussi pris la tête sur un problème similaire à une époque ^^ par contre je me souvenais plus du tout comment je l'avais résolu :p et en effet c'est le glPolygonOffset
95% des problèmes informatiques se situent entre la chaise et le clavier
--> Créez votre robot chien : http://doggyproject.free.fr/
--> Gagnez des PACK+ gratuitement : http://www.packbarre.com/
--> S.U.S Tennis de table http://www.sus.asso.fr
Avatar de l’utilisateur
deathangel
Hello World, I'm new !
 
Messages: 963
Inscription: 10 Avr 2005, 08:50
Localisation: Strasbourg


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron