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

Développement 2D, 3D et Jeux Discussion :

bounding box à partir des contours de l'objet


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 158
    Points : 64
    Points
    64
    Par défaut bounding box à partir des contours de l'objet
    Bonjour à tous,

    Je travaille sur un simulateur d'un robot utilisant le coin 3D.
    Je souhaite obetenir le bounding box qui englobe un objet 3D.
    D'après ce que j'ai comprit dans les forums il y en a deux types:
    * AABB
    * OBB : oriented bounding box.

    comme je souhaite obtenir l'orientation de l'objet dans l'espace, je pense qu'il faut que j'utilise le OBB.

    Je vous demande alors::
    1. Est ce que l'idée est juste?
    2. Comment puis je calculer le oriented bounding box à partir des contours de l'objet?

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut,

    si ton objet n est pas animé, tu peux calculer son AABB en prétraitement. Pour cela il te suffit de récupérer les coordonnées min et max. Tu te retrouves donc avec 6 valeurs qui définissent les limites de ta boite englobante, tu en deduit donc facilement les coordonnées des 8 sommets.

    Pour avoir une OBB, il te suffit ensuite d appliquer la meme transformation aux 8 sommets de ta bounding box qu a ton modele.

    Pour avoir une OBB optimale il faut que ton modele sans transformation soit correctement placé et orienté.

    Pour les objet animés, c est une autre histoire. Il existe aussi d autres methodes de calcule de OBB mais nettement moins triviales.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 158
    Points : 64
    Points
    64
    Par défaut
    merci pour la réponse;

    vous dite
    Pour avoir une OBB, il te suffit ensuite d appliquer la meme transformation aux 8 sommets de ta bounding box qu a ton modele.
    mais moi j'ai une scène où existe l'objet et où toute les transfomations sont supposées inconnues. D'ailleur moi je cherche le bounding box afin de déduire l'orientation de mon objet dans l'espace.

    donc comment faire?

  4. #4
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 158
    Points : 64
    Points
    64
    Par défaut
    bon peut être que je ne suis pas clair; alors je vais m'expliquer:

    je cherche à saisir un objet avec un bras manipulateur.
    alors je veux trouver se position et son orientation par rapport à un repère de référence afin de pouvoir le saisir.
    Notez que j'utilise deux caméras montées sur l'effecteur.
    L'idée est alors de détecter les contours de l'objet.
    calculer le oriented bounding box qui englobe ce contour.
    enfin déduire le barycentre de ce bounding box.

    Donc, est ce que l'utilisation de OBB est juste ou non?
    si oui comment faire pour le calculer?

  5. #5
    Membre actif
    Avatar de Mikmacer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 116
    Points : 241
    Points
    241
    Par défaut
    est ce que l'utilisation de OBB est juste ou non?
    Ça dépend de la complexité de l'objet.

    Comment faire pour le calculer?
    Le OBB est composé normalement de trois vecteur, qui définie ses trois axes. En 3D, la meilleur méthode pour calculer le OBB ayant le plus petit air, est de transformer tout les vertex de l'objets dans l'espace de coordonnées de trois vecteurs d'orientation XYZ aléatoires, de calculer le AABB dans cet espace de coordonnée, et d'en calculer l'air. Ensuite on transforme cet AABB dans l'espace de coordonnée de base pour en faire les trois vecteur du OBB. On fait cet opération pour une série de rotation, et on garde le OBB avec le plus petit air.

    Personnellement, dans mon implémentation, je calcul une matrice avec les angles d'euler, et je fais tourner les trois vecteurs d'orientation sur une nombre arbitraire d'échantillons sur 360 degrés en X et 360 degrés en Y.

    Une alternative est d'utiliser une matrice de covariance, mais il y a quelques cas où le résultat peut être faussé.

    Finalement, si tu as moyen d'obtenir une série de position en 3D avec ton contour, tu peux probablement calculer l'OBB avec ces méthodes.

  6. #6
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 158
    Points : 64
    Points
    64
    Par défaut
    là ça se complique un peu.

    Si on prends la deuxième méthode: calcul de la matrice de covariance.
    car la première me paraît un peu complexe!
    comment ça se fait pour le calcul de la matrice de covariance?

  7. #7
    Membre actif
    Avatar de Mikmacer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 116
    Points : 241
    Points
    241
    Par défaut
    Personnellement, je crois que la matrice de covariance est un peu plus dur à appliquer. Je ne l'ai jamais utilisé(C'est quelque chose qu'on voit en math statistique avancé), mais tu peux trouver des articles en anglais si tu cherche "covariance matrix obb" sur Google.

Discussions similaires

  1. bounding box avec des couleurs différentes
    Par mayssaMM dans le forum Images
    Réponses: 2
    Dernier message: 06/08/2013, 23h59
  2. Extraire le bounding box encadrant des contours
    Par NGeVtC87 dans le forum OpenCV
    Réponses: 4
    Dernier message: 22/01/2013, 13h21
  3. Redéfinir Bounding Box des formats .eps
    Par gigo88 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 28/06/2007, 01h12
  4. Réponses: 3
    Dernier message: 15/12/2006, 18h52

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