TEST DE COLLISION POUR DES BOITES EN 3D

cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006 - 8 juil. 2003 à 03:27
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 9 juil. 2003 à 10:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7816-test-de-collision-pour-des-boites-en-3d

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
9 juil. 2003 à 10:40
merveilleux, les deux sont ds mes favoris, merci ;-)
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
9 juil. 2003 à 01:51
Je croit que 2 chtis liens sont ce qu'il te faut ::

En anglais mais de bonnes qualités avec des sources en C++ et .Net ::

http://www.gametutorials.com/Tutorials/opengl/OpenGL_Pg5.htm#Octrees

En francais :

http://www.alrj.org/docs/3D/octree.php
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 juil. 2003 à 21:29
bien bien ^^
quels sont les autres avantages des octrees et synthétiquement et conceptuellement, ça marche comment ?
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
8 juil. 2003 à 15:52
Tout a fait, c'est le cas des octrees, qui sont en un certain sens des AABB :) quand je disait ke l'on peut économiser du temps de calcul grace a l'élimination des faces cachées, je faisait bien sur référence aux octrees et non une généralisation sur les AABB, wala, précision faite ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 juil. 2003 à 15:41
ok ça se défend :-)
en quoi cela permet-il de ne pas afficher les faces cachées? je comprends bien l'utilité mais tu pourrais le faire avec des caisses (cubes) côte à côte mais pas AABB
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
8 juil. 2003 à 15:07
Ca ne limite pas forcément disont ke dans le cas ou la scene est en mouvement ce n'est pas la solution idéale dans le cas présent il est vrai ke les AABB ne sont pas appropriée, mais pour une scène fixe par exemple le décor d'un jeu comme unreal, le fait de faire un octree permet d'accélerer les temps de calculs de maniere considérable, en effet tu n'affiche pas les faces qui sont dans des Box situées derriere un autre Box etc... Mais la il s'agit de collision les AABB peuvent etre utilisées en extension comme pré-test de collision mais cela peut demander un peu de ressources, ca dépend en fait du type d'objets a afficher
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 juil. 2003 à 14:57
oui geff, mais avoue que ça limite énormément O_o
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
8 juil. 2003 à 14:27
cuq, c'est vrai que ton code tres astucieux, car il est vrai que le défaut de ma technique consiste a recalculer les boites, je vais voir moi même quelle technique est plus rapide, je serais fixé comme ca!
Petite précision a Kirua :
le cube dont je parle est un AABB, c'est a dire k'il est aligné sur les axes, de plus les sommets doivent être >>diamétralement opposés<< un chti dessin en 2D :
P1 ------------
| |
| |
| |
| |
------------- P2
voila ici seules 4 coordonées sont nécessaires pour fomer le rectangle :: Xmin,Ymin, Xmax,Ymax, a partir de cela on peut reconstruire les 2 autres sommets
Le prinicpe est le meme en 3D, a partir de 6 coordonnées Xmin, Ymin, Zmin et Xmax, Ymax, Zmax on peut reconstruire les 8 sommets

Bonne continuation cuq ;)
GEFF
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
8 juil. 2003 à 13:55
Encore un programme de test de collision, encore par cuq...
Bravo cette fois encore (il ne reste plus que la sphère-ellipse lol).
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 juil. 2003 à 13:54
geff, imagine deux points dans l'espace.
maintenant construit mentalement le cube "formé" par ces deux points si ils sont deux coins opposés (sur des faces différentes) du cube. tu remarques bien qu'on a défini une infinité de cube autour de l'axe POINT1 POINT2, même si tu détermines la longueur des arrêtes. 2 points ne suffisent pas pour déterminer un cube.
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
8 juil. 2003 à 09:37
Désolé Geff mais pour une fois je ne suis pas d'accord avec toi.

Ton code est valable uniquement si tu utilise tes " AABB (Axis Aligned Bouding Box) " hors dans mon cas si la boite de départ peut être allignée avec les axes , avec les mouvements de la machine elle va se retrouver en position quelquonque dans l'espace . De plus, mon codage pour la boite même si il est un peu "compliqué" n'est pas innocent. En effet comme je récupère la matrice OpenGl de transformation j'ai directement le centre de la boite et les vecteurs orientation . il n'y a donc aucun prè-calcul de position de la boite ( qui je l'ai constatée est très gourmand en ressource). De même les octrees enfin dans mon cas ce sera surement des "4trees" decomposition de la boite en 4 pas en 8. bref je disais les octrees découlent facilement de la boite mère, En effet les longueurs tu a juste a divisé par 4 les vecteurs restent identiques
les centres c'est juste un décalage suivant les vecteurs a un signe près . Bon j'arrête ca va devenir flou comme explication . Faudra voir une fois finis.

De plus cet exemple de code est un control d'intersection entre "boite" qui fonctionne ou "devrait" fonctionner dans tous les cas de figure.

Vala ...
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
8 juil. 2003 à 03:27
joli code cependant je pense que tu t'es compliqué la vie, le propre d'une boîte est d'etre un objet assez simple a modéliser donc à analyser, en effet seul 2 sommets (diamétralement opposés) permettent de la créer. Donc je pense que l'exemple de code ke je t'ai mis en commentaires dans ton codes 9590 est beaucoup moins gourmand donc beaucoup plus rentable, surtout si tu fait des octrees, tu peux avoir une super précision! imagine tu fait 144 calculs pour 2 Box, avec ma méthode tu fait au pire 10 Box pour autant de calculs et au mieux 144, de plus meme si ton code est élégant, je pense que le summum d'un zoli code c'est d'être petit et rapide, wala félicitation tout de même pour le boulot que tu fournis ;)
Bon coding ++
GEFF
Rejoignez-nous