Je dois écrire ce qui peut être résumé comme un jeu 3D complet à partir de zéro ce semestre. Jusqu'à présent, je n'ai programmé que des jeux 2D pendant mon temps libre, la transition ne semble pas difficile, le jeu est simple. Le seul problème que j'ai est la détection de collision. La seule chose que j'ai pu trouver était AABB, des sphères englobantes ou des recommandations de divers moteurs physiques. Je dois programmer un sous-marin qui va se déplacer librement à l'intérieur d'un système de grottes, AFAIK Je ne peux pas utiliser les bibliothèques de physique, donc rien de ce qui précède ne résout mon problème.
Jusqu'à présent, j'utilisais SAT pour ma détection de collision. Existe-t-il des algorithmes excellents similaires, mais conçus pour les collisions 3D? Je ne parle pas d'octrees ou d'autres optimisations, je parle de détection de collision directe d'un ensemble de polygones 3D avec un autre ensemble de polygones 3D. J'ai pensé à utiliser SAT deux fois, projeter le maillage du haut et du côté, mais il semble si difficile de diviser même l'espace 3D en formes convexes. Cela semble aussi beaucoup trop de calcul même avec des octets.
Comment font les professionnels? Quelqu'un pourrait-il faire la lumière?
la source
Réponses:
GJK travaille sur les formes convexes, je pourrais aussi bien utiliser SAT. J'ai déjà trouvé les informations que je voulais. Voici quelques exemples:
Pour résumer, je vais faire des vérifications de collision d'une sphère ou d'un élipsoïde contre plusieurs triangles qui forment un maillage de collision. Cela semble être la façon dont cela se fait et c'est l'information que je demandais, à moins que quelqu'un ne puisse me dire le contraire.
la source
Hé, j'ai écrit sur GJK en 3D ici. SAT est plus lent que GJK http://in2gpu.com/2014/05/18/gjk-algorithm-3d/
la source
Eh bien, si ce n'est pas quelque chose de très exigeant et de l'état de l'art, vous pouvez commencer par implémenter l' algorithme de détection de collision Gilbert . Il peut être fait pour être assez rapide et il sera rapide, à condition que votre géométrie de collision ne soit pas aussi détaillée (et ce n'est pas nécessaire!). C'est ainsi que même certains simulateurs font l'affaire… tout ce qui est plus élaboré prendra probablement plus d'efforts en considération.
la source