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 :

picking super lent


Sujet :

OpenGL

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 54
    Points
    54
    Par défaut picking super lent
    Salut a tous,

    voila, j'ai une scene avec environ 1000 objects simple (spheres et ellipsoides)
    et je fais un "picking" de ces objets "en direct", c'est a dire sans avoir a cliquer sur l'objet mais simplement en passant le curseur dessus.

    pour faire ca, j'utilise la fonction callback glutPassiveMotionFunc(passive) pour recuper la position de la souris et boolean pour detected quand la souris s'arrete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void passive(int x,int y)
    {
     
    mouse_x = x;
    mouse_y = y;
    mouse_stopped=1;
     
    }
    ensuite, j'utilise la fonction idle pour faire le picking:

    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
     
    void idle()
    {
     
    int x,y;
     
    x = mouse_x;
    y = mouse_y;
     
    if(mouse_stopped==1){     
       picking(x,y);
    }
    stopped=0;
    glutPostRedisplay();
     
    }

    Ca fonctionne mais c'est super lent ! Y-a-t-il un moyen plus efficace de faire ca ? Ou est-ce que, avec 1000 objects, il est plutot normal d'avoir cette lenteur ?

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    non, ce n'est pas normal que ce soit aussi lent.
    en fait, tout depend de comment est fait ton picking.

    si tu a une implementation brute, ou tu rend tous les objets, forcement, ca double le temps d'une frame.
    Mais tu peut accelerer le tout en faisant une passe de frustum culling en utilisant la matrice de picking comme frustum.
    L'aventage de cette technique, c'est que tu ne va envoyer à la carte graphique que les objets qui sont déjà sous la souris.

    d'ailleurs, si tu n'a pas besoins de recuperer les info retournée par le picking, cette phase peut suffire (et donc tu ne fait même pas de picking )
    * 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

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 54
    Points
    54
    Par défaut
    Faut-il vraiment utiliser glfrustrum pour permettre le "culling" des objects ?

    J'utilise normalement glortho pour definir mon volume de visualisation. Cette fonction n'est-elle pas la meme chose que glfrustrum... seulement la forme du volume est rectangular, non ??

    apres avoir definit le gluPickMatrix(), je fais un glortho() autour de la position de la souris avec un tout petit volume. les objects situes en dehors ne devraient pas etre re-calcules...

    pourtant, c'est tout aussi lent

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    je ne parle pas d'utiliser glFrustum, mais de faire du frustum culling, donc de n'envoyer que les objets visibles dans le frustum de picking à la carte graphique.
    * 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

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 54
    Points
    54
    Par défaut
    ok, c'est donc bien ce que je fais....c'est tout de meme super lent..ca doit venir d'autre chose

  6. #6
    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
    rassures moi, tu récupères bien UNIQUEMENT le pixel aux coordonnées de la souris pour le picking ?

    sinon tu peux nous montrer ta fonction de picking ?
    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.

Discussions similaires

  1. Table super lente d'accès
    Par farenheiit dans le forum SQL
    Réponses: 14
    Dernier message: 05/06/2008, 19h45
  2. Programme VBA super lent !
    Par solal57 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/12/2007, 17h37
  3. [Oracle] ociplogon super lent
    Par Jedir dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2007, 09h58
  4. socket : UDP a partir d'un autre ordi super lent
    Par RaphAstronome dans le forum Ruby
    Réponses: 3
    Dernier message: 21/05/2007, 22h15
  5. [JavaMail] Mail avec javamail super lent ?
    Par Baptiste Wicht dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 19/01/2006, 12h59

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