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

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

CC BY
291
30
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ОПРЕДЕЛЕНИЕ КОЛЛИЗИЙ / РАВНОМЕРНАЯ ПОЛИГОНАЛЬНАЯ СЕТКА / АППРОКСИМИРУЮЩИЙ ЦИЛИНДР / ЭЛЕМЕНТ / КОНТАКТНОЕ МНОГООБРАЗИЕ / СИСТЕМА ВИРТУАЛЬНОГО ОКРУЖЕНИЯ / COLLISION DETECTION / REGULAR POLYGONAL MESH / BOUNDING CYLINDER / REGULAR HEIGHT GRID / ELEMENT / CONTACT MANIFOLD / VIRTUAL ENVIRONMENT SYSTEM

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

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

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

Похожие темы научных работ по математике , автор научной работы — Страшнов Е.В., Торгашев М.А.

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

COLLISION DETECTION ALGORITHMS OF BOUNDING CYLINDERS WITH TERRAIN MODEL

This paper considers the task of collision detection for bounding cylinders surrounding the geometry of virtual objects with a terrain. To solve this task, an approach is proposed in which the cylinder is defined analytically, and the terrain is represented as a regular rectangular polygonal mesh. As part of the proposed approach, algorithms have been developed in which the intersection is determined depending on the relative position of the cylinder and the plane of the polygonal mesh element (rectangle or triangle). These algorithms consist of several stages and allow to detect both the fact of the intersection and calculate the necessary contact information about intersection. The proposed solutions are based on fast geometric tests, which are actively used in computer graphics, and that allows to effectively implement algorithms on both CPU and GPU. The developed algorithms for collision detection of bounding cylinders with terrain were implemented in the form of software modules. Approbation of these modules in the created software package of the virtual environment showed the adequacy and effectiveness of the proposed solutions in this paper.

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

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

Е.В. Страшнов, М.А. Торгашев

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

Разработанные алгоритмы определения коллизий аппроксимирующих цилиндров с рельефом местности были реализованы в виде программных модулей. Апробация этих модулей в созданном программном комплексе виртуального окружения показала адекватность и эффективность предлагаемых в статье решений.

Ключевые слова—определение коллизий, равномерная полигональная сетка, аппроксимирующий цилиндр, элемент, контактное многообразие, система виртуального окружения.

I. Введение

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

Статья получена 29 мая 2020.

Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 19-07-00387.

Е.В. Страшнов, ФГУ ФНЦ НИИСИ РАН (e-mail: strashnov_evg@mail.ru).

М.А. Торгашев, кандидат физико-математических наук, ФГУ ФНЦ НИИСИ РАН (e-mail: mtorg@mail.ru).

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

Задаче определения коллизий виртуальных объектов в последние годы было посвящено множество работ. Для определения коллизий аппроксимирующих цилиндров с рельефом местности существует подход, в рамках которого поверхность рельефа задается набором выпуклых объектов, а рассматриваемая задача сводится к определению коллизий между этими объектами и цилиндром. Существующие решения для определения коллизий выпуклых объектов включают в себя алгоритмы, основанные на применении теоремы о разделяющей оси (см. [3], [4]) и семейство алгоритмов, которые носят название вЖ-ЕРА (см. [5], [6], [7], [8]), для объектов, представленных неявно в виде выпуклой оболочки множества точек [9]. Недостатком такого подхода является большое число необходимых выпуклых объектов для задания рельефа, что не позволяет обеспечить масштаб реального времени.

При другом подходе рельеф местности представляется в виде полигональной сетки. Для такого подхода были предложены алгоритмы, в которых цилиндр также представляется в виде полигональной модели, а пересечение рассматривается между всеми треугольниками двух геометрий [10], [11]. Для обеспечения масштаба реального времени в [10] были задействованы полигональные модели со структурой данных в виде октодерева, а в [11] расчет пересечений осуществлялся с применением стандарта OpenCL параллельных вычислений на GPU для задач общего назначения. Однако полигональная модель цилиндра содержит много треугольников, в то время как при аналитическом задании цилиндра достаточно указать лишь его высоту и радиус. С другой стороны, для произвольных полигональных сеток сложно правильно сформировать контактное множество. Поэтому также существует другой подход (см. [12], [13], [14], [15]), в котором виртуальные объекты задаются в аналити-

за один шаг моделирования они не могут сильно проникнуть друг в друга. Предложенные в статье методы и алгоритмы были реализованы в созданном программном комплексе виртуального окружения и апробированы на примерах контакта объектов цилиндрической формы и колес робота с рельефом местности.

II. Постановка задачи

Рассмотрим аппроксимирующий цилиндр радиуса г и высотой к, центр которого расположен в точке С, а ось имеет направление, заданное единичным вектором V (все значения будем задавать в мировой системе координат, см. рис. 1). Основаниями этого цилиндра являются круги с центрами в точках С1 и С2.

Регулярная прямоугольная сетка задается двумерным массивом [16], в котором записаны значения И у высот

относительно некоторого нулевого уровня. Вершины сетки определяются равенствами

V =( хо + х, % +4, и у), у = 0,..., м, 1 = 0,..., ж, (1)

Рис. 1. Аппроксимирующий цилиндр

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

В настоящей работе предлагаются новые методы и алгоритмы определения коллизий аппроксимирующих цилиндров, заданных в аналитическом виде, с рельефом местности. Для эффективной реализации алгоритмов предлагается поход, в котором рельеф представляется в виде регулярной прямоугольной полигональной сетки [16]. Преимущество такого подхода перед решениями, в которых применяется нерегулярная полигональная модель рельефа (например, [10], [11]), заключается в эффективном доступе к данным и независимости от детализации полигональной сетки. В предлагаемых алгоритмах используется ряд быстрых геометрических тестов на пересечение и отсечение отрезков в 2D, вычисление расстояний между примитивами и др., которые активно используются в компьютерной графике, что позволяет эффективно реализовать алгоритмы как на CPU, так и на GPU. При этом предполагается, что в процессе моделирования скорости виртуальных объектов сравнительно невелики, так что

Рис. 2. Элемент полигональной сетки

где (х0, у0) - начальная точка прямоугольной сетки,

йх, йу - шаги сетки вдоль осей х и у. Внутренней частью

полигональной сетки мы будет считать область, которая располагается ниже нее.

С полигональной сеткой связано понятие элемента, которое мы в дальнейшем будем использовать. Для этого рассмотрим четыре смежные вершины У0, У1, У2

и V прямоугольной сетки (см. рис. 2), координаты которых вычисляются согласно (1):

V =( х, у, И 0), VI = ( х + , у, И ), V, =( х, у + , И2), Vз =( х + йх, у + , И3). Если ZV0 = 900, то

% VI • %У2 = (И - И0)(И2 - И0) = 0. Отсюда следует, что либо И1 = И0 либо И2 = И0. Если вершины V0, V1, ^ и V3 находятся в одной плоскости и И1 = И0 то И2 = И3. Тогда условие

V2 Vз • VVз = (Из - иг )(Из - И) = 0, при V2 V, Ф 0 и V1V3 Ф 0 означает, что ZV3 = 900 и является прямоугольником.

Аналогично можно показать, что VVVV будет прямоугольником, если H2 = H0.

Таким образом, если все вершины V0, Vl, V2 и V3 лежат в одной плоскости и ZV0 = 900, то элементом является прямоугольник WW . В противном случае, элементами считаются треугольники WV2 и VW. В итоге получим, что для рассматриваемой полигональной модели рельеф местности образует связанное множество элементов, представляющих собой прямоугольники и треугольники.

Коллизия цилиндра и полигональной сетки характеризуется контактным многообразием (англ. collision manifold) - набором YCP троек параметров

Cpi = {P, d, n }, где P - i-я точка контакта, - единичный вектор нормали в точке Pi , а di - глубина коллизии вдоль нормали n;. На рис. 3 приведен пример, в

плоскость Oxz в мировой системе координат (см. рис. 4).

Верхняя граница хшах определяется крайней точкой N окружности основания цилиндра (при vx > 0 это будет верхнее основание цилиндра, как показано на рис. 4) и вычисляется следующим образом

= Nx = Cx + (CC2)x + (C2N)x.

(2)

Cx ^^ иj\ Рис. 4. Вычисление границ AABB по оси x

Здесь

CC2 = - v и C2N = rt,

2 2 2

(3)

Рис. 3. Точка контакта, нормаль и глубина

котором пересечение цилиндра (вид сбоку) с плоскостью образует одну контактную точку с параметрами CP = {P, d, n} .

Таким образом, задача заключается в том, чтобы определить сам факт пересечения аппроксимирующего цилиндра с рельефом местности и, в случае пересечения, сформировать контактное многообразие YCP.

Решение этой задачи включает в себя три стадии: широкая фаза, узкая фаза и вычисление множества YCP. На стадии широкой фазы применяются грубые тесты на пересечение, чтобы отбросить те элементы полигональной сетки, с которыми цилиндр заведомо не пересекается. На стадии узкой фазы применяются более точные тесты, в которых определяется сам факт пересечения. И, наконец, на последней стадии вычисляется множество YCP. Опишем предлагаемые на этих стадиях алгоритмы более подробно.

III. Широкая фаза определения коллизий

Для реализации широкой фазы определения коллизий

аппроксимирующего цилиндра с рельефом местности

предлагается подход, в рамках которого цилиндр

окружается параллелепипедом AABB [1] (axis aligned bounding box - параллелепипед, выровненный по осям

мировой системы координат). Покажем, как

вычисляются границы AABB по оси x, определяющие

отрезок [ xmin, xmax ]. Для этого спроецируем цилиндр на

где I - вектор, лежащий в верхнем основании цилиндра.

Для координаты tx вектора 1 можно показать, что справедливо равенство

Используя это и подставляя (3) в (2), получим: h | | I-

х™ = сх + ^ N+Ы1 - .

В силу симметрии нижняя граница xшin вычисляется относительно крайней левой точки как

Хшт = Сх - 2 - Ы1 " V2 .

Аналогичным образом выводятся выражения для границ ААВВ по осям у и z.

Прямоугольник, задаваемый границами [ хшЬ, хшах ] и

[Ушт, У™ ], используется для определения множества

О элементов, с которыми потенциально может пересекаться аппроксимирующий цилиндр (см. рис. 5). Это множество ограничено прямоугольником, индексы которого вычисляются следующим образом

V

Jleft

Уm

-Уо

d„

right

Уm

-Уо

d

Xmin Х0 Xmax X0

; J right

dx dx

(4)

где для левых границ используются округления снизу, а для правых - сверху. По этим индексам вычисляются вершины элементов согласно формуле (1).

Быстрым тестом является проверка пересечения относительно оси z. Для множества элементов Q вычисляется минимальное H и максимальное H

min max

значения высот рельефа. Если нижняя граница цилиндра zmin больше, чем Итах, то аппроксимирующий цилиндр и полигональная сетка не пересекаются. В противном

Vo Vi:

VV

■»0*2

Vo Vi :

• V V

' т0 т2

kP = ^0 • n P-

= C - h/2,

x = C - r ; x = C + r ;

min x ' max x '

y = C - r ; y = C + r ; z

■S min y 'У max y ' i

иначе

Ax = (Vx2 < i) ? TT-Vf : 0 ; Ay = (Vy2 < i) ? Az = (vf < i)?7î":Vr : 0 ;

xmin = Cx - hhlVx| - r Ax ; xmax = Cx + ^Ы + r Ax i

0;

Рис. 5. Проекция цилиндра на горизонтальную плоскость

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

случае, еще дополнительно проверяется, является ли участок поверхности горизонтальной плоскостью. Это соответствует условию

|Итах - Итт | ~ВИ ,

где еИ - задаваемая точность.

Если это условие выполнено, то проверяется пересечение аппроксимирующего цилиндра и плоскости. Уравнение плоскости имеет вид

s(P) = кр - Р • пр = 0, (5)

где Р - точка, принадлежащая плоскости, пр - нормаль к плоскости, кр - постоянная плоскости. Уравнение (5) применимо и для отдельного элемента. Например, если прямоугольник V0VV2V3 плоский, то параметры его плоскости вычисляются как

y = C — — \v I — rAy ; y = C + — |v 1+ rAy ;

J min y 2 y I J ? J max y ^ y | ^ '

z ■ = C — — |v I — rAz .

min z 2 z I

2. Вычисляем границы прямоугольной области по

формулам (4) для множества элементов Q .

3. Вычисляем высоты H и H для множества Q .

min max ^

4. Если выполнено Hmax < zmln, то аппроксимирующий цилиндр и рельеф местности не пересекаются.

5. Если выполнено условие |Hmax — Hmln| <sH , то проверяем пересечение цилиндра с плоскостью.

Алгоритм. Широкая фаза определения коллизий.

Проверки в Алгоритме компонентов вектора v при вычислении Ax , Ay и Az необходимы для обеспечения численной устойчивости к погрешностям вычислений. Если на выходе широкой фазы определилось, что аппроксимирующий цилиндр пересекает участок рельефа местности, который не является горизонтальной плоскостью, то переходим к узкой стадии определения коллизий цилиндра с элементами из множества Q .

IV. Узкая фаза определения коллизий

