Войти
ПрограммированиеФорумФизика

Физика «на пальцах»: Обнаружение столкновений для выпуклых геометрий (комментарии) (7 стр)

Страницы: 1 2 3 4 5 6 7
#90
11:49, 29 июля 2020

MikeNew
> Видео-визуализация статьи (с крайне упрощенной четвертой фазой), для тех кому
> недостаточно рисунков:
я добавил твою визуализацию в статью, если ты не против

MikeNew
> Я правильно понимаю что в случае многогранников все эти ухищерения излишни, так
> как при маленьком eps все точки получившиеся в результате 2D-клиппинга в любом
> случае будут принадлежать контактной площадке?
не совсем. все точки, получившиеся в результате 2д клиппинга, в любом случае будут кандидатами на точки контактной площадки. эта фаза нужна для того, чтобы установить глубину контакта в каждой из этих точек, что тебе ещё предстоит сделать, судя по видео.

упрощение, которое можно использовать для многогранников — это вместо каста кучи support mapping точек (собственно, axis rotation фаза), можно просто взять соответствующий фейс или ребро многогранника. но на самом деле тут тоже всё не так просто, потому что несколкьо граней многогранника бывают практически параллельны или куб, например, состоящий из треугольников, тоже имеет пары треугольников, образующие грани. короче, меши бывают настолько плохие по качеству в общем случае, что проще для них использовать общий алгоритм.

#91
11:58, 29 июля 2020

Suslik
> я добавил твою визуализацию в статью, если ты не против
Как говорится - "почту за честь".
Suslik
> не совсем. все точки, получившиеся в результате 2д клиппинга, в любом случае
> будут кандидатами на точки контактной площадки. эта фаза нужна для того, чтобы
> установить глубину контакта в каждой из этих точек, что тебе ещё предстоит
> сделать, судя по видео.
Теперь понял, спасибо за объяснение.

#92
8:16, 9 сен 2020

Suslik
> не совсем. все точки, получившиеся в результате 2д клиппинга, в любом случае
> будут кандидатами на точки контактной площадки. эта фаза нужна для того, чтобы
> установить глубину контакта в каждой из этих точек, что тебе ещё предстоит
> сделать, судя по видео.
Возможно, моя реализация все же нуждается в доработке.
Вот, допустим, произошла такая ситуация, два бокса (двумерный случай) глубоко проникли друг в друга:

Изображение

В этом случае контактная площадка же будет представлять собой точку, поскольку при очень малом eps в результате второй фазы будет найдена только оранжевая точка, а красная не будет найдена, все верно?

Второе, если утверждение выше верно, то получается что опять же при очень малом eps глубины контактов всех найденных точек фактически будут равны, поскольку в результате второй фазы будут найдены только самые глубокая точка (глубокие точки)?

Изображение

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

А тут, случайно, не ошибка в статье? Может ребро-фейс, раз 2 и 4 точки? А не вершина-фейс?:

Например, если конактная площадка одного бокса состоит из двух точек, а другого — из четырёх, то это случай контакта вершина-фейс.

#93
8:28, 9 сен 2020

MikeNew
> В этом случае контактная площадка же будет представлять собой точку, поскольку
> при очень малом eps в результате второй фазы будет найдена только оранжевая
> точка, а красная не будет найдена, все верно?
да

> Второе, если утверждение выше верно, то получается что опять же при очень малом
> eps глубины контактов всех найденных точек фактически будут равны, поскольку в
> результате второй фазы будут найдены только самые глубокая точка (глубокие
> точки)?
глубины не обязаны быть близки если контактирующие тела имеют большой размер. например, если очень длинная палка лежит на земле, то даже при малом eps глубины её контактов могут существенно различаться. поэтому eps — безразмерная величина и не зависит от масштаба сцены.


> Для меня важно понять, точно правильно все вышенаписаное, чтобы точно
> определить не из-за ли неправильно постороенной контактной площадки у меня до
> сих пор проблемы в солвере когда бокс падает на платформу под углом на большой
> скорости.
у тебя есть более серьёзные проблемы, чем взаимодействия на большой скорости. для тестирования выпуклой геометрии (включая боксы) можно взять вообще тривиальный случай collision detection'а, где контакты строятся для каждой вершины, которая оказалась ниже линии земли. никаких eps, никаких разделяющих осей, только контакты вершина-плоскость, чтобы исключить ошибки.

> Например, если конактная площадка одного бокса состоит из двух точек, а другого — из четырёх, то это случай контакта вершина-фейс.
я исправил

#94
10:31, 24 сен 2020

Хм.. саппорт-функция для конуса существует? В таком виде как для цилиндра, к примеру..
А то нагуглить не удается.

#95
12:16, 24 сен 2020

MikeNew
> саппорт-функция для конуса существует?
конус — это выпуклая оболочка точки и окружности

#96
11:37, 26 сен 2020

Suslik
> конус — это выпуклая оболочка точки и окружности
И правда, элементарно оказалось. Небольшая переделка саппорт-функции цилиндра и все готово.

#97
11:51, 5 дек 2020

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

#98
16:39, 5 дек 2020

MikeNew
> Саппорт-функция для капсулы

Может это поможет: https://youtu.be/PMltMdi1Wzg

#99
17:58, 5 дек 2020

MikeNew
> цилиндр и две полусферы, но какая-то она тяжелая выходит.
Это смотря с чем искать коллизии, то есть как представлена карта, с которой взаимодействует капсула.

#100
12:01, 6 дек 2020

Mikle
> Это смотря с чем искать коллизии, то есть как представлена карта, с которой
> взаимодействует капсула.
Обычная карта высот, если я правильно понял о чем ты.
Но я имел в виду общий случай, а не столкновение с террайном. Если столкновение с террайном, там вообще достаточно проверять столкновение с нижней полусферой.

#101
14:04, 6 дек 2020

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

Хотя и бокс начинает дрожать если взять величину отклонение оси слишком маленькую.

#102
14:59, 6 дек 2020

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

#103
18:45, 9 дек 2020

Mikle
> Это смотря с чем искать коллизии, то есть как представлена карта, с которой
> взаимодействует капсула.
Что-то я протупил, стоило нарисовать на бумаге в 2D, и оказалось что от сферы почти не отличается. Один дополнительный дот, проверка и сложение(вычитание) с полувысотой капсулы - и готова саппорт-функция для капсулы:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#104
18:46, 9 дек 2020

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

Страницы: 1 2 3 4 5 6 7
ПрограммированиеФорумФизика

Тема в архиве.