Тёмная тема
Жесткие ограничения по статье Suslik'а сделал, рейкаст машинку с исползьзованием сил тоже сделал. Хочется теперь попробовать сделать подвеску машины с помощью мягких ограничений.
В инетах есть статья Erin Catto о soft constraint и даже перевод её на русский https://gamedev.ru/code/articles/?id=5541, но больше на математическом, чем на программистском, так что многое не понял.
Нашел код от Dirk Gregorius как рассчитать коэффициенты для мягких ограничений:
inline void rnBuildSoftConstraintCoefficients( float& Bias, float& Epsilon, float ConstraintError, float Mass, float Frequency, float DampingRatio, float Timestep ) { float Omega = RN_2PI * Frequency; float Ks = Mass * Omega * Omega; float Kd = 2.0f * Mass * DampingRatio * Omega; Epsilon = 1.0f / ( Ks * Timestep + Kd ) / Timestep; // Epsilon = gamma/h Bias = Epsilon * Ks * Timestep * ConstraintError; // Bias = beta/h * C }
Задается частота, например 10, и коэффициент демпфера, например 1 и по ним высчитываются коэффициенты, а вот как их применить к Suslik'овской
lambda = –a / b
?
И сразу уточнить - a - это проекция относительной скорости на нормаль, а b - это эффективная масса из статьи Catto?