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 :

Optimisation par backface culling


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut Optimisation par backface culling
    Bonjour,

    J'aimerais mettre en oeuvre du backface culling. J'ai à ma disposition une liste de vertex et une liste d'index pour dessiner les primitives (Vbo/Ibo).
    Ce que j'aimerais c'est les reorganisé pour dessiner les triangles dans le sens contraire des aiguilles d'une montre (par exemple) mais je connais pas la technique.

    Merci pour votre aide :p

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Alors déjà, pourquoi tu veux inverser le sens de tes polygones ? Si tu veux juste cacher la face arrière de tes polygones, il me semble que ca peut se faire tout seul en paramétrant OpenGL (cherche des trucs genre GL_CULL et GL_CULL_FACE, je me souviens plus trop). Mais surtout, si tu cherches a améliorer tes performances comme ça, laisse tomber, ça ne sert pratiquement a rien. Vu que tu sembles être débutant, je te conseille de garder les doubles faces pour debugguer.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    comme le dit math_lab, il suffit d'activer le culling avec glEnable(GL_CULL_FACE) et de choisir quelle face à "culler" avec glCullFace(GL_FRONT ou GL_BACK).

    Il faut également indiquer comment sont définies les faces avant: sens horaire ou anti-horraire avec glFrontFace(GL_CW ou GL_CCW).

    Après pour que ca marche, il faut évidement dessiner toutes les faces dans le même sens, et je crois que c'était ta question à la base math_lab. Ben y a pas de technique magique, c'est en fonction de ta liste, de ce que tu as à dessiner. Le plus simple pour commencer c'est de prendre une feuille de papier et de commencer à ordonner là dessus, puis de l'implémenter dans ton code.

    Allez, pour simplifier encore commence par essayer de dessiner en mode GL_TRIANGLES, et quand ca marche essaie d'en faire une GL_TRIANGLE_STRIP (ou plusieurs si nécessaire, mais une c'est le mieux).

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut
    Ah non non on s'est pas compris. Je sais bien que tout est en hardware (si je dis pas de betises). C'est juste que je charge un mesh en mémoire mais je ne sait absolument pas dans quel sens seront dessiné les triangles. Donc j'aurais aime les reorganisés.

    Peut etre qu'il me manque quelque chose mais je pense pas.
    Et bien sur j'ai en parallèle du frustum culling et un début de bsp

    J'aimerais le backface juste pour voir les différence et faire des tests. En tout cas merci de te pencher sur mon cas!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut
    Pour faire simple je sais activer le culling et choisir le mode. De plus mes mesh s'affichent bien (plusieurs centaines de triangles sans soucis).

    Par contre je ne sais pas si j'envoi dans le sens (anti) horaire. Donc j'aimerais tout mettre en horaire par exemple avec un Algo.

    J'espère avoir était plus clair. merci de vos réponses!

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Points : 486
    Points
    486
    Par défaut
    Re,

    en gros ce que je disais c'est qu'il n'y a pas d'algo général pour ca.

    Il y a des algorithmes de triangulation qui transforment une liste arbitraire de points (typiquement un contour de polygone) en une liste de triangle orientés, mais dans ton cas tu as déjà une liste de triangles (enfin si j'ai bien suivi)...

    Enfin, si tu arrives a récupérer le contour de ton mesh, tu peux essayer ca:
    http://www.flipcode.com/archives/Eff...gulation.shtml

    Le mieux, pour t'éviter de tout recalculer, serait que celui qui te fournit le mesh en question s'assure d'ordonner les indices des triangle dans un sens prédéfini.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut
    D'accord. Je regarderais directement à la modélisation alors. En tout cas merci! Et pour le lien aussi

  8. #8
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 477
    Points
    11 477
    Billets dans le blog
    11
    Par défaut
    Si t'utilises un logiciel de modélisation genre Maya, 3DSMAx ou Blender, je pense que tu n'as pas de souci à te faire au niveau de l'ordre de tes vertex.
    Sinon, en activant le backface culling, tes meshes s'affichent correctement, ou tu rencontres des problèmes ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

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

Discussions similaires

  1. Optimisation par la methode du gradient conjugue
    Par mfontan dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 12/03/2008, 18h41
  2. Réponses: 2
    Dernier message: 08/05/2007, 08h14
  3. Optimisation par la (pré-)compilation
    Par femtosa dans le forum C
    Réponses: 4
    Dernier message: 02/05/2007, 11h25
  4. Algorithme d'optimisation par colonie de fourmis
    Par floopy dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 08/11/2006, 15h03
  5. Optimisation avec le cull facing
    Par jcloupgarou dans le forum OpenGL
    Réponses: 4
    Dernier message: 25/04/2006, 14h52

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