Параметры подвески: stiffness, damping, compression

Библиотека Ammo.js предоставляет мощный инструментарий для работы с физикой тел в браузере на основе Bullet Physics. Одним из ключевых элементов динамики транспортных средств является система подвески, которая напрямую влияет на устойчивость, управляемость и реализм движения. В Ammo.js параметры подвески настраиваются через stiffness, damping и compression.


Stiffness (жесткость)

Stiffness определяет сопротивление пружины подвески сжатию и растяжению. В терминах физики это коэффициент упругости (k), который влияет на силу, возвращающую колесо к исходной позиции при воздействии внешних сил:

[ F = -k x]

где (x) — смещение колеса относительно нейтрального положения.

  • Высокое значение stiffness делает подвеску «жесткой»: колеса меньше проседают на неровностях, но сильнее передают удары на кузов.
  • Низкое значение stiffness создаёт мягкую подвеску, которая амортизирует удары, но может привести к сильным кренам и раскачке кузова.

В Ammo.js stiffness задаётся методом setSuspensionStiffness для объекта колеса автомобиля, создаваемого через btRaycastVehicle:

vehicle.getWheelInfo(i).set_m_suspensionStiffness(20.0);

Damping (демпфирование)

Damping отвечает за сопротивление колебаниям подвески. Этот параметр регулирует скорость, с которой пружина возвращается в исходное состояние после сжатия или растяжения. В Ammo.js демпфирование делится на два типа:

  1. Damping Relaxation (m_suspensionDamping) — тормозит возврат подвески после сжатия.
  2. Damping Compression (m_suspensionCompression) — ограничивает скорость сжатия подвески под нагрузкой.

Физический смысл: демпфер превращает часть кинетической энергии колебаний в тепло, предотвращая сильное «подпрыгивание» кузова. Без демпфирования система становится нестабильной и колебания могут бесконечно нарастать.

Пример задания демпфирования в Ammo.js:

let wheel = vehicle.getWheelInfo(i);
wheel.set_m_suspensionDamping(0.5);    // Демпфирование расслабления
wheel.set_m_suspensionCompression(0.3); // Демпфирование сжатия

Рекомендации по подбору:

  • Мягкая подвеска: low stiffness, low damping.
  • Спортивная подвеска: high stiffness, moderate damping.
  • Грузовые автомобили: moderate stiffness, high damping для устойчивости.

Compression (сжатие)

Compression в Ammo.js — это коэффициент, определяющий, как быстро подвеска реагирует на нагрузку при сжатии. Чем выше значение, тем быстрее пружина «поглощает» удар. В Bullet Physics compression напрямую влияет на силу демпфирования в момент сжатия подвески.

  • Высокое значение compression делает подвеску отзывчивой: колеса быстро реагируют на неровности, но кузов получает сильные ускорения.
  • Низкое значение compression сглаживает резкие удары, но может вызвать медленную реакцию подвески на ямы и кочки.

В Ammo.js compression настраивается через:

wheel.set_m_suspensionCompression(0.4);

Важно понимать взаимодействие stiffness, damping и compression:

  • Stiffness задаёт «силу» пружины.
  • Damping ограничивает колебания.
  • Compression контролирует скорость реакции на сжатие.

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


Практический пример настройки

Создание колеса с индивидуальными параметрами подвески в Ammo.js:

let wheelInfo = vehicle.addWheel(
    new Ammo.btVector3(x, y, z), // позиция колеса
    new Ammo.btVector3(0, -1, 0), // направление вниз
    new Ammo.btVector3(-1, 0, 0), // ось вращения
    suspensionRestLength,
    wheelRadius,
    tuning,
    isFrontWheel
);

wheelInfo.set_m_suspensionStiffness(25.0);
wheelInfo.set_m_suspensionDamping(0.6);
wheelInfo.set_m_suspensionCompression(0.4);

Эта конфигурация создаёт умеренно жёсткую подвеску с плавным демпфированием, подходящую для симуляции легковых автомобилей.


Взаимосвязь с другими параметрами

  • Suspension Rest Length — длина подвески в состоянии покоя. Длина влияет на амплитуду работы пружины.
  • Wheel Friction — трение колеса о поверхность, которое в сочетании с подвеской определяет сцепление.
  • Roll Influence — коэффициент крена кузова, зависящий от жёсткости и демпфирования.

Оптимизация подвески требует одновременной настройки всех этих параметров. Игнорирование одного из них часто приводит к нереалистичной физике.


Ammo.js позволяет детально управлять динамикой подвески через stiffness, damping и compression, обеспечивая гибкую и точную симуляцию поведения транспортных средств. Правильное понимание физического смысла этих параметров и их взаимного влияния критично для создания реалистичных симуляций.