коррекция проникновения динамики твердого тела

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

Представьте неподвижную чашу (полушарие с центром в точке С) и частицу на краю чаши. Частица скатывается по поверхности внутрь чаши. И на каком-то временном шаге должна быть точка контакта A, и решатель LCP выдаст результирующий импульс, делающий скорость частицы перпендикулярной вектору CA. Но после обновления одного временного шага частица немного перемещается по этой скорости и фактически выходит из чаши, и еще через несколько временных шагов все становится хуже. Когда я использовал куб вместо частицы, куб мог проникнуть в чашу и погрузиться в нее.

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


Редактировать:

Проблема не в том, что чаша слишком тонкая, а в том, что временной шаг слишком велик. Причина в том, что интеграл Эйлера дает многоугольник вместо круга. И мы не можем просто изменить положение этих двух объектов, потому что, если с другой стороны есть третий объект, у объектов 2 и 3 может быть новое проникновение. Я думаю, что одним из способов является добавление некоторой силы упругости в зависимости от глубины проникновения, но это недостаточно аккуратно.

Спасибо, это хорошая идея, чтобы просмотреть исходный код Bullet, работая над ним.


person quanke0801    schedule 15.01.2017    source источник
comment
вы можете проверить, как это решается в пакетах молекулярной динамики, например. ЯНТАРЬ или ГРОМАКС.   -  person Andrey    schedule 15.01.2017
comment
Я хочу дать вам +1 только за название: проникновение в динамику твердого тела.   -  person o_weisman    schedule 15.01.2017
comment
Уменьшает ли уменьшение временного шага погружение?   -  person Zouch    schedule 16.01.2017
comment
Может быть, вы также могли бы взглянуть на исходный код пули для этого, я думаю, что я никогда не тонул с ним. github.com/bulletphysics/bullet3/blob/master/ источник/BulletDynamics/   -  person Zouch    schedule 16.01.2017
comment
Достаточно ли тонка чаша, чтобы частица могла проникнуть сквозь нее через за один шаг? И можете ли вы уточнить, как перемещение объекта по нормали к поверхности в точке контакта... может привести к новым проникновениям?   -  person Beta    schedule 16.01.2017
comment
Вы говорите, что не можете просто изменить положение двух объектов из-за потенциального третьего объекта сбоку. Вы читали stackoverflow .com/questions/13046033/?   -  person pingul    schedule 19.01.2017


Ответы (1)


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

Пример:

   o --->   |  

            |        o      penetrated to here

            | %5 %50 %90

 %90 %50 %5 |

 o          |

вероятности слева и справа от него одинаковы (около 80%), поэтому сейчас он неподвижен, поэтому это неупругое столкновение.

теперь давайте предположим, что есть вторая частица

  o ---> o  |

         o  |       o      penetrated here

     -100%  | %5 %50 %90

 %90 %0 %-45|

  o      o  | 

поэтому частица отскочила от другой частицы, которая также отскочила от стенки, но передала свой импульс первой частице. Тогда вероятность в левую сторону больше, поэтому его конечная скорость будет «левой». Сделайте это последовательно для всех проникших частиц (которых должно быть только несколько?)

Его добавление N частиц N * M вероятностей вычитается из всех других карт вероятностей частиц, что составляет N * N * M операций, где M - это K * L * M кубического пространства размером K на L на M.

person huseyin tugrul buyukisik    schedule 08.02.2017