Page 1 sur 14

Code source complet -Collision 3D et réponse

Publié : dim. 13/nov./2005 12:34
par comtois
J'ai utilisé l'excellent tutoriel de Fauerby
http://www.peroxide.dk/

Et voila un début de résultat , ça glisse et la gravité est gérée.
C'est pas terrible , ça broute, j'ai des problèmes avec le sol , alors dans cette démo , j'ai triché, j'ai un seul triangle pour le sol. Mais ça ne fait rien, je suis quand même content :)

Je n'ai pas encore essayé avec un escalier, il faut d'abord que ça fonctionne correctement avec cette démo , et c'est pas demain la veille :?

Pour l'instant j'ai suivi à la lettre le tutoriel de Fauerby , je vais tout reprendre en essayant d'autres solutions, on verra bien ce qu'il en ressortira.

Il n'y a pas les sources dans la démo (c'est la même chose que le tut de Fauerby , sauf que je l'ai adapté à PureBasic)

Le zip contient deux exe , le premier permet de créer une map en 2D.
le second permet de créer la map en 3D à partir de la map 2D et de tester les collisions.

Démo (576 ko)

Publié : dim. 13/nov./2005 13:44
par Polo
C'est des collisions basées sur les polygones ? 8O
ça marche drôlement bien !!!
Est que tu nous montrera quand même les sources ? :P

Publié : dim. 13/nov./2005 14:38
par comtois
oui j'utilise des triangles , donc à terme il sera possible de gérer les collisions avec n'importe quel objet 3D , et plus particulièrement le format BSP.
Il faudra extraire la liste des triangles de l'objet , et les trier dans un arbre , donc c'est pas pour tout de suite. Pour les sources aussi , c'est pas pour tout de suite :)

Il faut d'abord que je réécrive le tout, et que je trouve des solutions pour améliorer la gestion.

Publié : dim. 13/nov./2005 14:42
par Polo
Ben, alors, c'est vachement intéressant ton truc !
Surtout que ce que tu nous as montré marche bien !
En fait les collisions en elle même c'est pas compliqué, mais les réponses :?

Publié : dim. 13/nov./2005 14:51
par comtois
Exactement, ce qui marche bien c'est la détection du triangle en collision , et le calcul du point d'impact sur le triangle , mais la gestion de la réponse c'est une autre histoire.Et encore je ne teste pas des objets en mouvement pour l'instant , ça viendra plus tard ( ascenseurs et des trucs de ce genre).

Bon allez je sors pendant qu'il fait beau , je reprendrai les calculs plus tard :)

Publié : dim. 13/nov./2005 14:55
par Polo
Ben, quand j'avais essayé, ça me faisait la même chose : la collision sphere/triangle était parfaite, par contre, la réponse, euh, c'était bien pire que le résultat auquel tu est arrivé !
Je m'y remettrais p't'être un jour ;)

Publié : dim. 13/nov./2005 18:53
par Sami
comtois a écrit :oui j'utilise des triangles , donc à terme il sera possible de gérer les collisions avec n'importe quel objet 3D , et plus particulièrement le format BSP.
Il faudra extraire la liste des triangles de l'objet , et les trier dans un arbre , donc c'est pas pour tout de suite. Pour les sources aussi , c'est pas pour tout de suite :)
Heu pourquoi refaire un arbre binaire puisque dans le fichier .Bsp il s'y trouve déjà?
Le mieux serait d'y avoir accés directement juste pour l'économie de mémoire.

Publié : dim. 13/nov./2005 19:26
par comtois
parce que je ne connais pas le format BSP :)
PureBasic ne connait que le format de Quake 3 , on verra avec la V4 s'il est possible d'en gérer d'autres ?

Tout ce que je sais , c'est qu'il faudra réduire le nombre des triangles à tester en créant une liste des triangles susceptibles d'être en collision ,je ne sais pas encore comment, c'est la deuxième étape.
J'ai entendu parler d'arbre BSP , d'octree , etc , mais je ne connais pas tout ça , il faudra que j'apprenne à les utiliser.

Pour l'instant j'en suis encore à essayer de gérer les collisions , et j'en ai pour un long moment.

Publié : dim. 13/nov./2005 20:09
par Oliv
Bravo :)

Publié : dim. 20/nov./2005 13:19
par Polo
Alors, Comptois, tu y arrives ? :wink:

Publié : dim. 20/nov./2005 13:23
par Chris
@Comtois

C'est bien joli, les démos.
Mais quand est-ce qu'il arrive, le jeu en 3D style Half-Life ou Quake.

Parce que c'est long, je trouve :roll:

Publié : dim. 20/nov./2005 13:29
par comtois
non , c'est la galère, si je touche un calcul pour améliorer d'un côté, ça merdouille d'un autre côté :?

Hier j'ai commencé à tracer les calculs , mais va falloir que je réduise , j'avais un fichiers de 3Mo de données après seulement 1 minute de jeu.
La mise au point va prendre du temps.

dans cette démo , les collisions sont un peu mieux , je ne traverse plus les murs , mais ça tremble encore dans les angles.et j'ai un glissement à la jointure des triangles au sol. Je vais d'abord commencer à tracer ce défaut peut-être qu'il m'aidera pour les autres ?

http://perso.wanadoo.fr/comtois/sources ... 3DBeta.zip

Nécessite la version d'ogre Beta .
Je vais quand même préparer une lib, elle devrait fonctionner avec opengl , ogre ou ce que tu veux , puisqu'il n'y a que des calculs , pas d'instructions spécifiques à ogre. Il faudra juste envoyer la liste des triangles à la lib , la vitesse et la position d'origine, et elle retourne la nouvelle position.Il n'y a plus qu'à placer son personnage.

Publié : dim. 20/nov./2005 13:34
par comtois
Chris a écrit :@Comtois

C'est bien joli, les démos.
Mais quand est-ce qu'il arrive, le jeu en 3D style Half-Life ou Quake.

Parce que c'est long, je trouve :roll:
Oui j'ai rien foutu ce matin , j'ai honte :)

Publié : dim. 20/nov./2005 16:08
par Polo
Ben, cette dernière démo ne marche pas chez moi avec la dll d'ogre 1.0.3 du forum anglais. ça va en plein écran et ça repart direct :?

Publié : dim. 20/nov./2005 16:18
par comtois
tu as copié les deux dll dans le répertoire ?

stlport_vc646.dll et Engine3D.dll

Si tu as fait ça , alors je ne vois pas d'où vient le problème.

ça fonctionne chez quelqu'un ?