begin process at 2008 08 20 14:28:19
1 228 884 membres
250 nouveaux aujourd'hui
14 258 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Collision 3D [ Archives / OpenGL ] (DJPierreB)

Collision 3D le 15/12/2004 18:38:19

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 tests de collision.

Je voudrais ne pas pouvoir passer au travers des murs.
J'imagine que le test se fait par rapport à un plan. C'est tester si moi (identifié par un point 3D x,y,z) je suis en contact avec un plan.
J'ai du mal à imaginer l'implémentation ainsi que les calculs.
Actuellement, j'ai un algo qui crée les murs à partir d'un fichier texte. Mais ce n'est jamais qu'une succession d'appels aux fonctions de dessins de vertex.
Faudrait-il que chaque objet graphique (par exemple un bout de mur) soit en fait une classe ? Ainsi j'imagine que ça simplifierait les tests.
Je parcourerais chaque objet du graphique et je vérifierais que je ne sois pas en collision avec.
Quelle est la formule qui me permet de savoir où je suis par rapport à un plan ? Quelles sont les conditions à écrire pour savoir si on a dépassé ce plan ou si on est toujours devant?

Merci pour votre aide.

Re : Collision 3D le 15/12/2004 21:48:08

Funto66
"Faudrait-il que chaque objet graphique (par exemple un bout de mur) soit en fait une classe ? Ainsi j'imagine que ça simplifierait les tests." -> alors ça : non, sûr.

Si tes murs sont, comme je le suppose, placés sur un sol plat, et qu'en plus il n'y en a pas de placé en diagonale, ça simplifie ton travail : tu peux te rapporter à des calculs en 2D.
Le mieux je pense serait que tu te fasses un dessin; dans ton prog, dessine les murs avec une certaine épaisseur; ensuite, tu peux tester si ton perso est dans le mur simplement avec un gros if (regarde ton dessin pr voir comment faire, c'est simple, il y a collision si la pos 2D de ton perso se trouve dans le rectangle représenté par ton mur, vu de haut bien sûr).
S'il y a collision, il faut trouver un système, en général en utilisant des vecteurs, qui te permet d'avancer en fonction de ton mouvement (pour longer le mur).
Bref pour bien t'expliquer faudrait que je te fasse un dessin mais j'i la flemme :p C'est déjà un point de départ je pense...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/

Re : Collision 3D le 16/12/2004 10:21:16

DJPierreB
Merci pour ta réponse.

Effectivement, actuellement mon problème de collision se situe dans un espace de type labyrinthe, donc plutôt 2D.
Je pensais qu'en définissant un pan de mur comme une classe, je pourrais stocker les coordonnées du mur et ainsi, en parcourant les coordonnées de chaque objet, savoir si j'étais en collision ou non.

Si je n'utilise pas de classe, comment je fais pour stocker les coordonnées ?

Re : Collision 3D le 16/12/2004 23:59:49

Funto66
Si bien sûr tu peux utiliser une classe mais ce que je voulais dire en fait c'est qu'il ne te faut pas une classe par mur (c'est ce que j'avais compris...).
Sinon oui, une classe Mur peut être utile, ensuite tu te stockes un petit tableau d'objets de type Mur et ça constituera ta Map, tu peux donc englober ça dans une classe Map par exemple :)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/

Re : Collision 3D le 17/12/2004 10:32:26

DJPierreB
Merci Funto66


Classé sous : plan, 3d, collision, actuellement, murs

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS