После долгой работы над системой связанных частиц добрался до проблемы супер-эластичности. Вот демки с попыткой устранить данный глюк и без:
http://www.gamedev.ru/download/?id=4263
Документации по этому странному явлению очень мало, на форумах никто ничего не знает, поэтому пишу сюда.
Кто как решал проблему? Есть идеи?
а опиши ка поподробнее в чем заключается проблемя - я с такой не сталкивался пока
Проблема вроде и простая, но побороть ее не удается. Например, есть такая система:
*
|
*
Две частицы, связанные пружиной. Система падает и при ударе о землю или другую частицу необходимо изменить позицию нижней частицы. При изменении позиции изменяется длина пружины. После обновления пружины верхняя частица получает паразитное ускорение. Таким образом происходит цепная реакция и вся система получает ускорение.
Проблема отлично видна в демке:
Если запустить gmorph_se и толкнуть коробки, то при ударе они прыгают как попрыгунчик.
В gmorph_se_hack прыгают тоже, но не так сильно
Решить можно несколькими способами:
-если изменение длины пружины больше некоторого значения, уменьшить скорость частиц (плохо работает)
-для каждой частицы хранить вектор - расстояние, на которое переместилась частица для разрешения контакта, при обновлении пружин добавлять это смещение к ближним частицам (в демке gmorph_se_hack так сделано)
проблема подхода физики на ограниченных частицах
если её решать то тут придется обрабатывать как частный случай, я говорил
тут нужно знать какой метод интегрирования ты юзаешь да и вообще как ты организовал свой двигл потому как для интегрирования верлета эту проблему нада решать совершенно особенным способом чем другими методами не хакающими скорость
Интегратор Верлета, пружины на 100% восстанавливают позицию при изменении длины, считаются два раза. По идее пружины надо считать не отдельно, а как единую систему.
Совершенно особенный способ - какой? Если есть практические идеи, предлагайте. Неужели никому не интересно?
Тема в архиве.