Научная статья на тему 'Определение коллизий аппроксимирующих сфер и прямоугольных параллелепипедов в системах трехмерного моделирования'

Определение коллизий аппроксимирующих сфер и прямоугольных параллелепипедов в системах трехмерного моделирования Текст научной статьи по специальности «Математика»

CC BY
315
118
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
определение коллизий / аппроксимирующие контейнеры / моделирование динамики / collision detection / bounding volumes / dynamics modeling

Аннотация научной статьи по математике, автор научной работы — А.М. Трушин

В системах трехмерного моделирования виртуальные объекты могут сталкиваться друг с другом. Определение таких столкновений (коллизий) является неотъемлемой частью любого физического движка. Для физических движков важнейшую роль играет скорость их расчетов. Для поддержки режима реального времени расчеты одного кадра мо-делирования не должны превышать 40 мс для обеспечения визуализации не менее 25 кадров в секунду, поэтому к системе расчета динамики в целом и к определениям коллизий в частности предъявляется требование разработки быстрых и эффективных алгоритмов. Определение коллизий объектов произвольной формы – трудная задача, имею-щая высокую вычислительную сложность, поэтому широко применяется метод определения коллизий при помощи аппроксимирующих контейнеров. В этом случае формы виртуальных объектов описываются (аппроксимируются) раз-личными геометрическими примитивами и задача определения коллизий самих объектов сводится к определению коллизий их аппроксимирующих контейнеров. Широкое распространение получили такие примитивы, как прямо-угольные параллелепипеды и сферы. Алгоритмы определения коллизий бывают априорными и апостериорными. Априорные алгоритмы предсказывают коллизии тел, а апостериорные определяют коллизии уже по факту пересече-ния самих объектов. При этом априорные алгоритмы в общем случае обладают значительно большей вычислительной сложностью ввиду большего объема входных данных. В связи с этим в физических движках, ориентированных на моделирование динамики в режиме реального времени, в основном используются апостериорные алгоритмы опреде-ления коллизий. Настоящая работа посвящена разработке быстрых и эффективных апостериорных алгоритмов опре-деления коллизий сфер между собой и сфер с прямоугольными параллелепипедами.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

COLLISION DETECTION FOR BOUNDING SPHERES AND RECTANGULAR PARALLELEPIPEDS IN 3D MODELING SYSTEMS

Virtual objects in 3D modeling systems may collide with each other. Collision detection is an integral part of any physical engine. The speed of calculation is crucial for physical engines. In real-time mode one simulation frame calculations should not exceed 40 ms to visualize at least 25 frames per second. Therefore, there is a need in development of fast and efficient algorithms for the dynamics calculation system and for collision detection in particular. Collision detection of complex shape's objects is a difficult task, which has a high computational complexity. Therefore, a method using bounding volumes is widely used. In this case, virtual objects forms are described by as different geometric prim-itives, and the problem of objects' collision detection is reduced to the collision detection of their bounding volumes. Such primitives as rectangular parallelepipeds (boxes) and spheres became widespread. Collision detection algorithms may be a priori and a posteriori. A priori algorithms predict collisions of bodies, and a posteriori algorithms detect collisions after actual intersections of the objects. In general, a priori algorithms have much higher computational com-plexity due to the greater amount of input data. In this regard, physics engines oriented on real-time dynamics modeling basically use a posteriori collision detection algorithms. This work is devoted to the development of fast and efficient algorithms for a posteriori sphere-sphere and sphere-box collision detection.

Текст научной работы на тему «Определение коллизий аппроксимирующих сфер и прямоугольных параллелепипедов в системах трехмерного моделирования»

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

УДК 004.921 Дата подачи статьи: 27.07.15

DOI: 10.15827/0236-235X.112.105-109

ОПРЕДЕЛЕНИЕ КОЛЛИЗИЙ АППРОКСИМИРУЮЩИХ СФЕР И ПРЯМОУГОЛЬНЫХ ПАРАЛЛЕЛЕПИПЕДОВ В СИСТЕМАХ ТРЕХМЕРНОГО МОДЕЛИРОВАНИЯ

(Исследования выполнены при поддержке РФФИ, грант № 13-07-00708)

А.М. Трушин, научный сотрудник, leha_trushin@mail.ru (ФНЦ НИИСИ РАН, Нахимовский просп., 36, корп. 1, г. Москва, 11 7218, Россия)

В системах трехмерного моделирования виртуальные объекты могут сталкиваться друг с другом. Определение таких столкновений (коллизий) является неотъемлемой частью любого физического движка. Для физических движков важнейшую роль играет скорость их расчетов. Для поддержки режима реального времени расчеты одного кадра моделирования не должны превышать 40 мс для обеспечения визуализации не менее 25 кадров в секунду, поэтому к системе расчета динамики в целом и к определениям коллизий в частности предъявляется требование разработки быстрых и эффективных алгоритмов. Определение коллизий объектов произвольной формы - трудная задача, имеющая высокую вычислительную сложность, поэтому широко применяется метод определения коллизий при помощи аппроксимирующих контейнеров. В этом случае формы виртуальных объектов описываются (аппроксимируются) различными геометрическими примитивами и задача определения коллизий самих объектов сводится к определению коллизий их аппроксимирующих контейнеров. Широкое распространение получили такие примитивы, как прямоугольные параллелепипеды и сферы. Алгоритмы определения коллизий бывают априорными и апостериорными. Априорные алгоритмы предсказывают коллизии тел, а апостериорные определяют коллизии уже по факту пересечения самих объектов. При этом априорные алгоритмы в общем случае обладают значительно большей вычислительной сложностью ввиду большего объема входных данных. В связи с этим в физических движках, ориентированных на моделирование динамики в режиме реального времени, в основном используются апостериорные алгоритмы определения коллизий. Настоящая работа посвящена разработке быстрых и эффективных апостериорных алгоритмов определения коллизий сфер между собой и сфер с прямоугольными параллелепипедами.

Ключевые слова: определение коллизий, аппроксимирующие контейнеры, моделирование динамики.

К важнейшим задачам при моделировании динамики трехмерных виртуальных объектов (тел) относятся определение и обработка их столкновений (коллизий) [1]. Определение коллизий объектов произвольных форм является вычислительно сложной задачей [2], поэтому широкое распространение получил метод определения коллизий, при котором каждый динамический объект окружается (аппроксимируется) одним или несколькими геометрическими контейнерами (параллелепипедами, сферами и т.д.) [3]. Тогда моделирование столкновения двух тел заключается в определении параметров (точки, глубины и нормали) коллизии аппроксимирующих контейнеров двух объектов и в задании реакции тел на это столкновение.

Алгоритмы определения коллизий делятся на два вида: априорные и апостериорные [4]. Априорные алгоритмы предсказывают столкновения тел, апостериорные определяют коллизию объектов уже по факту их столкновения. В общем случае априорные алгоритмы обладают большей точностью вычисления информации о коллизии, но их существенным недостатком является большая вычислительная сложность, связанная с большим объемом входных данных (положение и ориентация объектов, а также их физические параметры: скорость, сила, моменты и т.д.). В связи с этим системы динамики, основанные на априорных определениях коллизий, работают в режиме реального времени (не менее 25 шагов моделирования в секунду) лишь для небольшого числа виртуальных объектов. Для апостериорных алгоритмов опреде-

ления коллизий входной объем данных сводится только к положению и ориентации объектов.

В настоящей работе рассматриваются методы апостериорного определения коллизий двух сфер и сферы с прямоугольным параллелепипедом (боксом). Коллизии боксов между собой рассмотрены в [5].

Понятие коллизии

В данной работе будут использоваться правосторонние системы координат. Для каждого аппроксимирующего контейнера задается матрица перехода из его локальной системы координат в мировую [6]. Первые три столбца этой матрицы задают ориентацию тела, а четвертый - положение начала локальной системы координат тела в мировой системе координат.

Обозначим радиус сферы через r, а начало ее локальной системы координат расположим в центре сферы.

Размеры бокса задаются величинами l (половина длины), w (половина ширины) и h (высота). Начало локальной системы координат расположим в центре нижней грани бокса так, что ось x направлена параллельно ребру бокса, задающему его длину, ось y - ширину, а ось z - высоту.

Под определением коллизии пары аппроксимирующих контейнеров понимается определение факта их пересечения и, в случае его наличия, вычисление точки коллизии, нормали расталкивания и глубины коллизии.

105

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

Точка, нормаль и глубина коллизии. В качестве первого объекта коллизии всегда будем рассматривать сферу, а вторым объектом будет либо сфера, либо бокс. Определим точку коллизии как точку поверхности второго объекта, наиболее близкую к центру первого. Под нормалью коллизии будем подразумевать единичный вектор, направленный вдоль прямой, проходящей через точку контакта и центр первого объекта, и указывающий направление расталкивания для первого объекта. Глубина коллизии - это расстояние, на которое точка коллизии проникла в первый объект вдоль нормали.

Обозначим через P точку коллизии. Пусть O\ и O2 - положение центров первого и второго объектов в мировой системе координат, а M\ и M2 - соответствующие матрицы перехода. Если вторым объектом является сфера, то ее центр задается четвертым столбцом матрицы M2, если же бокс, то к координате z четвертого столбца надо прибавить h/2 (так как начало системы координат бокса располагается в центре нижнего основания). Тогда нормаль коллизии определим вектором

- (P&POJPO, (\)

|(0201,Р01)Р01|

а глубину коллизии величиной

D = rl-(N,POl). (2)

Определение коллизии двух сфер

Две сферы пересекаются тогда и только тогда, когда сумма их радиусов больше или равна расстоянию между их центрами (см. рис. 1), то есть O\ -

O2I < = r\ + r2.

Если сферы пересекаются, то точка коллизии лежит на поверхности второй сферы на прямой, со-

единяющей их центры: P = O2 + r2

02°1

\оД

Проверим совпадение направления нормали (1)

с направлением вектора 02Ох , который и будет вектором, задающим правильное направление для расталкивания первого объекта. Рассмотрим два случая: центр O\ находится вне второй сферы (рис. 1а) и центр O\ находится внутри второй сферы (рис. 16). В первом случае векторы

РОх и 020х направлены в одну сторону, поэто-

следовательно, вектор

му (0201,Р01)> О

(020l,P0l)P0l также совпадает по направлению

с вектором 020х , то есть направление нормали верное. Во втором случае вектор Р01 направлен противоположно вектору ()2 (\ , поэтому

(0201,Р01) < 0 . Произведение (020l,P0l)P0l

даст вектор, совпадающий по направлению с вектором О-,()] , то есть нормаль направлена верно.

Тогда из (2) получаем, что глубина коллизии в первом случае будет I) = /]- (.N,POl) = /; - POl |, а во втором - D = rx —(N,PО[) = /; + РОх \.

Определение коллизии сферы с прямоугольным параллелепипедом

Для определения коллизии сферы и бокса обозначим через Q точку на поверхности бокса, ближайшую к центру сферы. Рассмотрим всевозможные варианты расположения центра сферы относительно бокса (см. рис. 2).

1. Центр сферы расположен точно над одной из граней бокса. Тогда точкой Q является конец перпендикуляра, опущенного из центра сферы к этой грани (точка Q\ на рисунке 2).

2. Центр сферы расположен по диагонали от одного из ребер бокса, то есть вне двух соседних граней, содержащих это ребро. Тогда точкой Q является конец перпендикуляра, опущенного из центра сферы к этому ребру бокса (точка Q2 на рисунке 2).

3. Центр сферы расположен по диагонали от одной из вершин бокса, то есть вне трех соседних гра-

!06

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

ней, содержащих эту вершину. Тогда точкой Q будет эта вершина бокса (точка Q3 на рисунке 2).

4. Центр сферы лежит внутри бокса. Тогда точкой Q является конец перпендикуляра, опущенного из центра сферы к ближайшей грани бокса (точка Q4 на рисунке 2).

Обозначим через E1 систему координат сферы, а через E2 систему координат бокса. Рассмотрим достаточно быстрый алгоритм, позволяющий определить положение центра сферы относительно бокса. Причем, если центр сферы лежит вне бокса, алгоритм сразу вычисляет точку Q. Суть алгоритма

- перевод вектора 020х из мировой системы координат в систему E2 и его покомпонентное сравнение с полуразмерами бокса. Обозначим совокуп-

ность координат вектора 020х в системе координат Е2 через йЕ2. Получим йЕ1 =М2\Ох -02).

