begin process at 2012 05 29 03:22:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

Gestion de collision dans un espace 3D


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Gestion de collision dans un espace 3D

dimanche 12 mars 2006 à 12:17:58 | Gestion de collision dans un espace 3D

vincemail

    Bonjour à tous, je suis en train de programmer un petit jeu en 3D avec OpenGL, et je reviens à ma gestion des collisions. En effet, pour le moment je fais la détection en regardant la position de la caméra par rapport à chaque triangle qui compose mon monde. Ceci demande de regarder tout d'abord si la caméra se trouve devant le triangle, puis de calculer la distance de la caméra au triangle. Ceci à l'avantage d'être très précis, mais c'est lourd en calculs... Avec quelques milliers de triangles ca pose pas de problème, mais j'ai peur que si mon jeu se complexifie ca commence à ramer... Alors je me penche sur l'utilisation de volumes/boites englobantes. Mais je n'arrive pas à voir comment on peux utiliser ces boites englobantes pour un grand mur en diagonale par exemple... Si quelqu'un a une idée... Je voudrais savoir aussi si c'est une méthode souvent utilisée dans les jeux 3D si jamais quelqu'un sait
Merci à ceux qui ont eu le courage de lire mon roman :-)
Bonne journée.
Vincent
dimanche 12 mars 2006 à 12:54:33 | Re : Gestion de collision dans un espace 3D

platon179

Membre Club
Réponse acceptée !
Salut :)

Tu peux utiliser une technique de subdivisions spatiale, afin d'accélérer à la fois l'affichage de ton monde, et la gestion de tes collisions, les quadtrees ou octrees par exemple... Dans ce cas, tu auras beaucoup moins de triangles a tester. Le principe est très simple : tu prends tous tes triangles, et tu les classes en fonction de leur position dans l'espace, récursivement... Tu n'auras alors qu'à tester et afficher les triangles des sous-espaces ainsi créés qui sont visibles... Tous les autres peuvent simplement être sautés, car ni visibles ni utiles pour les gestions de collisions...

Sinon, pour ton souci de mur en diagonale, regarde du côté des OBB (Oriented Bounding Box), ca permet justement de traiter ce genre de problèmes ;)

Bon dimanche @+


dimanche 12 mars 2006 à 15:24:03 | Re : Gestion de collision dans un espace 3D

vincemail

    Ah vi c'est une super idée ca de faire des subdivisions spatiales, ca devrait me permettre de bien accélérer le jeu. Je vais me renseigner sur les OBB, merci beaucoup !
mardi 14 mars 2006 à 16:19:52 | Re : Gestion de collision dans un espace 3D

fuliculi

Pour l'affichage, en effet un arbre peut t'aider (perso, je préfère l'arbre binaire). Mais pour ce qui est des colisions, je te conseille d'utiliser des bounding box (et bounding sphere, oriented bounding box, ...) c'est beaucoup plus rapide. Et tu peux combiner tout ça.

Exemple :

- tu as deux voitures, tu calcul leurs bounding box.Ca se résume aux max et min de la boite qui englobe ta voiture (xmin, xmax, ymin, ymax, zmin, zmax en parcourant tes vertex).

- tu fais ensuite un test de colision entre les deux bounding box.
    si x1min > x2max : pas de colision
    ou si x1max < x2min : pas de colision
    ou si y1min > y2max : pas de colision
    ou si y1max < y2min : pas de colision
    ou si z1min > z2max : pas de colision
    ou si z1max < z2min : pas de colision
    sinon colision

- (optionel) si il y a colision des bounding box, alors tu peux faire un test plus avancé comme le tien

En utilisant des boîtes englobantes orientées (boite suivant l'orientation de ta voiture et non plus alignée sur les axes du monde) tu auras un test de colision plus précis mais plus compliqué à mettre en place.
mercredi 15 mars 2006 à 13:01:16 | Re : Gestion de collision dans un espace 3D

vincemail

Pourtant je suis bien obligé d'orienter les bounding box s'il y a par exemple un très grand mur en diagonale... Sinon le personnage ne pourrait pas avancer sans savoir pourquoi... Merci pour ta réponse Fuliculi, je vais me pencher sur ces bouding box pour essayer d'optimiser tout ca !


Cette discussion est classée dans : gestion, 3d, caméra, collision, triangle


Répondre à ce message

Sujets en rapport avec ce message

Moteur 3D, gestion des collisions [ par fabienGL ] Bonjour, je vous écris car j'ai 2 question :1)OpenGL c'est une librairies graphiques, pourtant entends-t-on parler de moteurs 3D j'aurais aimé savoir collision ds un monde 3d [ par mat74 ] salut voila je cherche comment gerer les collision ds un monde 3dsi vs connaissez un site sur le sujet ou alors si vs pouvez m'expliquer .j'utilise op collison 3D [ par cppdupdup34 ] voila j'ai un petit souci dans mes detections de collision.le test de collision entre un point et un pavé orienté n'importe comment dans l'espace s'ef Collision entre objets 3D [ par mmaximum ] Salut à tous,Je suis nouveau sur le forum. Je sais déja bien programmé(c/c++, python, xhtml/html, css, javascript,...)Je suis en train de développer u Problème de gestion de la memoire - stockage de données 3D lues dans un fichier [ par serialtom ] Bonjour à tous, je vous contacte car j'ai un gros problème de gestion de la mémoire. voici mon contexte. j'ai implémenté une application qui sert a gestion des fenetres (opngl/glut) [ par PIEDPIED13 ] bonjour.Je fais un programme en c avec opnGL et Glut.j'affiche une fenetre pour faire un rendu 3d et une autre où je veux représenter quelquechose en Collision 3D [ par DJPierreB ] Actuellement, j'ai fait un programme qui dessine les murs et le sol d'une pièce.Je sais me déplacer dans la pièce. Je voudrais donc y ajouter des test Gestion de collision 2d [ par norton ] Bonsoir, j'ai commencé un jeu en openGl genre space impact...bref j'ai pas inventé la poudre ;) Par contre je sait pas comment gérer efficacemment les Projet de jeu sur quimper [ par vini123 ] ça y est après avoir fini mes études et connaissant une petite période de chômage j'en profite pour me lancer dans la programmation d'un moteur 3D. J' gestion des connexion reseaux via prog c++ [ par PHDM ] bonjour,je cherche un systéme pour pouvoir - connecter / reconnecter- tester l'etat- déconnecterdifférentes connexions reseaux (LAN,GPRS,VPN...) confi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,872 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales