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 :

openGL, cube eclairé


Sujet :

OpenGL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut openGL, cube eclairé
    Bonjour tout le monde,
    novice en OpenGL je souhaite coder un cube tournoyant eclairer par une source de lumiere

    pour mon cube j'ai donc creer 8 sommets et utlilser glDrawElements

    Le cube est ok et tourne bien

    Pour la lumiere il faut je crois prendre en compte les normales des 6 faces

    or je crois que les normales sont definies par sommet, sachant qu'un sommet appartient a 3 faces vous comprennez mon probleme

    dois je creer des sommets independants pour chaque face, ce qui ferait 6faces*4= 24 sommets a definir avec pour chaque quadruple de sommets une normale identique pour chaque face ?

    ce probleme(si probleme il y a) est commun je pense a chaque objet ayant plusieurs faces avec des sommets en commun

    donc si vous avez la bonne méthode je suis bien sur preneur

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il me semble que tu dois définir le type de ce qu'ils appellent une primitive :
    [ame="http://www.google.fr/search?hl=fr&q=opengl+primitives&bav=on.2,or.r_qf.&bvm=bv.48293060,d.ZG4&biw=1280&bih=619&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=Zt7FUdWLKcishQeu8oCoCw"]opengl primitives - Recherche Google[/ame]

    Avec 3 points minimum, ça doit former un plan (plat), à partir de là, une normal est ou doit être possible.

    Pour toi, ça pourrai être un GL Quad avec 4 points par faces, soit comme tu dis, 24 points.

    Citation Envoyé par rom93 Voir le message
    Bonjour tout le monde,


    dois je creer des sommets independants pour chaque face, ce qui ferait 6faces*4= 24 sommets a definir avec pour chaque quadruple de sommets une normale identique pour chaque face ?
    Là, tu aurais 6 normales différentes.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    merci pour ta reponse
    j ai trouve ca egalement :
    http://www.developpez.net/forums/d20...culer-normale/

    qui indique qu il faut faire une moyenne par sommet ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ca va te paraitre incroyable, mais je n'y connait presque rien dutout en OpenGL. Je commence tout juste enfaite.
    Mais je crois que l'histoire des moyenne parait logique si la normal est effectué sur un point plutôt qu'un plan.
    Je serait tenté de dire que :
    - La normal d'un plan est donné à l'intersection des 2 diagonales d'un carrée si par exemple GL QUAD est utilisé
    - Ou la normal d'un point correspond à la moyenne des normal des plans voisins.

    Regarde ici par exemple, http://www.songho.ca/opengl/gl_vertexarray.html il montre les 3 normal un peu plus bas, mais ça semble logique je pense.

    Je t'ai fait un petit croquis (malheureusement en 2D seulement) qui ne ressemble pas à grand chose, mais l'idée est là

    Les autres te donneront de meilleurs réponses j'espère.
    Images attachées Images attachées   

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    merci pour tes shemas,
    je pense que je vais partir sur cette idee, ca me parait egalement de bon sens
    sur tes schémas si on additionne les 2 vecteurs des sommets d une face cela donne un vecteur orthogonale a la surface. ca marche egalement pour une surface d un cube 'en 3d)
    meme reste plus qu'a essayer

  6. #6
    Invité
    Invité(e)
    Par défaut
    La 1ère méthode n'est pas bonne enfaite. On le voit si un coté (ou une face) est plus grand(e) que l'autre. La 2ème est bonne. Voici une 3ème qui est beaucoup plus claire.
    Images attachées Images attachées  

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 151
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Le calcul de la moyenne des normales pour un cube n'est pas bonne, car la normale qui va résulté partira en diagonal et lors de l'application de l'éclairage, la lumière semblera s'appliquer sur une sphère et non un cube (chaque face n'aura pas un éclairage uniforme).

    Donc il faut bien définir 24 points pour un cube, sinon, cela ne marche pas (pour les normales).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Pourtant dans ce cas la si on additionne les 4 normales d'une face cela fait bien une normale perpendiculaire a la face ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui, c'est vrai.

    Mais finalement, après réflexion, à quoi servirai finalement de définir une normal hors d'une face d'un cube finalement. Pour l'éclairage de phong, ça sert enfaite à lisser de manière à faire croire qu'une surface est courbe au lieu d'être parsemé de petites facettes bien plane. Dans le cas d'un cube, il ne faut pas lisser enfaite : Sauf si justement, tu voudrais effectivement lisser pour obtenir un effet autre que celle d'un cube. Enfaite, l'éclairage de phong en définissant les normal au niveau des points (vertices ou sommets) ne sert qu'à lisser les courbes.
    Pour ton cube, toute une face devrai donc avoir la même quantité de lumière sur tous les endroits situé sur une face, puis sur une autre face, il doit y avoir comme un acout franc dans le changement de luminosité (en excluant l'éclairage spéculaire qui est directif). Le modèle de phong au contraire permettrai de ne pas avoir de changement franc, mais plutot en dégradé.


    C'est comme ça que je le comprend au niveau de l'intérêt des normal au niveau des angles (points à l'intersection de plusieurs faces) et au niveau de l'éclairage de phong.

    Mais cela dit, tu peux quand même essayer pour voir ce que ça donnerai.


    Donc en clair, je dirai qu'il y a une manière volontaire et involontaire en quelques sorte. Une manière où tu sais qu'il ne faut pas lisser (cube par exemple ou tout polygon dont tu souhaiterai ne pas faire de lissage) et une manière où tu voudrai faire des courbes échantillonné par des petites facettes que tu souhaiterai lisser systématiquement sans se poser de questions pour avoir une forme continu comme pour un cylindre, une sphère, un ballon de rugby ou tout autre forme courbes.

    Si tu veux faire une boule à facette par exemple, il faudrai ne pas lisser, donc définir des normal sur les faces, et si tu veux une vrai sphère, il faudrai définir les normal sur les points (sommets).

    Je le vois comme ça en tout cas.

    En gros:
    - Normal sur face : éclairage homogène sur une face.
    - Normal sur point : dégradé de lumière se propageant d'un point à un autre.
    Dernière modification par Invité ; 23/06/2013 à 13h03.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    oui je vais essayé voir ce que ca donne
    Je prend un autre exemple dans le cas de deux surfaces qui represente deux murs qui forment un angle droit :

    ----------
    | \
    |
    |

    si on additionne les normales au sommets communs des deux murs (dans le coin donc) on aura donc une normale de 45 ° ce qui me parait pas mal pour la lumiere
    bon enfin je vais faire des tests pour voir tout ca

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 151
    Billets dans le blog
    150
    Par défaut
    Arf, moi je parlais de moyenne des normales qui sont sur un même point
    Car le calcul de normal par face, pour alléger les tampons, doit être fait coté GPU alors (je pense).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Re,
    Bon j'ai pu tester l'eclairage de mon cube avec les normales moyennes par sommet.
    résultat, ca marche tres bien, au départ j ai eu un petit doute car ma lumière était trop prés de mon cube et donc seul les pointes du cube étaient éclairés, jamais la face entière.
    j'ai recule la source de lumière et la tout marche parfaitement. j ai utilise le mode gl_SMOOTH qui permet de dégrader la lumière sur les faces.

Discussions similaires

  1. [2D/3D] OpenGL : cube qui se déforme lors du redimensionnement de la fenêtre
    Par CliffeCSTL dans le forum Débuter
    Réponses: 2
    Dernier message: 14/08/2014, 10h11
  2. C++-OpenGL: Faire marcher des cubes (walking cycle) tableau?
    Par corseb-delete dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 15/01/2007, 10h05
  3. openGL: avancer le cube vers une certaine direction
    Par darkmalak01 dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 19h26
  4. Réponses: 1
    Dernier message: 26/06/2005, 17h32

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