Si (à des fins de détection de collision) les objets 3D sont représentés dans un jeu par des sphères, quel est un bon algorithme pour détecter une collision entre sphères?
Si chaque objet a une position à partir de la dernière image et une nouvelle position (souhaitée), quel est un bon algorithme qui identifiera les collisions où les sphères ne se sont pas intersectées dans l'image précédente, et elles peuvent ne pas se croiser dans la deuxième image, mais ils se sont croisés quelque part entre les deux?
la source
Utilisez un test de balayage comme démontré dans cet article Gamasutra.
la source
Du haut de ma tête:
Et c'est tout ce qu'il y a à faire, je m'attends à ce que ce soit assez rapide.
la source
Voici un autre bel article sur Gamasatura .
la source
Parler comme quelqu'un qui a fait ça: ça ne vaut pas la peine . À moins que votre conception de jeu n'en ait absolument besoin, et ce n'est certainement pas le cas, vous consacrerez beaucoup plus d'efforts au balayage que vous ne le pensez vraiment. Et ce sera plus lent que vous ne le souhaitiez.
la source
Il y a un article sur la dérivation de la détection de collision avec les mathématiques sur Flipcode . Il a un cercle-cercle. Il y a comment détecter précisément le point de collision et vérifier s'il y a une collision.
la source
La détection de collision pour un objet en mouvement est généralement appelée "calcul du volume balayé", voici quelques codes / articles sur ce sujet.
http://www.gpu-voxels.org/demos/ (Démo)
Bibliothèques de code source:
https://github.com/fzi-forschungszentrum-informatik/gpu-voxels
https://libigl.github.io/tutorial/#swept-volume
https://github.com/gradientspace/geometry3Sharp
Des articles:
http://gamma.cs.unc.edu/SV/sm03.pdf
https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (malheureusement pas de code source)
http://www.realtimerendering.com/intersections.html (Collection assez lourde de liens)
la source