Предлагаемый алгоритм узкой стадии определения коллизий аппроксимирующего цилиндра с элементом обрабатывает три возможных случая контакта цилиндра с элементом: а) пересечение элемента с основанием цилиндра; б) пересечение с боковой поверхностью и в) имеется только одна точка контакта элемента с основанием цилиндра. Каждый из этих случаев соответствует проверке расположения точек оснований цилиндра

A = Ct + r w , Bt = C — r w , i = 1,2 относительно плоскости элемента, где единичный вектор w вычисляется как

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

С алгоритмами определения коллизий аппроксимирующего цилиндра с плоскостью можно ознакомиться в работе [17].

Таким образом, широкую фазу определения коллизий аппроксимирующего цилиндра с полигональной сеткой можно записать в виде следующего Алгоритма:

1. Вычисляем границы ААВВ для цилиндра:

Если у2 -1 < е , то

Рис. 6. Взаимное расположение цилиндра и плоскости V V

т0 M

w =

V V

I 0 MI ( v • n P ) v - n P

если v □ n P

в прот. сл.

(V • пр)V - пр ||

где У0 и V - вершины элемента. Вектор w построен таким образом, чтобы были выполнены условия

n

p

w • V = 0 и w • п р < 0.

На рис. 6 введенные точки и вектор w схематично показаны для случая, когда имеется только одна точка контакта.

Проверка расположения точек относительно плоскости осуществляется с помощью уравнения (5). Если точка Р основания цилиндра лежит выше плоскости элемента, то &'(Р) < 0, в противном случае

Р) > 0 . На рис. 6 для точки А1 будет s(A1) > 0 , а для точки А2 - s(A2) < 0 .

Для каждого случая взаимного расположения цилиндра и плоскости элемента требуется определить сам факт пересечения и добавить, если необходимо, точки контакта в множество Ь(СР) потенциальных точек.

Если контактные точки находятся в одной плоскости, то это множество далее будем называть пятном контакта. Введем некоторые вспомогательные множества вершин и элементов. В множество Ое будем записывать вершины контактирующих элементов, а в множестве 0] будем накапливать вершины элементов, находящихся внутри пятна контакта. При этом сами эти элементы образуют множество О.Е, а элементы, которые полностью находятся внутри пятна контакта, образуют множество О.1. Обработка элементов состоит из двух этапов. Рассмотрим первый этап.

А. Контакт нижнего основания цилиндра с

элементом

В случае контакта нижнего основания цилиндра с элементом должно быть выполнено условие

5(А1) > 0 , s(A2) < 0 и s(B1) > 0 , (6)

Это означает, что обе точки А1 и В1 нижнего основания лежат под плоскостью элемента (или касаются ее), а нижняя точка верхнего основания лежит выше этой плоскости. Для проверки пересечения цилиндра с элементом спроецируем нижнее основание цилиндра на плоскость. В общем случае при проецировании нижнее основание переходит в эллипс (см. рис. 7), а центр С1 основания - в точку

С = С + 5(С1 )пр, где 5(С1) вычисляется по формуле (5). Аналогичным образом вычисляются проекции А1 и Д двух точек А1 и Д основания цилиндра, где Д = С + г и, и = V х w - единичный вектор в плоскости нижнего основания, перпендикулярный вектору w.

В системе координат СС1 х1у1 уравнение эллипса записывается в виде

2 2 x У

E(x,,y,) = 1 = 0 .

a b

(7)

где а = С 1аА1 , Ь = (С 11)11 - полуоси эллипса.

Для проверки пересечения элемента с эллипсом вычисляется точка элемента, которая является

ближайшей к центру СС1 эллипса. На рис. 7 для прямоу-

гольника ¥0¥¥2¥3 ближайшей является точка Q, а для треугольника ¥0¥1¥2 - точка ¥1. Как вычислять эту точку для прямоугольника и треугольника подробно описано в работе [16]. Ее компоненты дх и ду в системе

координат С х У1 вычисляются следующим образом

дх = С^5, Яу = (С ^п, где 5 и п - единичные векторы осей эллипса.

Если для полученных координат выполнено

Рис. 7. Пересечение эллипса и элемента

неравенство Е(дх, ду) < 0, то цилиндр и элемент не

пересекаются.

Если элемент пересекает эллипс, то точки пересечения являются потенциальными точками контактами и добавляются в множество Ь(СР). Точка пересечения вычисляется на основе параметрического задания отрезка Р^) = ¥ + ((V, - Vj) в системе

координат Сх1 у1, где t е[0,1] - параметр отрезка, ¥ и

¥] - вершины элемента, которые находятся внутри и

снаружи эллипса, соответственно. Подставляя координаты точки в (7), получим квадратное уравнение относительно параметра £

