Jittering (дрожание)
Jittering (дрожание) — локальная нестабильность некоторой физической системы, заключается в визуальном подрагивании объектов на месте (часто вкупе с разъезжанием).
Вызвано такое дрожание недостаточной точностью солвера; часто решить проблему полностью нельзя. Методики для уменьшения дрожания в системе (использовать их следует не одиночно, а все сразу, варьируя коэффициенты):
- — более «мягкая» система: если ограничений в системе много, и они все - жесткие, то солвер скорее всего не сможет найти решение, которое удовлетворяет сразу всем ограничениям, что повлечет за собой дрожание. С увеличенной допустимой погрешностью на ограничение, солвер сможет найти более устойчивое состояние для системы.
— повышенная точность (количество итераций) солвера: может помочь, в комбинации с другими методами (хотя чаще увеличение итераций помогает решить проблему излишней мягкости соединений).
— порог разрешенного взаимного проникновения тел: на случай, если есть некоторый аналог коррекции положений, и решение системы идет относительно скоростей или более высоких производных. Если корректировать ограничения не сразу же, а после преодоления некоторого порога точности, в пределах этого самого порога создастся в некотором роде устойчивое положение (скорости в нем подгоняются в рамки скоростного ограничения, положения же остаются нетронутыми - нет дрожания).
— более точный алгоритм коррекции положений: часто дрожание является следствием неправильной коррекции положений в солвере; к примеру, происходит изменение импульса тела.
— наличие дэмпинга в системе: некоторый хак, вроде сопротивления окружающей среды поможет уменьшить дрожание тел.
— заморозка/деактивация тел с учетом дрожания: если при деактивации тел брать в рассчет возможное дрожание, то тела которые просто дрожат на месте скоро перестанут обрабатываться солвером, а значит и дрожать.
Форум Bullet'а, некоторые советы по уменьшению дрожания
Что такое Jittering (дрожание)?
#constraint, #dynamics, #физика, #rigid body
12 июня 2009