Тогда с использованием компонентxjnz вектора йЕ2 алгоритм будет следующим.

Если йЕ2 .х <-1/2, то

йЕ2.х = -1)2,

иначе, если йЕ2.х >1/2 , то йЕ2.х = 1/2 .

Если йЕ2.у < -и/2, то

йЕ2 -У = -Ч2,

иначе, если и.

2 .у > w/2, то

2. у = w/2 .

Если uE2.z < —h/2, то uE2.z = —И/ 2,

иначе, если и

2 .z > h/2, то

Е2-

йЕ2 .z = h/2.

Если выполняется хотя бы одно из данных условий, значит, центр сферы лежит вне бокса. Тогда точка Q в системе координат Е2 будет

Qe2 = °2Е2 +йЕ2, а В мировой Q =М2(02Е2 +иЕ2) =

— 02 + A/t2uE2.

Если не выполнилось ни одно из условий, значит, центр сферы лежит внутри бокса. Рассмотрим отдельно оба случая.

Центр сферы лежит вне бокса. Сфера и бокс пересекаются тогда и только тогда, когда радиус сферы больше расстояния от ее центра Oi до точки Q, то есть |Oi - Q| < ri.

Если сфера и бокс пересекаются, точка коллизии Р будет совпадать с Q. Ясно, что соответ-

ствующие координаты векторов 020х и Р()] в системе Е2 имеют одинаковые знаки, поэтому

((ЩЩ) > 0 . Тогда из (1) следует, что N сов-

падет по направлению с РОх (то есть будет соответствовать направлению расталкивания сферы), а из (2) получаем D = rx- (N,POx) = rx - \ РОх \.

Центр сферы лежит внутри бокса. В этом случае вектор йЕ2 будет соединять центр бокса с

Вычислим направление d и расстояние min от центра сферы до ближайшей грани бокса: тт=//2-|йг2.х|,^ = (мг2.х О 0)г.

Если min > w/2-\ йЕ2.у \, то

min = w/2-1 йЕ2.у\, d = (0 йЕ2.у 0)г .

107

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

Если min > И/ 2 -1 min = й/2-| d = (О О Тогда

2-0

коллизии

P = O + min-

точка d_

‘ I d\

Проверим, что направление нормали (1) будет противоположно направлению вектора Р01, то есть будет правильным для расталкивания первого объекта. Ясно, что косинус угла между векторами ()-/)] и РОх отрицательный, то есть

(020х, РОх) < 0 . Следовательно, направление нормали будет противоположно направлению РОх . Тогда из (2) получаем, что в этом случае глубина коллизии

D = rx -(N,POx) = гх+\Щ\.

В заключение отметим, что рассмотренные алгоритмы определения коллизий двух сфер между собой и сферы с прямоугольным параллелепипедом позволяют вычислять информацию о коллизиях с небольшой вычислительной сложностью. Вместе с обработкой коллизий, описанной в [7], это позволяет моделировать динамику в режиме реального времени большого (вплоть до нескольких тысяч) количества виртуальных объектов.

Данные алгоритмы были реализованы в рамках динамической библиотеки, входящей в состав существующей системы трехмерного моделирования виртуальных объектов. За счет наличия в этой системе модуля визуализации [8, 9] реализованные алгоритмы были проверены на наборе тестовых сцен, имитирующих различные ситуации при столкновении виртуальных объектов. Особое внимание было уделено сложной в плане моделирования динамики ситуации покоя множества тел друг на друге (см. рис. 4). Сложность такой ситуации при моделировании динамики в том, что на тела постоянно действует сила тяжести. Таким образом, тела постоянно стремятся проникать друг в друга, а подсистема определения и обработки коллизий этому противодействует. До тех пор, пока в этой подсистеме получаемые расчеты по обработке коллизий не полностью удовлетворяют условию покоя всех тел одновременно, объекты совершают небольшие движения вверх-вниз (подрагивают).

Рис. 4. Множество тел друг на друге в состоянии покоя Fig. 4. Many motionless objects one on another

Система динамики в примере покоя объектов друг на друге показала убедительные результаты времени расчетов. На просчет одного шага моделирования при наличии незначительного дрожания объектов уходит не более 3 мс. В течение небольшого количества шагов моделирования объекты перестают дрожать и переходят в статическое положение, при котором определение и обработка их коллизий прекращаются и на просчет одного шага моделирования уходит менее 1 мс.

Литература

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1. Moore M., Wilhelms J. Collision Detection and Response for Computer Animation. Computer Graphics, 1998, vol. 22, no. 4, pp. 289-298; URL: http://www.cs.princeton.edu/courses/archive/ spring01/cs598b/papers/moore88.pdf (дата обращения: 10.07.2015).

108

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

2. Ming C. Lin, Gottschalk S. Collision detection between geometric models: a survey. Proc. of IMA conference on mathematics of surfaces. 1998, vol. 1, pp. 602-608; URL: https://us-ers.soe.ucsc.edu/~pang/161/w06/notes/cms98.pdf (дата обращения: 10.07.2015).

3. Bounding volume. URL: https://en.wikipedia.org/wiki/Bo-unding_volume (дата обращения: 10.07.2015).

4. Ericson C. Real-Time Collision Detection. CRC Press, 2004, 594 p.; URL: https://books.google.ru/books?id=WGpL6 Sk9qNAC (дата обращения: 10.07.2015).

5. Михайлюк М.В., Трушин А.М. Расчет коллизий прямоугольных параллелепипедов в задачах динамики // Труды НИИСИ РАН. Т. 2. № 2. Обработка изображений, моделирование и визуализация: теоретические и прикладные аспекты. 2012. С. 51-59.

6. Transformation matrix. URL: https://en.wikipedia.org/wi-ki/Transformation_matrix (дата обращения: 10.07.2015).

7. Трушин А.М. Обработка коллизий виртуальных объектов с помощью метода последовательных импульсов // Труды НИИСИ РАН. Т. 4. N° 2. Математическое и компьютерное моделирование сложных систем: теоретические и прикладные аспекты. 2014. С. 95-105.

8. Михайлюк М.В., Торгашев М.А. Система «GLVIEW» визуализации для моделирующих комплексов и систем виртуальной реальности // Вестн. РАЕН. 2011. № 2. C. 20-28.

9. Михайлюк М.В., Торгашев М.А. Визуализация динамики объектов управления в реальном времени // Научная визуализация. 2014. Т. 6. № 5. C. 69-80; URL: http://sv-jour-nal.org/2014-5/index2139.html?lang=ru (дата обращения: 10.07.2015).

DOI: 10.15827/0236-235X.112.105-109 Received 27.07.15

COLLISION DETECTION FOR BOUNDING SPHERES AND RECTANGULAR PARALLELEPIPEDS