k0t2 + 2к^ + к2 = 0,

где к0 =

(J - V,x )2 . (V7,-,y - V y )2

К2 J72,

к = .,А ,,, .,х> + ,,у\ },у—^ , к = + _-1. 1 а2 Ь2 2 а2 Ь2

Решением квадратного уравнения является параметр tр е [0,1], по которому определяются координаты точки

Р в системе координат СС1 х1у1:

Р, = ¥ ,х + tр (V х - V, х), Ру = ¥,у + tр ¥ ,у -17;. ,у).

Контактная точка вычисляется путем обратного проецирования на окружность основания цилиндра. Для полученной точки вычисляется нормаль (совпадающая с нормалью к плоскости элемента) и глубина проникновения вдоль этой нормали. В итоге в множество контактных точек Ь(СР) добавляется точка

Ср = {Р, ё, п} со следующими параметрами:

Р Р

Р = С С1А1 + -у- С1Б1, ё = s( Р), п = пр. (8) а Ь

Все вершины элемента, пересекающего эллипс, добавляются во множество Ое . Те вершины элемента, которые находятся внутри эллипса, также добавляются во множество 01.

Если элемент полностью находится внутри эллипса, то элемент добавляется во множество О, с сортировкой по возрастанию расстояний до границы эллипса, вычисляемых с помощью уравнения (7).

В. Контакт боковой поверхности цилиндра с

Рис. 8. Пересечение трапеции и элемента

элементом

При контакте боковой поверхности цилиндра с элементом должны выполняться условия

s(A1) > 0 и s(A2) > 0. (9)

Пересечение цилиндра с плоскостью элемента в общем случае образует трапецию KLMN (см. рис. 8), стороны и высота которой вычисляются как

W =yjs(At)(2r -s(At)), h = A2|, i = 1,2,

где Aj - проекции точек Aj на плоскость элемента.

Для проверки пересечения трапеции с прямоугольником (или треугольником) в работе был задействовать алгоритм на основе SAT [3] (Separating Axis Theorem - теорема о разделяющей оси). Идея алгоритма заключается в том, что если существует такая ось, что проекции двух фигур на нее не пересекаются, то и сами фигуры не пересекаются. Такая ось называется разделяющей. Если такой оси нет, то рассматриваемые фигуры пересекаются. При этом, для проверки

пересечения двух многоугольников достаточно рассмотреть только оси, направления которых перпендикулярны сторонам многоугольников. Если элемент прямоугольный, то мы имеем три оси, перпендикулярные сторонам трапеции и две оси, перпендикулярные сторонам прямоугольника (всего пять осей). Если ни одна из пяти осей не является разделяющей, то проекция цилиндра пересекается с элементом. Если элемент пересекает проекцию (отрезок А1А2) оси цилиндра, то граничные точки пересечения считаются потенциальными точками контакта (на рис. 8 это точки р1 и р2 ). В противном случае, точки, которые

являются ближайшими к отрезку АА (на рис. 8 это точки Q1, Q2 и Q3), могут быть контактными точками в

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

Для тех элементов, которые пересекают отрезок А1А2, вычисляются крайние точки пересечения. Для этого в данной работе был задействован алгоритм Кируса-Бека [18], предназначенный для отсечения отрезков произвольным выпуклым многоугольником. Здесь отрезком является А1А2, а многоугольником является элемент. Выходом алгоритма являются параметры t1 и /2 отсечения элементом отрезка А1А2. Если ti е [0,1], то элемент

пересекает отрезок, а концы отсеченного отрезка используются для формирования контактных точек Ср I = {р, 4, п } с параметрами

р = А1 +1¡ А1А2, 4 = А'(р), п,. = пр , I = 1,2 , (10) которые добавляются в множество Ь(Ср). Вершины этого элемента добавляются во множество Ое .

Для остальных элементов вычисляются ближайшие точки Q¡, , = 1,2 и расстояние до отрезка А1А2.

Эти элементы добавляются во множество сортировкой расстояний по возрастанию.

с

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

Рис. 9. Контакт бочек с асфальтом в виртуальной сцене

С. Контакт цилиндра с элементом в одной точке В случае контакта нижнего основания цилиндра с элементом в одной точке должно быть выполнено условие

5(А1) > 0, s(A2) < 0 и s(B1) < 0. (11)

Для определения коллизии в этом случае вычисляется точка Q [16], которая является ближайшей к точке

А1 = А1 - ^(А1)пр (проекции А1 на плоскость элемента). Проверка на пересечение цилиндра с элементом состоит в том, чтобы определить, находится ли точка Q внутри цилиндра. Для этого вычисляются координата в

