Привет, я делаю воксельную игру на Java и, исследуя различные вещи, которые мне нужно изучить, я заметил, что многие игры используют AABB для обнаружения столкновений. . А потом я вспомнил, что видел AABB в Minecraft. Но когда я гуглил, что такое AABB, он всплывает только с кодом других людей или какой-то организацией из учебника истории. Stackoverflow, что такое AABB?
Что такое AABB - обнаружение столкновений?
Ответы (2)
AABB означает «ограничивающая рамка, выровненная по оси».
Это достаточно эффективный с вычислительной точки зрения и с точки зрения памяти способ представления объема, обычно используемый, чтобы увидеть, не соприкасаются ли два объекта.
Поскольку он выровнен по оси, он не обязательно очень хорошо "подходит" к вашему реальному трехмерному объекту. Проверки AABB часто используются в качестве грубого первого приближения, чтобы увидеть, могут ли объекты сталкиваться. Затем, если проверка AABB прошла успешно, выполняются более подробные проверки.
Пример:
Представьте, что ваш мир двухмерный, и вы рисуете его на миллиметровой бумаге. У вас есть объекты в мире (мяч, дерево и т. Д.). Чтобы сделать AABB для одного из объектов, вы рисуете прямоугольник вокруг объекта, делая ваши линии параллельными линиям сетки на бумаге.
Если у вас есть AABB для двух объектов, вы можете выполнить довольно простую математику, чтобы увидеть, перекрываются ли эти AABB. Если они не пересекаются, эти два объекта не могут соприкасаться, поэтому ваш алгоритм столкновения может легко начать работу на ранней стадии.
Это довольно легко обобщается на 3D (и не только на D).
Вы также можете посетить gamedev.stackexchange.com.
Выровненная по оси ограничивающая рамка
По сути, это самый маленький кубоид, который может полностью содержать форму, обычно определяемую парой трехмерных координат.
Проверить наличие столкновений между двумя AABB очень быстро, так как все, что вам нужно сделать, это проверить диапазон значений X, Y и Z для углов.