IN 3D MODELING SYSTEMS

(The research has been supported by RFBR, grant no. 15-07-04544)

Trushin A.M., Research Associate, leha_trushin@mail.ru;

(SRISA RAS, Nakhimovsky Ave. 36/1, Moscow, 117218, Russian Federation)

Abstract. Virtual objects in 3D modeling systems may collide with each other. Collision detection is an integral part of any physical engine. The speed of calculation is crucial for physical engines. In real-time mode one simulation frame calculations should not exceed 40 ms to visualize at least 25 frames per second. Therefore, there is a need in development of fast and efficient algorithms for the dynamics calculation system and for collision detection in particular. Collision detection of complex shape's objects is a difficult task, which has a high computational complexity. Therefore, a method using bounding volumes is widely used. In this case, virtual objects forms are described by as different geometric primitives, and the problem of objects' collision detection is reduced to the collision detection of their bounding volumes. Such primitives as rectangular parallelepipeds (boxes) and spheres became widespread. Collision detection algorithms may be a priori and a posteriori. A priori algorithms predict collisions of bodies, and a posteriori algorithms detect collisions after actual intersections of the objects. In general, a priori algorithms have much higher computational complexity due to the greater amount of input data. In this regard, physics engines oriented on real-time dynamics modeling basically use a posteriori collision detection algorithms. This work is devoted to the development of fast and efficient algorithms for a posteriori sphere-sphere and sphere-box collision detection.

Keywords: collision detection, bounding volumes, dynamics modeling.

References

1. Moore M., Wilhelms J. Collision Detection and Response for Computer Animation. Computer Graphics. 1998, vol. 22, no. 4, pp. 289-298. Available at: http://www.cs.princeton.edu/courses/archive/spring01/cs598b/papers/moore88.pdf (accessed July 10, 2015).

2. Ming C. Lin, Gottschalk S. Collision detection between geometric models: a survey. Proc. of IMA Conf. on Mathematics of Surfaces. 1998, vol. 1, pp. 602-608. Available at: https://users.soe.ucsc.edu/~pang/161/w06/notes/cms98.pdf (accessed July 10, 2015).

3. Bounding volume. Wikipedia. The Free Encyclopedia. Available at: https://en.wikipedia.org/wiki/Bounding_volume (accessed July 10, 2015).

4. Ericson C. Real-Time Collision Detection. CRC Press, 2004, 594 p. Available at: https://books.google. ru/books?id=WGpL6Sk9qNAC (accessed July 10, 2015).

5. Mikhaylyuk M.V., Trushin A.M. Computation of rectangular parallelepipeds collision detection in dynamics. Trudy NIISIRAN [Pros. of SRISA RAS]. Moscow, 2012, vol. 2, no. 2, pp. 51-59 (in Russ).

6. Transformation matrix. Wikipedia. The Free Encyclopedia. Available at: https://en.wikipedia.org/wiki/Transfor-mation_matrix (accessed July 10, 2015).

7. Trushin A.M. Collision response of virtual objects using the method of sequential impulses. Trudy NIISI RAN [Pros. of SRISA RAS]. Moscow, 2014, vol. 4, no. 2, pp. 95-105 (in Russ).

8. Mikhaylyuk M.V., Torgashev M.A. “GLView” visualization system for simulation complexes and virtual reality systems. Vestnik rAeN [Bulletin of RANS]. 2011 no. 2, pp. 20-28 (in Russ).

9. Mikhaylyuk M.V., Torgashev M.A. Real-time visualization of controlled objects’ dynamics. Nauchnaya vizualizatsiya [Scientific Visualization]. 2014, vol. 6, no. 5, pp. 69-80 (in Russ). Available at: http://sv-journal.org/2014-5/in-dex2139.html?lang=ru (accessed July 10, 2015).

109

i Надоели баннеры? Вы всегда можете отключить рекламу.