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 ?

ça marche drôlement bien !!!
Est que tu nous montrera quand même les sources ?

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 ?

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

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

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 ?