Делаю демо с автомобилем и корректной физикой #2

Демонстрация работы подвески

Пока искал параметры подвески, лазил по всяким сайтам и находил посты людей, которые реально что-то меняли в подвеске жигулей, респект им. У меня один только процесс поиска "а как оно выглядит и какая жёсткость и длина той или иной пружины" занял кучу времени.Задняя подвеска более-менее соответствует реальности и каким-то найденным чертежам, переднюю делал больше "на глазок" по каким-то фотографиям и разрозненным числам. Я предполагаю, что у амортизаторов сопротивление линейно зависит от скорости перемещения. Возможно, это не так и там квадратичная зависимость, но нормальных данных я не нашёл и решил взять линейную.

Забавный факт - у жигулей жёсткость амортизатора на сжатие во много раз меньше, чем на отбой. Из-за этого получается, что при перекладке с одной стороны на другую получается движение в две фазы - сначала быстро сжимается один амортизатор, потом более медленно выпрямляется другой. Это прям глазами видно при поворотах влево-вправо.

Добавил коробку передач, двигатель и сцепление. В коробке передач долго думал, является ли нейтраль передачей или её отсутствием, всё-таки решил что это - полноценная передача :)
Что интересно, в жигулях между разными моделями переиспользовали одни и те же коробки, но местами ещё игрались с передаточным числом в дифференциале (редукторе). В копейке было 4.3, в некоторых моделях число немножко отличалось и с той же самой коробкой получались чуть другие числа.
Подробнее можно глянуть тут:

Для двигателя нашёл какие-то графики крутящего момента (пробую повторить двигатель от ВАЗ-2103, он помощнее), но на них нет крутящего момента "торможения двигателем", когда педаль газа отпущена. Сначала хотел взять их совсем из головы, потом вспомнил, что в automation: car tycoon я пробовал делать вазовские двигатели и подгонять их параметры к реальным, открыл игру и взял момент торможения двигателем оттуда. Так что двигатель у меня задаётся двумя кривыми крутящего момента - для полностью открытого дросселя и для закрытого. Вообще говоря, для промежуточных положений дросселя нельзя просто так взять и линейно интерполировать между этими значениями, потому что на низких оборотах двигателя воздуха потребляется мало и даже с вполовину открытым дросселем крутящий момент будет близок к максимальному. Но двигатель я буду позже доделывать. Сейчас достаточно того, что параметры близки к реальным. Единственная вольность - красная зона тахометра начинается с 5.5 тысяч оборотов в минуту, а я разрешил двигателю крутиться до 7.5 и крутящий момент там всё ещё есть. Потому что там карбюратор и отсечки нет. На последней (четвёртой) передаче на 5.5к оборотов скорость 145 км/ч, и это выглядит правдоподобно.

У сцепления есть промежуточный режим, когда оно проскальзывает, но джойстика или руля у меня сейчас нет, а на клавиатуре только вкл/выкл, и поэтому проскальзывание случается только про бросании сцепления.

Ещё я нашёл жёсткость кузова на кручение и якобы она около 7500 Н*м / градус. Я вместо монолитного кузова сделал кузов из двух частей и связал их пружинками. Упрощённо - два параллелепипеда, прижатых друг другу и с пружинками нулевой начальной длины по углам. Собрал машинку, полюбовался на результат и понял, что она что-то сильно гнётся. Сначала думал, что где-то ошибся, пересчитал руками, потом осознал что так и есть. И если устроить настоящему автомобилю диагональное вывешивание - он действительно деформируется на заметные расстояния порядка нескольких миллиметров и скручивается на угол порядка одного градуса. Возможно, что я ошибаюсь и жёсткость на кручение вокруг других осей у автомобильного кузова сильно выше - напишите если знаете. А то у меня центральная часть авто заметно чуть провисает вниз.

Добавил передний стабилизатор. Насколько сильно он влияет на жёсткость подвески не нашёл, подогнал какие-то параметры, чтобы он при кренах на фоне пружин подвески был заметен, но влиян не слишком сильно.

А ещё я сделал тахометр и кайфанул. Казалось бы, просто кружочек с числами и стрелочкой, но очень помогает понять, что же происходит с машиной. Она как будто более реальной стала.

Пока искал разную инфу, наткнулся на интересную статью про жигули в assetto corsa:

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

Глаза разбегаются от того, сколько всего ещё можно доделать - силы трения в коробке передач и дифференциале, сопротивление воздуха и т.п. Но я думаю, что сейчас подвеска и двигатель более-менее адекватно работают, а вот модель шин - нет. Дальше займусь ей, сейчас колёса умеют только пересекаться с плоскостью y=0 и иные препятствия им неведомы. Но в целом очень приятно смотреть, как паззл из разрозненных табличек и формул начинает складываться в модель автомобиля)

1010
22
11
7 комментариев

Сжатие амортизатора не играет роли по сути, главный параметр это отбой, скорость с которой он возвращает неподпружинниную массу на место. Сопротивление амортизатора зависит от типа масло или газ или вместе. Я бы отталкивался от гидравлики, сжатие и расширение масла. Нужно знать только объем и вязкость.
Кузов легкового автомобиля можно считать что не крутится, он всё таки достаточно монолитный, кручение хорошо работает для рамных автомобилей. Там скручивает раму, а крепления кузова к раме сделанные через резинки достаточно серьёзно это компенсируют. Тут просто дело в том, что например стоковую классику просто не получится загнать в такие условия чтоб кузов сильно скрутило ну и другое дело если машина подготовлена для офроуда.
Передний стабилизатор убирает поперечные крены, не давая одной стороне уходить сильно выше или ниже относительно другой. Что особенно заметно в поворотах на высокой скорости.
Модель шин хорошо реализована в LFS, там пятно касания делится на 9 секторов и каждый отдельно просчитывается.

4
Автор

Допустим, что я знаю объём и вязкость масла. Как найти силу трения в амортизаторе, если он сжимается с со скоростью v?
Я предположил, что там линейная зависимость F = k*v. Сейчас коэффициент k я посчитал из данных о том, что жёсткость на отбой 1060 Ньютонов при скорости 0.31 м/с. На сжатие другой коэффициент - сила 283 Н.
Если формула с какая-то другая и нелинейная (например, квадратичная F = k v^2), то мои рассуждения будут неправильными и поведение заметно другое.

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

Про модель шин в LFS спасибо, попробуй найти описание как она сделана.

Это в GameMaker?

Автор

libgdx
На графику не смотрю, занимаюсь только физикой

1

Нихуево.
Но зачем так заморачиваться?