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
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
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.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Et comment on peut faire pour savoir la coordonnée max sur un axe?
Mercii
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
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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
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é
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.
ca c'est la technique facile dont je parlaisEnvoyé par Happy
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager