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

Moteurs 3D Discussion :

[ARBRE BSP] Performances?


Sujet :

Moteurs 3D

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 50
    Points
    50
    Par défaut [ARBRE BSP] Performances?
    Salut tout le monde,

    Voilà je suis tjs en pleine conception de mon moteur 3D. Je viens de terminer le partitionnement de ma map grâces aux arbres BSP.
    J'ai tout d'abord fait plusieurs testes "manuellement" c'est à dire que j'ai positionné ma caméra à un endroit bien précis de la map et ensuite lancé la fonction DrawVisiblePolys() qui dessine les polygones visible à l'écran avec parcours de l'arbre bsp et tout le tralala ... de ce coté là ça fonctionne sans probs.

    Mais lorsque j'essaie d'automatiser l'appel de la fonction DrawVisiblePolys() à chaque déplacement du joueur c'est l'écatombe lol.
    J'ai l'impression que le temps de traverser tout l'arbre ralentit tout surtout que j'effectue cela à la détection d'appuis d'une touche dans la fonction Update().
    Sachant que cette fonction Update() est apellée environs toutes les 15ms (ah oui je bosse sur XNA au fait ) l'appuis d'une touche peut engendrer un nombre considérable d'appels successif par secondes Cela peut t'il en être la cause?

    Je suis débutant dans ce domaine donc tout vos conseils sont les bienvenus


    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Une fonction de culling quelle qu'elle soit devrait pouvoir tourner en temps réel ; mais rien n'est magique avec la géometrie dynamique et si tu fais un rendu "bourrin" il y a beaucoup de chances que ça explique le ralentissement.

    Il faudrait voir un peu comme tu t'y prends pour déterminer les faces visibles, et pour les afficher.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Laurent Gomila
    Une fonction de culling quelle qu'elle soit devrait pouvoir tourner en temps réel ; mais rien n'est magique avec la géometrie dynamique et si tu fais un rendu "bourrin" il y a beaucoup de chances que ça explique le ralentissement.

    Il faudrait voir un peu comme tu t'y prends pour déterminer les faces visibles, et pour les afficher.
    Merci pour ta réponse.
    Je viens de "chronomètrer" le temps nécessaire à traverser mon arbre à un certains point : Environs 20ms de parcours pour l'affichage de +- 1500 polygones, cela vous parait t'il un temps acceptable?

    Mais d'autres questions restent :
    Faut t'il créer un thread en parallèle pour le parcours ?
    Faut t'il parcourir l'arbre à chaque déplacements?

    Merci

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je viens de "chronomètrer" le temps nécessaire à traverser mon arbre à un certains point : Environs 20ms de parcours pour l'affichage de +- 1500 polygones, cela vous parait t'il un temps acceptable?
    Je dirais que c'est encore optimisable
    Mais ça dépend de tellement de choses... Donc impossible de te dire avec précision ce que tu devrais obtenir.

    Faut t'il créer un thread en parallèle pour le parcours ?
    Ca ne servirait à rien (tu n'as toujours qu'un CPU quelque soit le nombre de threads -- sauf multicore mais ça c'est une autre histoire).
    Le mieux est de faire bosser le CPU juste après l'envoi de la géometrie de la frame précédente au GPU, puisque ce dernier tourne déjà en parallèle.

    Faut t'il parcourir l'arbre à chaque déplacements?
    Réponse bête : à chaque fois que c'est nécessaire.
    En pratique je pense que dans la plupart des cas d'applications temps réel, ce genre d'info est recalculé à chaque frame, et que personne ne s'embête à savoir si la caméra ou quoique ce soit d'autre a bougé.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse j'ai enfin trouvé une solution à ce problème.

    Maintenant je m'attaque aux détections de collisions. Toute la géométrie de ma map étant stockée dans un arbre BSP, je voudrais savoir quelle serait la meilleure solution pour detecter les collisions avec les murs de ma map (avec assez de précision pour pouvoir passer des portes, des petits couloirs ...)
    J'ai vu que lutilisation l'AABB (Axis Aligned Bounding Box) est l'une des plus adaptées pour une vue FPS, si oui comment puis-je implémenter cela tout en utilisant l'arbre bsp biensur (ex: algo) ? J'ai pas mal cherché sur le net mais je n'ais trouvé rien de bien concluant

    Bonne journée

  6. #6
    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
    l'ideal en terme de performance/sureté des calculs de collision est d'avoir une version de la map avec des objets convex. si tu bosse avec des BSP de quake3, ils sont stocké dans le fichiers, sinon, il te faudra les faire à la main...
    * 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

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par bafman
    l'ideal en terme de performance/sureté des calculs de collision est d'avoir une version de la map avec des objets convex. si tu bosse avec des BSP de quake3, ils sont stocké dans le fichiers, sinon, il te faudra les faire à la main...
    Que veux tu dire exactement par objets convexes?

Discussions similaires

  1. Problème de performances bsp quake 3
    Par drcd dans le forum OpenGL
    Réponses: 9
    Dernier message: 26/11/2009, 10h08
  2. Arbre BSP sur le moteur Source
    Par anarkia777 dans le forum Moteurs 3D
    Réponses: 19
    Dernier message: 27/12/2008, 12h24
  3. Choisir les plans de coupe d'un arbre BSP
    Par deadalnix dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 23/09/2008, 01h10
  4. Arbres BSP versus Vertex arrays
    Par Sébastien P dans le forum OpenGL
    Réponses: 2
    Dernier message: 27/03/2007, 14h52
  5. Question sur les arbres BSP
    Par DiGiTAL_MiDWAY dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 18/11/2006, 15h42

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