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

SDL Discussion :

Mémoire - objet 3D complexe


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut Mémoire - objet 3D complexe
    Bonjour,

    J'ai conçu une petite appli permettant d'afficher des maillages 3D. J'utilise OpenGL et SDL.

    Les maillages sont obtenus à partir de scans 3D d'un objet. Pour cela plusieurs scans sont pris à différents angles.

    J'arrive à afficher correctement un maillage d'un scan pour un angle donné, mais je n'arrive pas à afficher l'objet complet (obtenu par la fusion de plusieurs scans, le fichier chargé étant déjà cette fusion, c'est-à-dire que je ne réalise pas la fusion avec OpenGL et SDL). Le programme plante, je pense que c'est dû à un problème de mémoire.

    Pour un scan, j'ai environ 80000 facettes, pour l'objet complet, j'ai environ 200000 facettes.

    Quelles sont les pistes à explorer pour la gestion d'un si grand nombre de sommets et de faces ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    tu ne peux pas diminuer le nombre de facettes?

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Je ne pense pas que ce soit un soucis de memoire... Maintenant les cartes graphiques arrivent a manager des maillages de plusieurs millions de triangles... Je pense que le probleme est ailleurs.

  4. #4
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    @bebaijhi : eh non je ne peux pas diminuer le nombre de facettes, l'une des contraintes est de travailler sur les fichiers qu'on me fournit. Le programme que je conçois devrait justement permettre aux utilisateurs de ne pas réaliser de manipulations avant sur les fichiers.

    @TanEk : merci de ta réponse. Mais y a-t-il des manipulations à effectuer, des fonctions à appeler pour que la carte traite toutes ces infos sans problème ?

    Précision : en fait en attendant suffisamment j'arrive à afficher le maillage complet d'un objet. Mais il faut être patient... Je voudrais que ça aille plus vite! Un logiciel comme Meshlab affiche le maillage quasi instantanément...

    Par contre une fois l'objet chargé on peut faire des manipulations dessus sans problème, ça va très vite (rotations, zoom).

    La façon dont ça s'organise :
    _ j'affiche une fenêtre sdl
    _ je lis un fichier texte et je remplis des tableaux contenant les sommets et les facettes
    _ j'affiche le maillage par des appels aux fonctions standards d'opengl (glVertex)

    donc je vois plusieurs possibilités (merci d'apporter votre contribution si vous en voyez d'autres) :
    _ à l'affichage de la fenêtre ou lors du dessin il faudrait que j'appelle certaines fonctions sdl ou que j'optimise certains paramètres
    _ la lecture du fichier texte se fait trop lentement
    _ l'accès aux variables contenues dans les tableaux se fait trop lentement

    Je ne pense pas que l'appel des fonctions opengl pose problème.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    pour savoir ou se situe le problème tu pourrais utiliser des timers,
    a la fin de chaque phase de ton programme tu met ce code ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tick = SDL_GetTicks();//tick est un entier, SDL_Ticks() renvoie le nombre de milliseconde écoulée depuis le début du programme
    fprintf(stderr,"%d\n",tick);//écrit le contenue de tick dans le fichier stderr.txt situé au même endroit que l'executable
    ça te permettras de savoir quelle phase prend le plus de temps.

    sinon ton tableau tu l'alloue comment? a coup de malloc (ou new) ou a t'il une taille fixe? peut être le problème vient de là, j'ai déjà eu un problème de ce genre ou, je cite, j'explosai royalement ma pile. voici la discussion. sinon peut être pourrais tu utiliser une liste STL?

  6. #6
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    Merci bebaijhi, j'ai mis des SDL_getTicks() un peu partout et en fait mon souci vient du parcours du fichier texte et du remplissage des tableaux de sommets et de faces. Et non du dessin proprement dit.

    C'est super, je vais pouvoir chercher dans la bonne direction.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    ok, bon courage pour la suite

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

Discussions similaires

  1. Hibernate requete HQL et Objet date "complexe"
    Par Esil2008 dans le forum Hibernate
    Réponses: 0
    Dernier message: 21/07/2009, 11h40
  2. Gestion mémoire objet COM
    Par karl2mil1 dans le forum Framework .NET
    Réponses: 0
    Dernier message: 09/02/2009, 11h17
  3. RemoteServiceServlet et objets GWT complexe
    Par teletexte dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 12/12/2008, 23h17
  4. Problème mémoire objet
    Par Carrel dans le forum Langage
    Réponses: 8
    Dernier message: 05/12/2006, 10h51
  5. Dessiner des objets plus complexes avec OpenGL
    Par Premium dans le forum OpenGL
    Réponses: 18
    Dernier message: 21/11/2006, 17h55

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