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 :

Normales Normalisation Normalisage et Eclairage


Sujet :

OpenGL

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Par défaut Normales Normalisation Normalisage et Eclairage
    bonjour tout le monde,

    alors j'ai un petit problème d'éclairage (ou plutot de normales). Je vous explique :
    - je crée une forme géométrique de taille 1 et je calcule ses normales (normalisées ^^)
    - ensuite, j'applique à cette forme un glScale. J'aimerai donc savoir comment retrouvé mes normales normalisées apres le glscale ^^

    voici un pseudo code :

    /**************************************************/

    tabvertex : tableau de vertex
    tabnorm : tableau des normales (normalisées) associées au vertex

    glscale(a,b,c)

    glbegin()
    glnormal(tabnorm[0][0], tabnorm[0][1],tabnorm[0][2])
    glvertex(tabvvertex[0][0],tabvertex[0][1],tabvertex[0][2])

    etc... (parcours des tableaux)

    glend()

    /**************************************************/

    si vous avez une quelconque idée (sauf l'utilisation de GL_NORMALIZE), je suis preneur ^^

    merci a tous

  2. #2
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    normalement les normales e ton objets ne sont pas sencés bougées

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    une normale normalisé rest normalisé même apres un glScale, donc tu ne devrait pas avoir de probleme...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Ah non, il a raison, une normale n'est plus normalizée aprés un glScale, il suffit de faire un petit exemple, comme une normale (1,0,0) aprés un scale de (2,1,1) devient ....

    Par contre à part GL_NORMALIZE , je vois pas d'autre solution (enfin, j'en connais pas), sauf à dénormaliser tes normales avant le scale dans l'autre sens, mais c'est pas terrible comme solution...

  5. #5
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    c de la connerie faut arréter de fumer mon gars ! moi je défini des normales et une fois def je les touche pu et g tjs mes belles normales lol !

  6. #6
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    s il il fallait recalculer ttes les normales à chaque affichage et bas le pc il suivrait pas lol !

    je pense que la fonction glscale n 'agit pas sur glnormal() mais juste sur les vertex sinon vive la perte de tps inutile vu que les normales ne changeraient pas lol !!!!

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Mais enfin... Je persiste et signe, et avant de me dire que ce sont des conneries, merci d'aller vérifier. glScale s'applique sur les normales, qui doivent donc être renormalisées aprés, un point c'est tout. Sinon a quoi servirait glEnable(GL_NORMALIZE) et surtout glEnable(GL_RESCALE_NORMAL) ??

    PS : merci d'etre un peu moins agressif

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Par défaut
    glscale agit sur les normales. c'est pas moi qui le dit c'est le red book.

    http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html
    glScale*() is the only one of the three modeling transformations that changes the apparent size of an object: Scaling with values greater than 1.0 stretches an object, and using values less than 1.0 shrinks it. Scaling with a -1.0 value reflects an object across an axis. The identity values for scaling are (1.0, 1.0, 1.0). In general, you should limit your use of glScale*() to those cases where it is necessary. Using glScale*() decreases the performance of lighting calculations, because the normal vectors have to be renormalized after transformation.

  9. #9
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    oki dsl bas c mal foutu alors

  10. #10
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    effectivement... enfin vu que perso je n'utilise jamais l'eclairage openGL et glScale ca ne me sert a rien...

    sinon le coup de recalculer les normales a chaque images c'est tout a fait faisable. il suffit de regarder le format MD5 (et tout les format d'animation par bone destiné a un jeu avec un moteur physique avancé), ils sont obligé de recalculer a chaque image la normal, binormal et tangente pour chaque vertex...
    bon c'est sur qu'il faut un proc puissant...

    je supose qu'il ne veut pas utilser GL_NORMALISE car il doit vouloir recuperer les valeurs des normales...

    le seul moyen que je voit c'est pour chaque composante de la normal, de la multiplier par les valeur de glScale puis de renormaliser, comme ca tu economise le produit vectoriel pour calculer la normale...
    en gros ca donnerait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    glScale(1,2,3);
    // pour chaque vertex
    normale.x *= 1;
    normale.y *= 2;
    normale.z *= 3;
    float length = sqrt(normale.x*normale.x + normale.y*normale.y + normale.z*normale.z);
    normale.x /= length;
    normale.y /= length;
    normale.z /= length;
    bien entendu tu peut, pour reduire le temps d'execution utiliser une fonction sqrt + rapide...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  11. #11
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Par défaut
    merci, je me suis arrangé en faisant mes scales "à la main" et ça marche bien mieux comme cela.

    merci à tous pour vos réponses

Discussions similaires

  1. probleme de normales + lighting
    Par Daedar dans le forum OpenGL
    Réponses: 13
    Dernier message: 24/03/2004, 09h04
  2. probleme eclairage....
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/12/2003, 14h33
  3. [langage] PB normalisation de chaine de caractères
    Par superdada dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2003, 16h28
  4. Réponses: 3
    Dernier message: 28/07/2003, 22h01

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