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 :

Plaquage de texture sur une surface concave


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut Plaquage de texture sur une surface concave
    Bonjour à tous,

    Je réalise un projet graphique grâce à Opengl. Je suis actuellement au stade du mapping, pour tout ce qui est figure convexe j'y arrive sans problème mais les figure concave c'est vraiment autre chose ...

    J'ai créé une figure concave (un carré avec un demi cercle en moins) avec la tesselation et là j'essaye de plaquer ma texture (voir le code) mais je n'obtient qu'un fond gris.





    Voici ma fonction

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    GLvoid TrouRempart (GLint TextureId)
     
    {
     
    GLUtesselator      *tess;
    tess = gluNewTess();
    gluTessCallback(tess, GLU_BEGIN, glBegin);
    gluTessCallback(tess, GLU_END, glEnd);
    gluTessCallback(tess, GLU_VERTEX, glVertex3dv);
     
      int i;
      float mycos, mysin;
      static GLdouble demi_cercle[51][3];
      for (i=0; i<51 ; i++)
        {
          demi_cercle[i][0] = 1 + cos(i*2* M_PI /100);
          demi_cercle[i][1] =  sin(i*2* M_PI /100);
          demi_cercle[i][2]= 0;
        }
     
      static GLdouble carre_avant[][3] = {{0, 0,  0}, {2, 0,  0}, {2, 2,  0}, {0, 2, 0}};
      static GLdouble carre_haut[][3] = {{0, 2,  0}, {2, 2,  0}, {2, 2,  -2}, {0, 2,  -2} };
      static GLdouble carre_texture[][2] = {{0, 1}, {0, 0}, {1, 0}, {1, 1} };
     
    glBindTexture(GL_TEXTURE_2D, TextureId);
    gluTessBeginPolygon(tess,(GLvoid *)0);
    	   gluTessBeginContour(tess);
         	 	for (i = 0; i < 4 ; i++)
           	   gluTessVertex(tess,carre_avant[i],carre_avant[i]);  glTexCoord2f(carre_texture[i][0], carre_texture[i][1]);
        	 gluTessEndContour(tess); 
     
         	 gluTessBeginContour(tess);
          		for (i = 0; i < 51 ; i++)
           	   gluTessVertex(tess,demi_cercle[i],demi_cercle[i] );
          gluTessEndContour(tess); 
    gluTessEndPolygon(tess);

    L'appelle de ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Trou rempart
      glPushMatrix();
        glTranslatef(5, -1, 1);
    glEnable(GL_TEXTURE_2D);
        TrouRempart(IdTex[0]);
    glPopMatrix();

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Ben de ce que je vois, tu crées tes positions pour tes surfaces carrées ainsi que les coordonnées de textures qui vont avec, mais pas pour ton arc ?

    Si tu arrives a générer l'arc, tu ne devrais avoir aucun problème à générer les coordonnées qui vont avec. Il faut juste que tu limites leurs valeurs entre 0.0 et 1.0.

    Par ex, tu prends la valeur XY d'un des points de l'arc, et tu fais une règle de trois pour trouver le UV correspondant.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Merci pour ta réponse j'ai essayé et ça ne marchait toujours pas. Alors j'ai finalement décidé de faire mon demi cercle à partir de triangles du coup plus de problème de figure concave .

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

Discussions similaires

  1. Texture sur une courbe
    Par newe95 dans le forum Graphisme
    Réponses: 3
    Dernier message: 15/05/2006, 01h54
  2. probleme de texture sur une sphère
    Par sebpp dans le forum OpenGL
    Réponses: 2
    Dernier message: 12/04/2005, 19h46
  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. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06
  5. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37

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