Не так давно к нам обратился подписчик официальной страницы Go>Race с просьбой рассказать подробнее о реализации физической модели симулятора. Вот его вопрос целиком:
Здравствуйте!
Есть вопрос касательно реализации физики автомобиля. Как у вас реализовано колесо? Используете сам WheelJoint, или написан скрипт, отвечающий за функции колеса и подвески?
Если не сложно помочь мне, то у меня есть проблема по этой теме: я разрабатываю физику автомобиля на том же движке UNIGINE. Использую C#. Машина встает на колеса, подвеска работает, но борюсь с силами трения и передачи силы от двигателя->коробки передач к колесам, машина едет боком вперед и назад, пытаясь повернуть, машина не слушается, и едет постоянно в одном направлении, WheelJoint не использую, решил написать свой скрипт для работы колеса и подвески.
Силы дебажил, проверял, по каким осям координат и когда они применяются, менял местами оси координат. Буду рад, если сможете проконсультировать меня😁
Отвечаем максимально подробно, ведь ответ может пригодитmся не только одному читателю, а всем, кто работает с UNIGINE или же просто интересуется устройством автомобильных симуляторов.
В автосимуляторе Go>Race написаны свои компоненты колеса и подвески, так как WheelJoint работают не всегда корректно.
В колесах прежде всего важен баланс сил и моментов. Мы опробовали много вариантов и, каждый раз сталкивались с «магией» силы трения, что в итоге привело к «волшебной формуле». Но для ее применения все равно нужно правильно расписать баланс сил.
Здравствуйте!
Есть вопрос касательно реализации физики автомобиля. Как у вас реализовано колесо? Используете сам WheelJoint, или написан скрипт, отвечающий за функции колеса и подвески?
Если не сложно помочь мне, то у меня есть проблема по этой теме: я разрабатываю физику автомобиля на том же движке UNIGINE. Использую C#. Машина встает на колеса, подвеска работает, но борюсь с силами трения и передачи силы от двигателя->коробки передач к колесам, машина едет боком вперед и назад, пытаясь повернуть, машина не слушается, и едет постоянно в одном направлении, WheelJoint не использую, решил написать свой скрипт для работы колеса и подвески.
Силы дебажил, проверял, по каким осям координат и когда они применяются, менял местами оси координат. Буду рад, если сможете проконсультировать меня😁
Отвечаем максимально подробно, ведь ответ может пригодитmся не только одному читателю, а всем, кто работает с UNIGINE или же просто интересуется устройством автомобильных симуляторов.
В автосимуляторе Go>Race написаны свои компоненты колеса и подвески, так как WheelJoint работают не всегда корректно.
В колесах прежде всего важен баланс сил и моментов. Мы опробовали много вариантов и, каждый раз сталкивались с «магией» силы трения, что в итоге привело к «волшебной формуле». Но для ее применения все равно нужно правильно расписать баланс сил.
Машина движется за счет того, что в колесах появляется две силы : продольная и боковая (относительно колеса). Эти силы создаёт каждое колесо (даже ведомое), и они прикладываются к автомобилю в местах крепления к подвеске. При этом, автомобиль тоже воздействует (давит) на колеса. За счет этого воздействия ведомые колеса крутятся при движении.
Когда передние колеса поворачиваются, если машина движется, в них возникает сила сопротивления этому движению. Т.е. машина как бы отталкивается от колеса. Часть этой силы направлена по оси автомобиля (за счет этого машина немного тормозит), а часть в бок, что приводит к повороту.
Когда передние колеса поворачиваются, если машина движется, в них возникает сила сопротивления этому движению. Т.е. машина как бы отталкивается от колеса. Часть этой силы направлена по оси автомобиля (за счет этого машина немного тормозит), а часть в бок, что приводит к повороту.
По факту разработчикам необходимо очень аккуратно проверять какие силы в каких системах координат создаются и к каким объектам в каких координатах прикладываются.
Очень часто поведение, которое описано в вопросе, возникает из-за несогласованности систем координат. Сначала мы должны посчитать силы, с которыми машина воздействует на колеса. Затем преобразовать их в систему координат колеса. Рассчитать модель колеса, которая сформирует итоговые силы и моменты. Затем перевести их в систему машины и применить в нужные точки.
Очень часто поведение, которое описано в вопросе, возникает из-за несогласованности систем координат. Сначала мы должны посчитать силы, с которыми машина воздействует на колеса. Затем преобразовать их в систему координат колеса. Рассчитать модель колеса, которая сформирует итоговые силы и моменты. Затем перевести их в систему машины и применить в нужные точки.
Другая причина подобного поведения может заключаться в неправильном расчете сил. Самая большая проблема — сила трения. Точнее не только в ней, а в ее использовании при моделировании и симуляции. Появляется необходимость вводить граничные условия, которые могут сломать все (в случае ошибки в них).
В ходе разработки случалось, что машина начинала от этого уплывать или трястись.
Здесь на помощь и приходит Магическая формула Пасейки. Однако, ее нужно еще научиться правильно использовать. Также очень важно аккуратно проработать модель циркуляции сил и моментов в колесах, трансмиссии и машине в целом. И не забывать о том, что все элементы связаны.
В ходе разработки случалось, что машина начинала от этого уплывать или трястись.
Здесь на помощь и приходит Магическая формула Пасейки. Однако, ее нужно еще научиться правильно использовать. Также очень важно аккуратно проработать модель циркуляции сил и моментов в колесах, трансмиссии и машине в целом. И не забывать о том, что все элементы связаны.