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

Physique Discussion :

Boîte englobante


Sujet :

Physique

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Boîte englobante
    Bonjour,

    existe-t-il un moyen pour recupérer les coordonnées de la boite englobante d'une scène dessinée à l'écran ?
    la scène est stockée dans des listes d'affichages.

    merci

    Xavier

  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
    Ca se fait assez facilement en parcourant tous les sommets et en stockant le min et le max des coordonnées sur chaque axe. Pour une boîte alignée sur les axes en tout cas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    ok merci.

  4. #4
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Et comment on peut faire pour savoir la coordonnée max sur un axe?
    Mercii

  5. #5
    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
    Ben tu parcours tous tes points et tu garde le max...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    float MaxX = 0;
    float MaxY = 0;
    float MaxZ = 0;
    Pour chaque vertex V
        MaxX = max(MaxX, V.x);
        MaxY = max(MaxY, V.y);
        MaxZ = max(MaxZ, V.z);
    Fin pour

  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
    concernant les bounding box :
    il existe principalement 2 type de boites englobantes :

    - les Aligned axis bounding box qui sont des boite englobante aligné sur les axes, c'est a dire qu'elle ne peuvent pas tourner. Pour calculer les limites de ces boites, c'est tres simple, il suffit de claculer le minimum et le maximum des position des vertex sur chaque axe majeur (X, Y, Z).
    le probleme des AABB est qu'elle ne supportent pas la rotation, ainsi, si l'objet contenu doit tourner, il le fera a l'interieur de la boite qui sera par consequent agrandi... on perd donc en optimalité car on a un volum contenu par la boite et en dehors de l'objet plus important...

    - les oriented bounding box sont des boites englobante qui peuvent tourner, leur utilisation est plus compliqué, mais le resultat est bien meilleurs lorsqu'il s'agit d'orienter l'objet à l'interieur.
    pour calculer les limites d'une OBB, il existe 2 methode. la premiere, simple, consiste à faire exactement comme pour une AABB. le resultat est donc aussi mauvais que pour une AABB standard.
    la deuxieme methode est nettement plus compliqué (et je ne la connais pas trop en fait ), elle consiste à calculer une matrice de covariance des axes (ou un truc du genre), ce qui donne une bounding box pré orienté par le model. le ratio espace occupé/espace libre de la bounding box resulante est nettement meilleur qu'avec une simple AABB, et on pourra donc clipper le model de facon nettement plus precise et donc gagner en vitesse d'execution...
    * 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 éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Merci pour l'aide .
    Sinon pour l'oriented bounding box, c'est pas plus compliqué qu'une AABB, car on calcule le min/max pour l'objet, et on la dessine, puis quand on tourne l'objet, on tourne la boite avec, quand on le deplace, on deplace la boite avec, et aussi la meme chose avec glScalef, voila c'est pas compliqué

  8. #8
    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
    pas plus compliqué ?
    tester la collision entre 2 AABB c'est facile, mais entre 2 OBB tu fais comment pour que ce sois pas plus compliqué ?

    ce ne sont pas les commandes OpenGL qui vont aider, il faut faire les calculs sur le CPU (oui je sais on peut faire les calculs sur le GPU avec les shaders mais c'est une autre histoire)

    donc rotation et translation des bouding box puis tests de collision, tu ne fais pas que prendre le min et le max de la OBB dans ce cas sinon ça revient à une AABB

    pour un test de visibilité (cas du frustum culling) à moins que de nombreux objets soit de la forme d'un crayon (très en longueur) des tests avec des sphères peuvent s'avérer plus intéressants

    ps: j'espère qu'on ne s'éloigne pas trop du sujet original
    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.

  9. #9
    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
    Citation Envoyé par Happy
    Merci pour l'aide .
    Sinon pour l'oriented bounding box, c'est pas plus compliqué qu'une AABB, car on calcule le min/max pour l'objet, et on la dessine, puis quand on tourne l'objet, on tourne la boite avec, quand on le deplace, on deplace la boite avec, et aussi la meme chose avec glScalef, voila c'est pas compliqué
    ca c'est la technique facile dont je parlais
    mais comment fait tu si tu veut calculer la OBB pour un model (disons un char par exemple) orienté de base a 45° ? le min/max sur les axes majeurs donne un resultat miserable au niveau ration espace utile/espace perdu...
    c'est pour ca qu'il existe une autre technique qui consiste a calculer la matrice de covariance du model pour recuperer les axes majeurs du model et ainsi pouvoir calculer une bounding box non plus sur les axes majeurs X,Y,Z mais sur ceux calculé par la matrice... bref c'est nettement plus compliqué...
    * 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

  10. #10
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Ah d'accord je vois maintenant comment on vois les choses, alors oui j'aurais du mal a faire ce genre de BB je vois, mes excuses

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

Discussions similaires

  1. boîte englobante d'un objet dans une image
    Par Nuit_blancs dans le forum Images
    Réponses: 9
    Dernier message: 27/07/2015, 17h48
  2. [algo] Minimiser le volume d'une boîte englobante
    Par kaloskagatos dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 27/07/2006, 15h27
  3. Réponses: 3
    Dernier message: 29/08/2003, 10h57
  4. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40
  5. Dll et boîte de dialogue MFC
    Par paulj dans le forum MFC
    Réponses: 3
    Dernier message: 19/12/2002, 09h59

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