IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GLUT Discussion :

Précision Z Buffer


Sujet :

GLUT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 109
    Par défaut Précision Z Buffer
    Bonjour,

    Je cherche à utiliser un Z Buffer avec un code glut pour éliminer les parties cachées de ma scène et je voudrais avoir une précision sur la distance de l'ordre du millimètre.

    Le centre de ma scène se situe à environ environ 1500m (ca peut varier jusquà 5-6km) de ma caméra. La zone d'intérêt (en profondeur) est de 500m autour du centre de la scène. J'ai donc réglé le near range et le far range à respectivement 1000m et 2000m

    Quelle est la précision théorique dans ce cas ?

    Mes tests montrent que j'ai plus une précision de l'ordre de 10cm... Comment puis je augmenter la précision en glut ?

    Merci pour votre aide

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Ce qui m'étonne c'est que vous parliez d'unité de mesure.
    Il faut savoir qu'OpenGL n'utilise pas d'unité de mesure. Je ne sais pas trop comment le dire. Mais les cm dans OpenGL ne réprésente absolument rien. ( ni les mètres )

    Lorsque l'on déplace un objet de 1 ( glTranslated(1,0,0) ), ce n'est ni des cm, ni des pixels ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 109
    Par défaut
    Bonjour,

    Je ne savais pas à propos des unités de mesure. Merci pour l'info
    Voilà le raisonnement (qui peut être faux) que j'ai utilisé pour faire mes tests de précision. J'ai l'impression que le raisonnement qui suit reste valable si on met des "mètres" à la place des "unités de mesure" mais je me trompe peut être.

    Je me suis fabriqué un cube de 1 unité de mesure de coté en openGL centré sur (0,0,0).
    J'ai placé une caméra à une distance d'environ 10000 unité de mesure du centre du cube.

    J'ai calculé le Zbuffer pour obtenir ce cube sur 1 seul pixel de mon image et j'ai comparé les mesures de distance entre le centre du cube et ma caméra. Il y a une différence. Ca parait normal car après tout la facette que je regarde est plus proche de la caméra que le centre du cube.

    Donc ce que j'ai fait c'est déplacer la caméra suivant un axe parallèle à une face du cube. Par rapport au centre du cube, la distance suit théoriquement une parabole. Les variations de distances le long de ma trajectoire sont de l'ordre de 1 unité de mesure (elle varie entre 9985 et 9986).
    Avec le ZBuffer, j'ai toujours la même valeur : 9985.19xxx. J'ai mis le near range à 9000 et le far à 20000. Je me dis donc qu'il y a un problème de précision mais après je peux avoir mal configuré également le ZBuffer. Qu'en pensez vous ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 109
    Par défaut
    En utilisant la routine gluUnProject pour connaitre la position des points 3D à partir du ZBuffer et des coordonnées de l'image du ZBuffer, je trouve effectivement que mes points ne sont pas sur les surfaces des cubes mais à 0.1, 0.2 unité de mesure ce qui n'est pas assez précis pour mon appli

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    Je suis un peu perdu il faut dire,
    mais je pense que si tu veux des trucs plus précis, il faudrait que vous changiez vos valeurs pour des floats. Pour l'instant j'ai l'impression que vous utilisez juste des ints
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 109
    Par défaut
    Désolé si je ne suis pas clair

    Mes valeurs sont effectivement en float en non en int.

    Pour mon problème, je pense avoir trouver une solution:
    -Calculer la position 3D approchée du point avec gluUnproject()
    -Récupérer l'indice de facette à travers le color buffer
    -projeter orthogonalement le point sur la facette

    de cette façon le point 3D fourni par mon Z buffer me permettra d'obtenir un point 3D sur mes facettes.

Discussions similaires

  1. [OpenGL 4.x] Changer la précision du Z-buffer
    Par GilbertLatranche dans le forum OpenGL
    Réponses: 4
    Dernier message: 11/03/2013, 19h58
  2. stencil buffer
    Par patapetz dans le forum OpenGL
    Réponses: 6
    Dernier message: 26/02/2004, 17h23
  3. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35
  4. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00
  5. Alpha blending et Z-buffer directx 8
    Par Cesar4 dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo