Bonjour,
J'ai posté sur l'ancien forum, mais je crois que depuis mon message à été supprimé. Alors je reposte mon problème ici. Je développe en c++ depuis presque un an et j'ai découvert Irrlicht presque en même temps. Bref, pour cette fois-ci j'aurais beosin de savoir s'il y à une méthode fiable pour détecter la collision entre deux mesh ? Sinon un équivalent (avec les BoundingBox par exemple). J'ai déjà testé plusieurs solution, celle qui paraissais la meilleure étant la méthode du "getCollisionNode()" de la classe ISceneNodeAnimatorCollisionResponse , mais aucune des ces solutions ne marchent. Sois elles indiquent que le node est TOUJOURS en collision, soit qu'il ne l'est JAMAIS. Ce qui est bien sûr faux dans les deux cas. Si quelqu'un à déjà réussi à utilisé la méthode du "getCollisionNode()", peut-il me dire comment il à fais et quelle serais mon erreur ?
Merci d'avance
Capry
Hors ligne
Cherches-tu à employer absolument les fonctions Irrlicht, ou serais-tu prêt à faire appel à une lib externe ?
Hors ligne
Hey ! je me rappel de ton post que je n'ai plus vu depuis la refonte du site. Si ma mémoire est bonne tu en était au point ou tes nodes ne se touchaient plus (alors qu'au début ils se touchaient tout le temps). En tout cas, Tmyke l'a sous-entendu : les collisions Irrlicht sont un poil pourraves. Le plus simple est d'ajouter un animator crée par smgr->createCollisionResponseAnimator() à chaque node et de faire les tests comme tu connais déjà (sinon : cf tuto07). A noter alors que la collision se fait uniquement avec le node dont le triangleselector est tiré ( smgr->createTriangleSelector(mesh,node) ). Ce qui signifie que si tu veux des collisions multiples, tu dois tester chaque node un a un chaque trame. C'est donc pas bête de passer sur une lib externe pour avoir de meilleurs résultats. Ceci dit je peux me tromper n'hésitez pas à me reprendre si j'avance des conneries. En tout cas avec un bout de code, une erreur est plus facile à déceler donc si tu peux isoler le soucis et nous le poster ...
a+
Hors ligne
Merci d'avoir répondu si rapidemment.
Le soucis étais juste la condition je pense, je ne crois pas que mes paramètres étaient mauvais. Mais bon ça ne me dérange pas d'inclure une nouvelle librairie. Vous pensez à laquelle ? Physx, ODE, Newton ? De préférence la plus légère si plusieurs choix sont possibles.
Hors ligne
Newton est très apprécié et un tuto est dispo sur le site irrlicht sourceforge mais je ne pourrais pas t'aider beaucoup car mon experience de Newton date de la release 1.4 d'irrlicht. Enfin je tenterai de faire de mon mieux
ps : PhysX = non-libre : caca !!
Dernière modification par TUpac (09-11-2009 20:30:54)
Hors ligne
D'accord merci, je vais donc voir ce que je peux faire avec Newton ^^
Hors ligne
Je connais bien Newton, la sous couche est très bien adaptée au tests de collision, et c'est une lib multiplateforme qui s'intègre très bien dans une application, y compris par sa version lib statique, ce qui est bien sympa
Hors ligne
Super ^^. Je l'ai ajouter à mon programme ça y est. Auriez-vous un tuto qui m'expliquerais en gros le fonctionnement de Newton ?
Hors ligne
Et alors on boude google? http://irrlicht.sourceforge.net/tut_newton.html
tmyke :
Je connais bien Newton
Voilà qui est rassurant !
tmyke :
y compris par sa version lib statique
encore plus
Hors ligne
capry :
Super ^^. Je l'ai ajouter à mon programme ça y est. Auriez-vous un tuto qui m'expliquerais en gros le fonctionnement de Newton ?
tu as le wiki officiel ou il y a quelques tuto simple qui permettent de démarrer en douceur
Hors ligne
Merci pour tout, j'ai mis un certain temps, mais j'ai appris à utiliser un peu Newton, pour les fonctions de base en tout cas. Donc bah pour les collisions entre deux mesh ça marche, mais je n'ai toujours pas trouvé de tuto ou de fonction qui expliquais comment savoir si deux mesh étaient en collision. Quelqu'un aurais un lien svp ? Merci d'avance .
Hors ligne
Je n'ai pas de tuto sous la main, mais en regardant la doc on comprend assez intuitivement le rôle de fonction dédiées aux
gestion de collision.
Pour tester par exemple une collision potentielle entre deux mesh, on passe par la fonction NewtonCollisionCollide.
Hors ligne
Ah Oui merci ça y est ^^. C'es impécable là. J'ai juste un dernier problème de collision encore, mais je devrais être en mesure de le résoudre cette fois. Merci beaucoup
Hors ligne