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

API graphiques Discussion :

Etrange effet de texture avec les normales


Sujet :

API graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut Etrange effet de texture avec les normales
    Hello,
    Cette fois-ci, il se passe quelque chose d'étrange lorsque j'active les normales sur un objet sphérique : les faces sont parcourues de bandes sombres, comme si la couleur était reproduite par un effet de texture. Etrangement, si je dessine un cylindre, ça ne se produit pas. Voici une capture :

    http://www.medieval-fantasy-exp.com/...b_normales.jpg

    Si ça peut aider, je calcule mes normales à partir des vectrices, sachant qu'il s'agit de triangles :

    (le code devrait parler de lui-même) :

    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
     
    SVecteur V1,V2,V;
    unsigned int i;
    unsigned int idA, idB, idC;
     
    for(i=0; i<indices_count; i=i+3)
    {
     idA = indices[i];
     idB = indices[i+1];
     idC = indices[i+2];
     
     V1.x = vectrices[idB].x - vectrices[idA].x;
     V1.y = vectrices[idB].y - vectrices[idA].y;
     V1.z = vectrices[idB].z - vectrices[idA].z;
     
     V2.x = vectrices[idC].x - vectrices[idA].x;
     V2.y = vectrices[idC].y - vectrices[idA].y;
     V2.z = vectrices[idC].z - vectrices[idA].z;
     
     Vecteur_NormalizedProdVect(&V2,&V1,&V);
     
     SetNormal(V.x, V.y, V.z, idA);
     SetNormal(V.x, V.y, V.z, idB);
     SetNormal(V.x, V.y, V.z, idC);
    }
    merci d'avance
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

  2. #2
    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
    ça ressemble plus à un problème de z-fighting, comme si tu avais 2 objets au même endroit, un éclairé, un sombre

    tu devrais vérifier tes normales

    et en passant, pourquoi générer les normales ? ou plutot pourquoi ne pas les stocker avec les sommets de l'objet ?
    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
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Je penche aussi pour le "problème de z-fighting"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Merci, je vais voir ça, je vous tiens au courant.

    shenron666 : j'utilise les VBOs donc les normales sont initialement stockées dans un autre tableau que les somments. Sinon, le calcul des normales se fait à un autre niveau que le calcul des sommets parce que j'utilise une fonction générique pour calculer les normales quelque soit l'origine des vertex (tortue, fonction math, etc.)
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

  5. #5
    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
    en fait par "normales stockées avec les sommets" je voulais dire qu'un objet modelisé on avait les sommets ET les normales, normalement
    mais si les sommets de ton objet sont eux aussi calculés, je comprend mieux que tu calcules les normales
    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.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    C'était bien un problème de z-fighting : les rotations utilisées pour la sphère étaient de 360 (x) et 360 (y), ce qui dessinait la sphère 2 fois !

    Merci
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

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

Discussions similaires

  1. SDL/Opengl : Probleme de texture avec les thread
    Par tektotodu96 dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/04/2011, 01h42
  2. Problème avec les normales
    Par dridri85 dans le forum OpenGL
    Réponses: 1
    Dernier message: 03/12/2008, 09h45
  3. Effet de clipping avec les GtkScrolledWindow
    Par tintin72 dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 12/11/2006, 15h55
  4. Réponses: 5
    Dernier message: 18/10/2006, 14h52
  5. Probleme avec les normales! :(
    Par Happy dans le forum OpenGL
    Réponses: 4
    Dernier message: 09/08/2006, 18h46

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