Collisions et vitesse

Signaler
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Salut,

J'ai adapté un système de détection des collisions dans un monde 3d, en prenant exemple sur un tutorial de http://www.gametutorials.com/Tutorials/opengl/OpenGL_Pg3.htm (camera and world collision)

Ca fonctionne bien, mais le problème c'est que dès qu'on augment la vitesse de déplacement ça fonctionne plus, on passe à travers les murs...

Auriez vous une idée pour remédier à cela ???

12 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
tu peux décomposer ton mouvement en plusieurs faces : tu bouges de 1 un certain nombre de fois... C a dire que tu metrais ton code actuel de mouvement dans une fonction et que tu appelerais cette fonction un certain nombre de fois en fonction de la vitesse...
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Le problème est que ca risque de ralentir considérablement, car a chaque appel de cette fonction. On doit effecteur le test de collision non ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
oui
mais t'es pas obligé de réafficher le perso, tu peux très bien ne faire que le déplacement for (i=0;i<vitesse;i++){x=x+xd;y=y+yd;z=z+zd; test();} affperso(); voila grossièrement...
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oue mais sans rafficher le perso, ca va demander des beaucoup plus de tests de collision. Si il n'y a qu'un personnage ca va aller, mais si il y a 200 ou 1000 particules, ca va plus le faire :) Mais le
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Je voulais dire, le problème des collisions est un gros problème pour tous les gens. Et passer a travers les murs a grandes vitesses, ca arrive souvent dans les jeux.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
t'as des algorythme de "ligne" Kirua en avait fait un... calcule tout les points et teste si ton mur est a cet endroit...
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

J'ai fait un test :
Je charge une petite map avec peu de textures : FPS 160> pas de problème de collisions
Je charge une autre map plus grande avec pas mal de textures : FPS 60.> je passe à travers les murs ...

Donc mon problème est lié à la vitesse d'affichage.

Si l'affichage est rapide, la position est vite mise à jour, donc je passe pas à travers les murs.

Par contre si l'affichage est plus lent, la positiosn sur l'écran est mise à jour moins souvent, donc elle est moins précise => je passe à travers les murs.
Vous pensez que c'est ça ???
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
je n'en sais rien, je n'ai eu ces problèmes quesous QBASIC en 2d...
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

En fait j'ai résolu le problème.

J'ai augmenté la distance entre la caméra et les polygones pour laquelle on détecte une collision.

Avant elle était de 1, je l'ai mise à 5.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ca ne fait que déplacer le problème, des que tu chargeras un peu plus la map, ton fps va descendre et tu traverseras les murs. Ou alors, si tu tests ton programme si une plus petite machine. J'ai le meme problème avec mon programme.

La solution est ce que dit Coucou747 finalement. Mais il faut le faire d'une manière dynamique, c'est à dire plus l'objet va vite, plus faut décomposer son mouvement entre deux images, de sortes que sa position entre deux décompositions ne puissent pas etre supérieur à ta marge de détection de collision, (ici 1 ou 5 comme tu l'a fais).

Je pense que je vais faire un algo de ce type. Je vois pas d'autre solution.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
oui, modifier le mouvement de 5 par 5 avec une boucle c'est ce que j'ai ms plus haut...
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

J'ai optimiser un peu mon prog et je suis maintenant à 140 FPS sur la même map !!!

Mes tests de collisiosn fonctionnent jusqu'à 30 FPS désormais, c'est bizarre ...

Donc pour l'instant je laisse comme ça et je verrais après si j'ai besoin.

J'ai le flemme de revoir ça alors que j'ai galéré pour faire ce système de collision ...

Au fait, vous utilisez des listes ou des vertex arrays ???
Si c'est des vertex, c'est quel type ???