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

OpenGL Discussion :

distortion de texture sur un quad du a la subdivision en 2 triangles


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut distortion de texture sur un quad du a la subdivision en 2 triangles
    Bonjour,

    j'ai un petit problème de mauvais mapping de texture sur des quad. En fait j'applique une texture rectangulaire sur un quad trapezoidale. Cette texture est en fait un dallage. Les coordonées de texture aux coins du quads sont bonnes mais on remarque bien que les lignes du dallage ne sont pas droites. En fait on distingue clairement les 2 triangles formant le quad (les lignes se brisent à l'intersection des triangles). Le mapping s'effectue par triangles et non pas par quad, du coup ca fait pas très propre.

    Ma question est donc la suivante. Y a t'il un moyen de mapper une texture sur un quad directement sans qu'openGL ne le transforme en interne en 2 triangles et du coup déforme mon beau mapping. Evidemment je pourrais subdiviser les faces, mais n'y a t'il pas un autre moyen ?

    Je sais pas si je suis très clair, je peux eventuellement faire des screenshots si c'est pas clair. Merci
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    J'ai fait un petit screenshot pour bien illustré mon problème :

    En rouge le quad (en fait j'ai tracé les 2 triangles)
    En bleu, la ligne brisée dans le dallage.
    En vert, ce que je voudrait que ce soit si le mapping était réalisé sur le QUAD et non sur sa subdivision en 2 triangles.

    Une idée ?
    Images attachées Images attachées  
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Salut,

    est-ce que tu as ceci dans ton initialisation ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Es tu sur que ton quad est sur le même plan ?
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, merci pour vos réponses.

    En fait ce n'est pas une question de correction de perspective (mais elle est activée dans mon initialisation) car le mapping ne change pas en fonction de l'orientation de la face par rapport a la caméra.

    Les quatre sommets de mon quad sont bien sur le même plan.

    En j'ai l'impression qu'en interne, openGL réalise le mapping des textures d'un quad linéairement sur les 2 triangles indépendamment sans tenir compte du xommet en plus du quad. Donc il mappe en utilisant v0,v1 et v2 mais sans tenir compte de v3 (dans le cas du premier triangle) alors que la distortion de la texture dans le quad en entier (y compris dans le triangle (v0,v1,v3)) est sensé être fonction de v3. Hors ce n'est pas le cas. N'y a t'il pas un moyen de dire à openGL de réaliser son mapping en considérant l'intégralité du quad ?

    Ou bien y a t'il un truc que j'ai mal fait ?
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  6. #6
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Comment es tu sur que c'est sur le meme plan ?

    C'est quand même bizarre que les autres cotés de ta fontaine soit bon, et que seul celui là soit mauvais ... Peux tu nous mettre les coordonnées des quatre vertex ?
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    nan aucun des cotés de la fontaine ne sont bon. C'est sur le même plan parceque c'est de la géométrie simple et que visuellement c'est evident. Le plus evident, c'est que cette "distortion" apparait sur la haut de la bordure de la fontaine alors que les quatre sommets ont le même z, donc l'appartenance au même plan est ici evidente.

    Le problème vient du fait que je mappe une zone rectangulaire de texture sur des quads trapézoidaux, enfin je pense. J'ai du rater un truc quelquepart. La l'effet n'est pas trop apparent car mes trapèze se rapproche tout de même fortement de rectangle mais si j'étire un somment fortement, l'effet sera bien plus visible.

    En fait j'utilise des QUAD_STRIP plutot que des QUADS.

    Je n'ai pas mon code la, mais je l'aurai ce soir.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    En fait j'ai trouvé un doc qui expose mon problème. Je vais donc me tourner vers les coordonées Q de texture. Je teste ce soir voir ce que ca donne.

    http://www.r3.nu/~cass/qcoord/

    [EDIT] Je viens de tester et ca a bien résolu le problème. En fait, pour un trapèze, au lieu de :

    il suffit d'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexture4f(u * w,v * w,0,w)
    avec w la longueur du coté sur lequel se trouve le sommet (un des 2 cotés parallèles)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Texture recto verso sur un QUADS
    Par devtroll dans le forum OpenGL
    Réponses: 3
    Dernier message: 18/06/2007, 09h58
  2. Réponses: 13
    Dernier message: 25/01/2005, 10h05
  3. copier une petite texture sur une grosse texture
    Par gaut dans le forum DirectX
    Réponses: 5
    Dernier message: 15/10/2004, 22h12
  4. Disparition des textures sur certaines cartes 3D
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 01/10/2004, 05h40
  5. Texture sur un cube en rotation sous Delphi !!!
    Par Cosmo dans le forum DirectX
    Réponses: 1
    Dernier message: 06/01/2004, 21h14

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