Existe-t-il un moyen de modifier un algorithme de Gilbert-Johnson-Keerthi afin qu'il trouve des points de collision entre deux corps au lieu d'un résultat vrai/faux? D'après ce que j'ai compris, la valeur de distance reçue pourrait être utilisée pour trouver ces points. J'ai cherché sur le web mais je n'ai trouvé aucun indice.Points de collision dans GJK
Répondre
Ce que vous demandez n'est pas bien posé. Si elles sont en collision, alors un point d'intersection est indéfini - puisque l'intersection est en fait une région de chevauchement et pourrait donc être un nombre quelconque de points possibles. Au lieu de cela, vous devriez penser à un "point d'intersection" comme une coordonnée dans l'espace-temps, (dx, dy, dz, t), représentant le temps d'impact, avec un vecteur de traduction entre les deux corps. . Une façon de modifier GJK pour calculer une intersection spatio-temporelle est de faire une recherche binaire sur le volume balayé pour trouver le moment juste avant l'impact. En utilisant ces données, vous pouvez calculer un axe de séparation et des points extrêmes correspondants pour les deux corps, ce qui vous donne une approximation proche du point d'impact. Cette approche peut également être rapide si vous réutilisez les simplexes des itérations précédentes de la recherche pour accélérer les tests suivants. Christer Ercisson a quelques notes sur cette technique ici: http://realtimecollisiondetection.net/pubs/SIGGRAPH04_Ericson_GJK_notes.pdf
Les pensées d'un profane: si vous faites GJK de l'origine à un corps, vous pouvez obtenir non seulement la distance de l'origine au corps, mais le point réel sur le le corps le plus proche de l'origine. Pour deux corps, cependant, vous mesurez à la somme de Minkowski A-B. Si les corps sont entrés en collision, vous obtiendrez 0 comme résultat, mais vous devrez trouver toutes les paires de points (a dans A, b dans B) dont la différence est exactement 0 pour obtenir l'ensemble des points de collision. Donc, je ne vois pas le résultat GJK menant à une solution générale simple. Essayez de regarder http://www.pfirth.co.uk/minkowski.html pour l'intuition. –
Connaissez-vous une autre solution simple pour trouver des points de vie entre deux corps? J'ai lu "Ray Casting contre les objets convexes généraux avec application à la détection de collision continue" par Gino Van Den Bergen mais c'est vraiment compliqué et semble que ça ne m'aide pas vraiment (Im essayant de faire un simulateur de physique et est crucial pour moi que les corps tournent correctement après une collision). D'après ce que j'ai lu, ça ressemble à ça si un corps tourne, ce n'est pas si facile de trouver des points de vie de cette façon. Peut-être d'autres algorithmes que je peux mettre en œuvre? Je peux vérifier chaque image si cela peut aider. – Viuo