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 :

Comment texturer un polygone quelconque ?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Comment texturer un polygone quelconque ?
    Bonjour,


    J'utilise OpenGL avec SDL et en mode 2D.

    Je commence à utiliser les textures et tous les exemples que je trouve s'appliquent à des zones rectangulaires...

    Je voudrais appliquer une texture à un polygone quelconque et la méthode suivante me donne n'importe quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      glBegin(GL_POLYGON);
      glVertex2f(0.0, 0.0);
      glTexCoord2f(0.0, 0.0);
     
      glVertex2f(0.0, 256.0);
      glTexCoord2f(0.0, 4.0);
     
       glVertex2f(256.0, 256.0);
      glTexCoord2f(4.0, 4.0);
     
      glVertex2f(256.0, 0.0);
      glTexCoord2f(4.0, 0.0);
     
      glEnd();
    Le code précédent fonctionne très bien, par contre, le code suivant...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      glBegin(GL_POLYGON);
      glVertex2f(0.0, 0.0);
      glTexCoord2f(0.0, 0.0);
     
      glVertex2f(0.0, 256.0);
      glTexCoord2f(0.0, 4.0);
     
      glVertex2f(128.0, 128.0);
      glTexCoord2f(2.0, 2.0);// ajout d'un cinquième point
     
       glVertex2f(256.0, 256.0);
      glTexCoord2f(4.0, 4.0);
     
      glVertex2f(256.0, 0.0);
      glTexCoord2f(4.0, 0.0);
     
      glEnd();
    donne texture irrégulière !

    Il y a une astuce pour texturer (en mode GL_REPEAT) un polygone quelconque (non convexe) ?

    Merci.

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 594
    Par défaut
    OpenGL ou DirectX ne gèrent pas les polygones concaves (= non convexe)
    aucune chance que ça fonctionne

    oublies les GL_POLYGON lents et limités et passes aux GL_TRIANGLES rapides optimisés et surtout toujours convexes

    [edit] la définission d'un polygon convexe peut-etre trouvée ici :
    http://fr.wikipedia.org/wiki/Convexit%C3%A9
    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.

  3. #3
    Invité
    Invité(e)
    Par défaut Concordance des raccords
    Citation Envoyé par shenron666
    OpenGL ou DirectX ne gèrent pas les polygones concaves (= non convexe)
    aucune chance que ça fonctionne

    oublies les GL_POLYGON lents et limités et passes aux GL_TRIANGLES rapides optimisés et surtout toujours convexes

    [edit] la définission d'un polygon convexe peut-etre trouvée ici :
    http://fr.wikipedia.org/wiki/Convexit%C3%A9
    OK, merci.

    Donc je suis bon pour faire un maillage de mon polygone...(ça tombe bien je l'ai déjà fait en TP )

    Et pour les raccords de texture entre deux triangles consécutifs... comment faire un raccord parfait ? J'espère que ce ne sera pas trop compliqué...

    Je me demande si je n'aurais pas plutôt intérêt à utiliser carrément une image précalculée...

    Je vais voir, merci en tous cas !

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 594
    Par défaut
    Citation Envoyé par Kaji
    Et pour les raccords de texture entre deux triangles consécutifs... comment faire un raccord parfait ? J'espère que ce ne sera pas trop compliqué...
    Premièrement les vertex des triangles consécutifs doivent êtres communes
    Ensuite, les coordonnées de texture doivent être les mêmes

    si malgrès cela tu rencontres des déformations (dans le cas d'une perspective d'une surface composée de plusieurs triangles) il faudra jouer sur la valeur de q et donc des coordonnées de textures de plus de 2 dimensions

    normalement avec les cartes d'aujourd'hui, la correction se fait toute seule à partir du moment où tu ajoutes la ligne suivante dans ton initialisation OpenGL :
    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.

  5. #5
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Autre chose, à part les imples rectangles, la génération des coordonnées de texturing ne se fait pas à la main. En fait, il faut passer par un logiciel de modélisation, du genre 3DS ou Blender ou Maya, etc. La, tu auras plein d'outils et d'utilitaires pour texturer un modèle. Puis, il ne reste qu'exporter le tout dans un format que tu sais décoder dans ton appli.

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/04/2007, 00h04
  2. point ou non dans un polygone quelconque
    Par Mandarine dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 11/06/2006, 04h03
  3. Réponses: 4
    Dernier message: 22/01/2006, 22h32
  4. Savoir si un point est inclus dans un polygone quelconque
    Par SuperBIBI dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/08/2005, 20h02
  5. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 11h48

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