| |||||
| Dernière réponse | |
|---|---|
| Sujet : [OpenGL] Pb avec intersections | |
| LeGreg | sincerement j'ai autre chose a faire qu'aller voir les exemples de Nehe qui sont souvent pas super bien codes ;).
Deja une valeur de 0 pour le Z-Near est une erreur et sera reportee comme telle par ton driver openGL. en gros pour un ZNear de 0, toute ta geometrie serait applatie en une seule valeur du zbuffer. certains drivers ont le comportement precite, d'autres detectent l'erreur et considere que tu as fait une NOOP. ce qu'il faut que tu saches c'est que ton z-buffer n'est pas lineaire en Z malgre ce que semble indiquer son nom. le Z-buffer comme implante par la plupart des constructeurs de carte video est concu pour une chose: offrir le plus de precision pour la resolution du Z-Fighting à proximite de l'observateur. Ce qui est tout a fait logique: Un objet pres, devrait prendre plus de place sur l'ecran et les artefacts devraient etre plus visibles, donc on preserve la precision pour les objets les plus pres. Mais quand 90% des valeurs utilisees par ton z-Buffer se retrouvent dans 10% de ton espace et que tu n'as evidemment que 65536 valeurs possibles, tu te rends bien compte que ca laisse tres peu de precision possible pour les objets situes dans les 90% de ton espace restant. Tu as donc plusieurs solutions, que tu peux combiner: - diminuer l'importance de l'espace proche, en eloignant le zNear tout en conservant ton zfar (qui doit etre le plus proche possible tout en evitant le clipping de tes polygones trop eloignes). Le mieux c'est d'experimenter jusqu'a ce que tu aies la precision desiree. - Augmenter le nombre de valeurs que peut prendre ton z-buffer. Si en passant de 16bits (65536 valeurs) a 24 bits (16Millions de valeurs) voire 32bits (4 Milliards de valeurs) ne regle rien c'est que tu as fait une erreur ailleurs et que changer la resolution du zbuffer ne reglera rien. - Utiliser le Zbuffer pour regler l'ordre relatif des objets et regler les cas d'intersections d'objets eloignes a la main. mais ca ne reglera pas tous les problemes de z-fighting. - passer au W-Buffer si ton hardware le permet. La repartition des valeurs sera uniforme sur ton espace donc attention a la precision des intersections pour les objets les plus proches! A+ LEGREG |
| Vue Rapide de la discussion |
|---|