Collision Detection FAQ 

version 26.07.2001

Введение


Что такое Collision Detection и зачем оно нужно?


Перед человеком, решившим заняться трехмерной графикой, очень скоро (обычно сразу же после появления на экране первой созданной самостоятельно сцены) встает вопрос, похожий на эти: "А как сделать так, чтобы машинки сталкивались?" или "Как сделать, чтобы человек не проходил сквозь стены и мебель?" или "Как сделать, чтобы мячик скакал по комнате?". 
Вот как раз определением факта столкновения объектов (а в идеале еще и определением точек контакта объектов при столкновении) и занимается Collision Detection. Хотя на самом деле довольно часто, для уменьшения расчетов, вместо самих объектов используют так называемые Bounding Volumes, такие как Bounding Sphere, Bounding Box или объект с минимальным уровнем детализации (в виде выпуклого многогранника). 
Конечно, от этого страдает точность, что проявляется как столкновение объектов, которые визуально все еще находятся друг от друга на некотором расстоянии или, напротив, уже давно должны были столкнуться, но ради скорости чем-то приходится жертвовать.

Назад к оглавлению


Что такое Bounding Volume?


Bounding Volume - это ограниченная область в пространстве. Для целей Collision Detection подразумевается, что эта область "твердая", т.е. сквозь нее не могут проходить другие объекты.
Bounding Volume может иметь любую форму (чаще всего выпуклую), но поскольку определение столкновения сложных объектов - процесс достаточно непростой, который к тому же может занимать довольно много времени, часто сложные объекты заменяются на более простые Bounding Volumes - сферы (Bounding Sphere), параллепипеды (Bounding Box) или выпуклые многогранники (Convex Polyhedron). 
При этом получяется, что объект как бы окружен непроницаемой оболочкой, которая более или менее повторяет его контуры

Назад к оглавлению


Что такое Bounding Sphere?


Bounding Sphere - это Bounding Volume в виде сферы. 
Использование Bounding Sphere - это простой, быстрый и самый грубый (если, конечно, объект сам по себе не является сферой) способ узнать, столкнулись объекты или нет.

Назад к оглавлению


Что такое Bounding Box?


Bounding Box - это Bounding Volume в виде прямоугольного параллепипеда.
Обычно, параллепипед более точно, чем сфера, повторяет форму объектов, к тому же проверка на столкновения с помощью Bounding Box-ов все еще достаточно простая и быстрая, поэтому они наиболее часто используются для проверки на столкновения.

Существует два варианта Bounding Box-ов: AABB и OBB.

Назад к оглавлению


Что такое AABB?


AABB
(Axis-Aligned Bounding Box) - это Bounding Box со сторонами, параллельными осям координат в мировой системе.


Как можно видеть, при вращении объекта AABB изменяет свои размеры, но всегда остается ориентированным по осям координат.

Второй вариант AABB - это использовать в качестве Bounding Box-а куб со сторонами равными максимальному размеру объекта. Таким образом, в любом положении объект не выйдет за пределы AABB, хотя, конечно, при этом теряется точность. 

Проверка на столкновения с помощью AABB выполняется очень просто и быстро.

Назад к оглавлению


Что такое OBB?


OBB
(Oriented Bounding Box) - это произвольно ориентированный Bounding Box.


В отличии от AABB, OBB вращается вместе с объектом и не меняет своих размеров.
Проверка на столкновения с помощью OBB несколько сложнее и медленнее, чем с помощью AABB, но чаще она более предпочтительна.

Alex © 2001