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

Помогите написать физический движок :) (29 стр)

Страницы: 128 29 30 3137 Следующая »
#420
23:55, 11 окт. 2018

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


#421
(Правка: 2:14) 1:55, 12 окт. 2018

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

Я вижу только один вариант, надо по другому считать нормали и по другому искать точку на каждой плоскости. В общем help.
То есть проблема в 4 фазе.

#422
3:13, 12 окт. 2018

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

#423
(Правка: 3:19) 3:18, 12 окт. 2018

Suslik
Не очевидно. Почему? Сами два полигона показаны в плоскости перпендикулярной axis. Я правда не пойму.

#424
3:23, 12 окт. 2018

vindast
> Не очевидно. Почему? Сами два полигона показаны в плоскости перпендикулярной
> axis. Я правда не пойму.
что почему? если две плоскости прошли одна через другую, то, ясное дело, точки должны выталкиваться.

#425
(Правка: 3:29) 3:29, 12 окт. 2018

Suslik, менять направление то есть при проскоке? Я не понял ничего. Одна сквозь другую прошла так, что все точки со второй плоскости проецируются на первую в направлении -Axis.

#426
3:58, 12 окт. 2018

vindast
> Одна сквозь другую прошла так, что все точки со второй плоскости проецируются
> на первую в направлении -Axis.
это значит, что каждая из этих точек — контакт. точка одной площадки считается контактом, если она проецируется на другую площадку в направлении -axis.

#427
(Правка: 17:36) 17:21, 12 окт. 2018

Suslik
> это значит, что каждая из этих точек — контакт. точка одной площадки считается
> контактом, если она проецируется на другую площадку в направлении -axis.
Стоп.
То есть надо проверить проекцию не только со второй на первую в -axis, но и с первой на вторую в том же направлении?

#428
(Правка: 17:47) 17:44, 12 окт. 2018

Возникает вот такая ситуация. Рисунок лучше объясняет.

Проскок проекции | Помогите написать физический движок :)
#429
18:14, 12 окт. 2018

vindast
> То есть надо проверить проекцию не только со второй на первую в -axis, но и с
> первой на вторую в том же направлении?
ясное дело

#430
(Правка: 1:17) 0:31, 13 окт. 2018

Suslik
> ясное дело
А что делать если точка прошла тест и тут и там?

Я попробовал два варианта:
1) независимо проводить тест для первого и второго случая, но тогда может получится "вдвое" больший контакт, и солвер разпихнет тела так сильно, что будет взрыв.
2) проверить сначала первый случай, иначе второй. Тоже система иногда взрывается.


Наверное есть баг с проекциями.

#431
(Правка: 3:26) 2:43, 13 окт. 2018

Теперь тест проходят точки которые явно не являются контактом.

4 фазу я делаю не правильно. И не понимаю почему.

Как нужно проецировать из плоскости, в который был 2д клип на плоскости первого и второго тела, как обычно? Вдоль нормали плоскостей? Или вдоль вектора проникновения?

upd.
Понял.

#432
4:17, 13 окт. 2018

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


Кодек другой поставил у видео. Так лучше?

#433
(Правка: 4:44) 4:27, 13 окт. 2018

upd.
Поигрался с eps, он стал 0.05.
Получилось так:


На первый взгляд, этим можно удовлетворится.
Как Вам?

Забегу вперед, на счет сплайнов.
Как с ними искать коллизии?

Я только такое придумал. Взять для сегмента дороги четыре сплайна, внешний, внутренний, и их копии поднятые вверх на некоторую высоту (стенки типа).

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

1 | Помогите написать физический движок :)

Наверняка есть что-то умнее.

#434
4:54, 13 окт. 2018

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

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

Страницы: 128 29 30 3137 Следующая »
ПрограммированиеФорумФизика