2D движки физики мягких тел?

9

Привет, поэтому я недавно изучил графическую библиотеку SFML и хотел бы использовать или создать 2D физическую систему нежестких тел для использования с ней. У меня три вопроса:

Определение твердого тела в Box2d

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

И это именно то, чего я не хочу, так как я хотел бы делать упругие, деформируемые, ломкие и повторно соединяемые тела. 1. Существуют ли какие-нибудь простые физические движки 2D, но с такими характеристиками? желательно бесплатный или с открытым исходным кодом?

2. Если нет, могу ли я использовать box2d и отработать его, чтобы создать его, даже если он основан на твердых телах?

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

Спасибо!

Грифон
источник
1
Был этот движок под названием JelloPhysics (C #), но сайт, похоже, не работает. Здесь есть видео: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Ответы:

6

Вы можете использовать системы твердого тела для создания мягкого тела и динамики жидкости. Физическая причина этого? Ну, по сути, атомы - это маленькие твердые тела. Конечно, это не совсем так, но для простоты вы можете рассматривать их как таковые. И мягкие тела, очевидно, сделаны из атомов.

Итак, как вы создаете «мягкие тела», используя движок с жестким корпусом, такой как Box2D?

Основная техника состоит в том, чтобы связать точки в вашем теле, используя суставы. Например, если вы соединяете концы списка строк вместе, используя расстояния между соединениями (то есть расстояние между двумя соединениями должно быть постоянным), оно будет примерно вести себя как кусок ткани.

Но это только грубое описание. Ewjordan, один из разработчиков Java-порта Box2D, проделал большую «элементарную полевую работу» с Box2D. Вот хорошая отправная точка: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978

TravisG
источник
Сочетание пружин растяжения / сжатия необходимо для поддержания «формы» мягкого тела, а также для расчета объема, чтобы сохранить его целостность.
Джонатан Коннелл
Да, но все это на самом деле делается через соединения, если мы говорим о Box2D. Конечно, ему придется вручную изменить их поведение, но именно здесь он должен начать. Например, для эффектов постоянного объема в Gish-подобных каплях JBox2D имеет ConstantVolumeJoint.
TravisG
Да, я не так хорошо знаком с Box2D, я просто знаю, как некоторые коллеги использовали PhysX для имитации пузыря ^^
Джонатан Коннелл
1

Термин, который вы ищете, это физика мягкого тела.

Википедия есть хороший список. Они все 3D AFAICS, но должны быть хорошими.

Также проверьте этот ТАК вопрос.

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

Коммунистическая утка
источник
1

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

В следующем сообщении в блоге представлена ​​реализация деформируемого шарика с движком cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html

sdabet
источник
кредиты на отладочный розыгрыш cocos2d ;-)
sdabet