В Cannon.js физика колес реализуется через систему RaycastVehicle или напрямую через WheelInfo. Управление поведением колес требует понимания таких параметров, как frictionSlip, rollingFriction, sideFriction и других, которые определяют сцепление с поверхностью и устойчивость транспортного средства.
frictionSlip — ключевой параметр сцепления колеса с
поверхностью. Он задаёт максимальное отношение силы трения к
нормальной силе, при котором колесо ещё не начинает
проскальзывать.
frictionSlip делают колёса «липкими» к
поверхности, предотвращая скольжение на поворотах.Пример инициализации:
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 моделирует сопротивление качению колеса
по поверхности. Этот параметр особенно важен для тяжёлых
транспортных средств и уменьшения скорости при отсутствии
активного торможения.
Пример использования:
wheelInfo.rollInfluence = 0.1; // коэффициент влияния на прокатывание
Для более точного моделирования скольжения можно использовать
настраиваемые фрикционные кривые через
WheelInfo.forwardFriction и
WheelInfo.sideFriction.
forwardFriction определяет трение при движении вперёд и
торможении.sideFriction отвечает за боковое сопротивление,
критическое при поворотах.Пример настройки:
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 будут скользить меньше.Все параметры трения в Cannon.js работают совместно:
frictionSlip задаёт предел скольжения.forwardFriction и sideFriction
контролируют динамику внутри этого предела.rollingFriction влияет на замедление и энергопотери при
прокатывании.Правильная настройка этих параметров обеспечивает реалистичное и предсказуемое поведение автомобиля в физическом симуляторе.