локальной системе координат цилиндра и расстояние г,

до оси цилиндра. Если \z0\ > h/2 или

rQ > r ,

то

цилиндр и элемент не пересекаются.

Если точка Q совпадает с точкой А1, то контактная точка Ср ={р, ё, п} с параметрами

р = А1, ё = s(A1), п = пр, (12)

добавляется в множество Ь(Ср). Вершины этого элемента добавляются во множество Ое .

Если точка Q не совпадает с точкой А1, то элемент добавляется во множество ОЕ с сортировкой расстояний ёт1п = |оА ^ до точки А1.

Б. Второй этап обработки элементов На втором этапе алгоритма обрабатываются множества элементов О, и ОЕ , полученные на первом

этапе. Множество О, сформировано для случая коллизии основания цилиндра с элементами и состоит из тех элементов, которые целиком находятся внутри пятна контакта. Это множество является упорядоченным по расстояниям от ближайшей точки элемента до проекции окружности основания цилиндра на плоскость элемента. Задача обработки множества О, заключается в том, чтобы определить, принадлежат ли вершины

элементов множества О, границе пятна контакта. Если вершина элемента из множества О, не принадлежит множеству ОЕ, то эта вершина добавляется во множества О, и ОЕ .В противном случае, вершина удаляется из множества О,, так как она гарантированно находится внутри пятна контакта. Если после обработки всех элементов из множества О, во множестве О, останутся вершины, то эти вершины находятся на границе пятна контакта и их требуется добавить в множество Ь(Ср) с формированием контактной точки по формуле, которая аналогична (8).

Множество ОЕ сформировано из элементов, полученных при рассмотрении коллизии боковой поверхности цилиндра с элементами, включая случай, когда есть только одна точка контакта. Это множество тоже является упорядоченным по расстояниям от ближайших точек элемента до проекций отрезка боковой поверхности цилиндра или точки на плоскость элемента. Если ближайшие точки Q¡, , = 1,2 элемента не находятся на ребрах, соединяющих вершины ОЕ, то эти точки принадлежат другому пятну контакта. Для этих точек вычисляются координата , в локальной

системе координат цилиндра и расстояние ^, до оси цилиндра. Затем вычисляется ближайшая точка Q'¡= С + zQ ,V оси цилиндра и определяется, какая часть

цилиндра является ближайшей к точке Q¡ путем вычисления расстояний

1,1 = к / 2 - 1| , 1,2 = г - г2, , . = I, 2 .

Если I,1 < I,2 и ось цилиндра не параллельна

