web-dev-qa-db-fra.com

Qu'est-ce que AABB - Détection de collision?

Salut, je fais un jeu Voxel en Java et en recherchant toutes les différentes choses que j'aurais besoin d'apprendre, j'ai remarqué que beaucoup de jeux utilisent AABB pour la détection de collision. Et puis je me suis souvenu d'avoir vu AABB dans Minecraft aussi. Mais quand je google ce que AABB est, il ne vient qu'avec le code d'autres peuples, ou une organisation sur le livre d'histoire. Stackoverflow, qu'est-ce que AABB ?

41
SemperAmbroscus

AABB signifie " Axis-Aligned Bounding Box ."

C'est une façon assez efficace en termes de calcul et de mémoire de représenter un volume, généralement utilisée pour voir si deux objets peuvent se toucher.

Puisqu'il est aligné sur l'axe, il ne correspond pas nécessairement très bien à votre véritable objet 3D. Les vérifications AABB sont souvent utilisées comme première approximation grossière pour voir si des objets peuvent entrer en collision. Ensuite, si le contrôle AABB réussit, des contrôles plus détaillés sont effectués.

Exemple:

Imaginez que votre monde est en 2D et que vous le dessinez sur une feuille de papier millimétré. Vous avez des objets dans le monde (une balle, un arbre, peu importe). Pour créer un AABB pour l'un des objets, vous dessinez un rectangle autour de l'objet, en faisant vos lignes parallèles aux lignes de la grille sur le papier.

Si vous avez l'AABB pour deux objets, vous pouvez faire des calculs assez simples pour voir si ces AABB se chevauchent. S'ils ne se chevauchent pas, ces deux objets ne pourraient pas être en contact, c'est donc un début facile pour votre algorithme de collision.

Cela se généralise assez facilement en 3D (et plus-D).

Vous voudrez peut-être vérifier gamedev.stackexchange.com , aussi.

45
jwd

Boîte de délimitation alignée sur l'axe

Fondamentalement, c'est le plus petit cuboïde qui peut contenir complètement la forme, généralement défini par une paire de coordonnées 3D.

Il est très rapide de vérifier les collisions entre deux AABB car il vous suffit de vérifier la plage des valeurs X, Y et Z pour les coins.

7
Tim B