Параметры фрикциона и сцепления колеса

В Cannon.js физика колес реализуется через систему RaycastVehicle или напрямую через WheelInfo. Управление поведением колес требует понимания таких параметров, как frictionSlip, rollingFriction, sideFriction и других, которые определяют сцепление с поверхностью и устойчивость транспортного средства.


frictionSlip

frictionSlip — ключевой параметр сцепления колеса с поверхностью. Он задаёт максимальное отношение силы трения к нормальной силе, при котором колесо ещё не начинает проскальзывать.

  • Высокие значения frictionSlip делают колёса «липкими» к поверхности, предотвращая скольжение на поворотах.
  • Низкие значения увеличивают вероятность заноса или пробуксовки.
  • Типичное значение для дорожных условий: 0.8–1.5, для гоночных машин — выше 2.0.

Пример инициализации:

var wheel = vehicle.addWheel({
    radius: 0.5,
    directionLocal: new CANNON.Vec3(0, -1, 0),
    axleLocal: new CANNON.Vec3(-1, 0, 0),
    frictionSlip: 1.2
});

rollingFriction

rollingFriction моделирует сопротивление качению колеса по поверхности. Этот параметр особенно важен для тяжёлых транспортных средств и уменьшения скорости при отсутствии активного торможения.

  • Малые значения (0–0.01) подходят для легких и спортивных автомобилей.
  • Высокие значения (0.02–0.05) нужны для грузовиков или внедорожников на мягкой поверхности.
  • В Cannon.js этот параметр используется в физике сил трения на поворотах и при замедлении.

Пример использования:

wheelInfo.rollInfluence = 0.1; // коэффициент влияния на прокатывание

sideFriction и forwardFriction

Для более точного моделирования скольжения можно использовать настраиваемые фрикционные кривые через WheelInfo.forwardFriction и WheelInfo.sideFriction.

  • forwardFriction определяет трение при движении вперёд и торможении.
  • sideFriction отвечает за боковое сопротивление, критическое при поворотах.
  • Обе кривые реализуются через объекты типа FrictionCurve, которые задают максимальную силу трения и скорость проскальзывания.

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

wheel.forwardFriction.stiffness = 5; // жесткость сцепления при ускорении
wheel.forwardFriction.slip = 0.8;   // допустимый скольжение
wheel.sideFriction.stiffness = 4;   // боковое сцепление
wheel.sideFriction.slip = 0.7;
  • stiffness отвечает за жёсткость резины.
  • slip — величина допустимого проскальзывания до начала потери сцепления.

Настройка сцепления с различными поверхностями

Поведение колёс сильно зависит от типа поверхности. Для разных покрытий можно менять frictionSlip и коэффициенты в кривых трения:

Тип поверхности frictionSlip forwardFriction.stiffness sideFriction.stiffness
Асфальт 1.2–1.5 5 4
Гравий 0.8–1.0 3 2.5
Лёд 0.2–0.4 1 0.5
Грязь 0.5–0.8 2–3 2

Эти параметры позволяют моделировать реалистичное поведение колес при ускорении, торможении и боковом скольжении.


Влияние массы и распределения нагрузки

Сцепление колеса также зависит от нагрузки на ось:

  • Чем больше вес на колесе, тем выше нормальная сила, и, соответственно, трение увеличивается.
  • Для симуляции реальных автомобилей важно корректно задавать массу тела и центр тяжести.
  • Колёса с высокой нагрузкой при одинаковых параметрах frictionSlip будут скользить меньше.

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

  1. Начальная настройка: frictionSlip ≈ 1.0–1.2 для базового сцепления.
  2. Повороты и занос: уменьшение sideFriction позволяет моделировать дрифт.
  3. Тяжёлые транспортные средства: увеличивать rollingFriction для плавного замедления.
  4. Разные покрытия: использовать разные кривые трения и frictionSlip для каждой поверхности.
  5. Тестирование и балансировка: визуальное и численное наблюдение за поведением машины позволяет оптимально подобрать параметры.

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

Все параметры трения в Cannon.js работают совместно:

  • frictionSlip задаёт предел скольжения.
  • forwardFriction и sideFriction контролируют динамику внутри этого предела.
  • rollingFriction влияет на замедление и энергопотери при прокатывании.
  • Масса и распределение нагрузки определяют реальные силы на колёсах.

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