плоскости элемента, что соответствует условию (V • пр| > еу, то точка контакта СР1 ={р, ё 1, п,} находится на основании цилиндра и имеет параметры:

р = Q¡ + 5Яп(гв.%^, ё, = 1ц, п,. = -5Яп(ZQJ,)v. (13)

В противном случае, точка контакта СР1 ={р, ё 1, п,}

Рис. 10. Движение модели колесного робота КРТ-100МП по сложному рельефу

находится на боковой поверхности и имеет параметры:

р = ^^ гп,, = I,,2, п, = о; / ГQ,;. (14)

Полученная точка контакта СР1 добавляется в Ь(СР).

В конце обработки все вершины элемента добавляются в множество Ог .

V. Построение контактного многообразия На этой стадии для полученного множества Ь(СР) требуется построить контактное многообразие УСР из тех контактных точек, которые будут использоваться на стадии разрешения коллизии. Для этого разобьем Ь(СР) на подмножества Ьк(Ср), к=1,...,К тех контактных точек, которые имеют одинаковые нормали (здесь К -число подмножеств). Все точки Рк из Ьк (Ср) лежат в одной плоскости и будут образовывать отдельное пятно контакта.

Для построения контактного многообразия УСР в масштабе реального времени в данной работе предлагается следующий эвристический алгоритм. Если количество контактных точек в Ьк (Ср) больше четырех, то из Ьк (Ср) выбираются четыре точки, которые образуют четырехугольник с максимальной площадью. На первом шаге выбирается точка Ср ^, которая имеет максимальную глубину проникновения ёшах . На втором шаге выбирается точка Ср 2, для которой Рк наиболее удалена от Р*. Затем на третьем шаге выбирается точка Ср 3, для которой Р3к наиболее удалена от отрезка ркР2к. Наконец, на четвертом шаге из оставшихся точек из множества Ьк (Ср) выбирается точка СР4, для которой площадь четырехугольника ркР2кР3кР4к будет максимальна.

Если количество контактных точек меньше или равно четырем, то все точки отбираются. Из полученных точек Ср, образуется контактное многообразие УСР.

Алгоритм также учитывает частный случай, характерный для случая контакта боковой поверхности с рельефом местности, когда все контактные точки лежат на одной прямой. В этом случае, если после вычисления третьей точки выполнено условие

|рк р х р Рзк|

то сохраняются только две наиболее удаленные точки.

VI. ЗАКЛЮЧЕНИЕ

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

коллизий аппроксимирующих цилиндров с рельефом местности была проведена на виртуальном полигоне в программном комплексе виртуального окружения [19], [20], созданном в ФГУ ФНЦ НИИСИ РАН. Этот программный комплекс включает в себя подсистемы управления, динамики и визуализации. Апробация проводилась на двух примерах. В первом примере (см. рис. 9) рассматривался контакт цилиндрической бочки с асфальтом и бордюром (бочка № 1), контакт боковой поверхности (бочка № 2) и контакт основания (бочка № 3). На рис. 9 синими точками показаны точки контакта, а желтыми стрелками - их нормали. Во втором примере (см. рис. 10) рассматривалось моделирование движения виртуальной модели колесного робота КРТ-100МП по сложному рельефу местности. Данный робот состоит из основного корпуса и тележки с грузом. При моделировании рассматривалась ситуация, когда корпус робота своей передней частью наезжает на холм из песка, а тележка находится на травяном грунте.

Результаты апробации в комплексе подтвердили эффективность и адекватность разработанных алгоритмов определения коллизий аппроксимирующих цилиндров с рельефом местности для решения задач в системах виртуального окружения, имитационно-тренажерных комплексах, образовательных приложений и т.д.

Библиография

[1] C. Eicson, Real-time collision detection. San Francisco: Morgan Kaufmann Publishers, 2005.

[2] Bounding volume.

Available: https://en.wikipedia.org/wiki/Bounding_volume.

[3] J. Huynh, "Separating axis theorem for oriented bounding boxes,"

2009, Available: http://www.jkh.me/files/tutorials/Separating%20Ax is%20Theorem%20for%200riented%20Bounding%20Boxes.pdf.

[4] D. Gregorius, "The separating axis test," In GDC, 2013.

[5] L. Olvang, "Real-time collision detection with implicit objects," Department of Information Technology, Uppsala University, Sweden,

2010.

[6] А.В. Санников, "Численное моделирование динамики систем твердых деформируемых и жестких тел," Диссертация на соискание ученой степени кандидата физ.-мат. наук, Москва, 2015.

[7] G. van den Bergen, and D. Gregorius, Game physics pearls, AK Peters/CRC Press, 2010.

[8] J.A. Newth, "Minkowski portal refinement and speculative contacts in Box2D," Master's Projects, 2013.

[9] D. Gregorius, "Implementing quickhull," Game Developers Conference (Valve Software) in San Francisco, 2014.

[10] F.J. Melero, A. Aguilera, and F.R. Feito, "Fast collision detection between high resolution polygonal models," Computers & Graphics, 2019, pp. 97-106.

[11] N. Backman, "Collision detection of triangle meshes using GPU," Master's thesis, Umea University, 2010.

[12] A. Moravanszky, and P. Terdiman, "Fast Contact Reduction for Dynamics Simulation," In Game Programming Gems 4, Charles River Media, 2004, pp. 253-263.

[13] P. Terdiman, "Contact generation for meshes", Available: http://www.codercorner.com/MeshContacts.pdf.

[14] E.-A. Karabassi, G. Papaioannou, T. Theoharis, and A. Boehm, "Intersection test for collision detection in particle systems," Journal of Graphic Tools, 1999, pp. 25-37.

[15] M. G. Coutinho, Dynamic simulation of multibody systems. Springer, 2001.

[16] Е.В. Страшнов, Л.А. Финагин, "Определение коллизий аппроксимирующих сфер с рельефом местности," Труды НИИСИ РАН, Т. 9, № 5, 2019, стр. 111-118.

[17] Е.В. Страшнов, Д.В. Омельченко, "Определение коллизий аппроксимирующих цилиндров со сферами и плоскостью," Труды НИИСИРАН, Т. 8, № 2, 2018, стр. 92-97.

[18] M. Cyrus, and J. Beck. "Generalized two- and three-dimensional clipping," Computers & Graphics, 1978, pp. 23-28.

[19] Е.В. Страшнов, М.В. Михайлюк, "Методы силового управления манипуляционными роботами в системах виртуального окружения," International Journal of Open Information Technologies, Т. 7, № 9, 2019, стр. 39-45.

[20] П.Ю. Тимохин, М.В. Михайлюк, А.В. Мальцев, "Построение на GPU в масштабе реального времени адаптивной модели рельефа Земли на основе эллипсоида вращения," International Journal of Open Information Technologies, Т. 7, № 10, 2019, стр. 22-35.

Collision detection algorithms of bounding cylinders with terrain model

E.V. Strashnov, M.A. Torgashev

Abstract—This paper considers the task of collision detection for bounding cylinders surrounding the geometry of virtual objects with a terrain. To solve this task, an approach is proposed in which the cylinder is defined analytically, and the terrain is represented as a regular rectangular polygonal mesh. As part of the proposed approach, algorithms have been developed in which the intersection is determined depending on the relative position of the cylinder and the plane of the polygonal mesh element (rectangle or triangle). These algorithms consist of several stages and allow to detect both the fact of the intersection and calculate the necessary contact information about intersection. The proposed solutions are based on fast geometric tests, which are actively used in computer graphics, and that allows to effectively implement algorithms on both CPU and GPU.

The developed algorithms for collision detection of bounding cylinders with terrain were implemented in the form of software modules. Approbation of these modules in the created software package of the virtual environment showed the adequacy and effectiveness of the proposed solutions in this paper.

Keywords—collision detection, regular polygonal mesh, bounding cylinder, regular height grid, element, contact manifold, virtual environment system.

REFERENCES

[1] C. Eicson, Real-time collision detection. San Francisco: Morgan Kaufmann Publishers, 2005.

[2] Bounding volume. Available: https://en.wikipedia.org/wiki/Bounding_volume.

[3] J. Huynh, "Separating axis theorem for oriented bounding boxes," 2009,

Available: http://www.jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%200riented%20Bounding%20Boxes.pdf.

[4] D. Gregorius, "The separating axis test," In GDC, 2013.

[5] L. Olvang, "Real-time collision detection with implicit objects," Department of Information Technology, Uppsala University, Sweden, 2010.

[6] A. V. Sannikov, "Numerical simulation of rigid, deformable and stiff bodies," Ph.D. dissertation, Moscow, 2015.

[7] G. van den Bergen, and D. Gregorius, Game physics pearls, AK Peters/CRC Press, 2010.

[8] J.A. Newth, "Minkowski portal refinement and speculative contacts in Box2D," Master's Projects, 2013.

[9] D. Gregorius, "Implementing quickhull," Game Developers Conference (Valve Software) in San Francisco, 2014.

[10] F.J. Melero, A. Aguilera, and F.R. Feito, "Fast collision detection between high resolution polygonal models," Computers & Graphics, 2019, pp. 97-106.

[11] N. Backman, "Collision detection of triangle meshes using GPU," Master's thesis, Umea University, 2010.

[12] A. Moravanszky, and P. Terdiman, "Fast Contact Reduction for Dynamics Simulation," In Game Programming Gems 4, Charles River Media, 2004, pp. 253-263.

[13] P. Terdiman, "Contact generation for meshes", Available: http://www.codercorner.com/MeshContacts.pdf.

[14] E.-A. Karabassi, G. Papaioannou, T. Theoharis, and A. Boehm, "Intersection test for collision detection in particle systems," Journal of Graphic Tools, 1999, pp. 25-37.

[15] M. G. Coutinho, Dynamic simulation of multibody systems. Springer, 2001

[16] E.V. Strashnov, and L.A. Finagin, "Collision detection of bounding spheres with terrain," Proceedings of NIISI RAS, Vol. 9, No. 5, 2019, pp. 111-118.

[17] E.V. Strashnov, and D.V. Omelchenko, "Collision detection of bounding cylinders with spheres and a plane," Proceedings of NIISI RAS, Vol. 8, No. 2, 2018, pp. 92-97.

[18] M. Cyrus, and J. Beck. "Generalized two- and three-dimensional clipping," Computers & Graphics, 1978, pp. 23-28.

[19] E.V. Strashnov, and M.V. Mikhaylyuk, "Methods for robotic manipulator force control in virtual environment systems," International Journal of Open Information Technologies, Vol. 7, No. 9, 2019, pp. 39-45.

[20] P. Yu. Timokhin, M.V. Mikhaylyuk, and A.V. Maltsev, "Real-time construction on the GPU of adaptive terrestrial relief model based on the spheroid," International Journal of Open Information Technologies, Vol. 7, No. 10, 2019, pp. 22-35.

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