Вторник, 19 Ноября 2024, 06:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Bullet Physics: проблема с импульсами быстрых тел
puksus4Дата: Воскресенье, 19 Апреля 2020, 19:06 | Сообщение # 1
частый гость
Сейчас нет на сайте
Делаю в общем игру в которой объекты должны попиксельно уничтожаться.
Примерно так как в гифке из этого сообщения
Собсно делаю римейк той игры котору делал на конкурс в 2016 году, только лучше во всех отношениях.

Для детектинга столкновений между объектами заюзал bullet physics.
Соответственно когда столкновение детектится, я повреждаю пиксельную оболочку тела в месте удара.

Соответственно тест - тела движутся навстречу друг другу и сталкиваются (белым обрисована упрощённая конвексная оболочка корабля собсно для столкновений)
screenshot 1

Для оценки масштаба разрушений беру импульс столкновения
screenshot 2

Когда тела движутся навстречу друг другу со скоростью 800 пикселей в секунду, всё нормально - тела повреждаются и отлетают.
Когда повышаю до 1600 - тела всё ещё разлетаются при столкновениях, но не повреждаются.
А не повреждаются потому что bulletPhysics почемуто выдаёт нулевые импульсы при столкновениях. Тойсть переменная impulse из скрина выше нулевая для всех контакт поинтов.

Это кажется странным, потому что по факту тела столкнулись и разлетелись. Но импульс столкновения почемуто нулевой.
Возможно это важно - единицей измерения в bullet считаю пиксель, соотв-но размер тела в длину около 100 пикселей, а относительная скорость движения тел между собой 1600 пикселей.
Bullet physics работает с частотой 60 кадров в секунду, соответственно с такими скоростями тела за кадр проникнут друг в друга максимум на четверть длины тела (1600 * (1.0 \ 60)) = 25. Тойсть Continious Collision Detection по иее в таком случае не нужен.

Добавлено (19 Апреля 2020, 19:19)
---------------------------------------------
Делать пули и снаряды собираюсь отдельно и находить пересечения между корабликами и пулями рей трейсингом, тойсть для пуль проблема неактуальна
+ Допускаю введение искусственного ограничения максимальной скорости движения\вращения корабликов
Но хотелось бы понимать, в каких случаях возникают подобные глюки. Как зависит от размеров, от формы коллизии, от фреймтайма, ... А то ограничу скорость одним значением - настрою геймплей под него, а потом бац - проблема снова проявилась.
Объекты в игре гарантированно будут размера больше определённого. Тойсть если от тела остался маленький ошмёток - он заменится на частицы, и в физической симуляции участвовать не будет. Тойсть очень маленьких тел в игре не будет.

Добавлено (19 Апреля 2020, 23:02)
---------------------------------------------
А нет, вру, похожу что буллет детектит коллизию, но ничерта не разлетается, объекты просто пролетают сквозь друг друга.
Это заметно если заставить буллет физикс симулировать с частотой кадров 15 а не 60 и соответственно в 4 раза уменьшить скорость объектов. Они тупо пролетают, коллизии при эжтом детектятся. С меньшими скоростями опять же всё хорошо.

Сообщение отредактировал puksus4 - Воскресенье, 19 Апреля 2020, 19:22
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг