Как имитировать автомобильную трансмиссию (в Unity)?

Один из моих проектов по хобби включает автомобили. До сих пор у меня была быстрая и грязная реализация «одного класса» с двигателем + коробка передач + колеса, но я думал, что это уродливо, и я хочу пойти немного более реалистично. К сожалению, я не мог найти много на Google (либо неправильные поисковые запросы, либо действительно ничего не то, что я хочу). Кажется,

Настройка в сцене: четыре колесных коллайдера прикреплены к большому бокс-коллайдеру.

Вещи, которые я хочу в системе:

Отдельные классы для двигателя, сцепления, коробки передач, дифференциала и колес (и все остальное делает материал с крутящим моментом). Throttlecontrol с revlimiter (работает!), Рулевое управление (работает тоже!), Тормоза (еще не сделаны, но также не очень сложны и, скорее всего, будут работать).

  • Первое, что я пробовал:

В основном это вращается вокруг того, как я говорю двигателю, что колеса фактически используют или дают (тормоз двигателя) питание системы. поэтому сначала я создал все классы, каждый со своим собственным кодом updatemethod (не вызываемый напрямую mainluop, а из фиксированной даты контрольного класса). updatemethod двигателя рассчитывает крутящий момент двигателя от дроссельной заслонки, кривую крутящего момента (кривая анимации) и трения двигателя. Затем это используется для ускорения виртуального коленчатого вала, который имеет свою инерцию. Но прежде чем ускорить работу вала, я решил поставить некоторые моменты крутящего момента на крутящий момент двигателя, поэтому, если колеса не могут идти в ногу, двигатель не может ускоряться или даже замедляется. Такой крутящий момент обратной связи добавляется, например, редуктором, который, в свою очередь, также имеет силы обратной связи от дифференциала и колеса. Колеса рассчитывают крутящий момент, необходимый для вращения до скорости вала, выходящего из коробки передач, и затем он передает все обратно в двигатель на несколько обновлений.

Проблема заключалась в том, что обратная связь по крутящему моменту действительно не тормозила торможение двигателем, но привела его к нескольким миллионам оборотов в секунду. Разделение крутящего момента обратной связи на 1000 действительно сработало, но тогда автомобиль вообще не двигался. Таким образом, это номер ошибки 1.

  • Ошибка № 2:

Хорошо, запомни, подумал я, и прибрал все. Это больше не использует несколько updatemethod, но рекурсивное обновление. В основном я вызываю обновление на двигателе, которое, в свою очередь, затем вычисляет, какой крутящий момент он имеет. При этом он сообщает передаче, что он имеет t крутящие моменты в r RPM. Коробка передач изменяет значения в соответствии с текущей передачей, а затем снова вводит значения в дифференциал. Дифференциал СЛЕДУЕТ разделить крутящий момент между его выходами. Для этого я подсчитаю, сколько крутящего момента для выхода (в данном случае колеса) потребуется ускорить до r RPM. Я делаю это для каждого вывода и составляю его список для каждого вывода. Я также сохраняю сумму этих значений. С этим я могу получить значение 0...1 для каждого выхода, который определяет, сколько крутящего момента каждый выход получает в своем updatemethod. Его в основном интеллектуальный дифференциал, который дает выход, который нуждается в большем крутящем моменте, большем крутящем моменте. Думаю, что моделирование реального дифференциала потребует более сложных вещей. Теперь крутящий момент находится на колесах и попадает в свойство MotorTorque колесного колпака. До этого он работает. Если я захлопнувшись, а затем отпусти его, колеса начнут поворачиваться назад. Это, в основном, еще один отзыв, как с первой попытки. Так что также не удается

  • И сбой 3:

Вместо того, чтобы вернуть оставшийся крутящий момент, я попробовал вернуться вместо RPM к двигателю. Поэтому я применяю крутящий момент и возвращаю RPM. Но снова все пытается переместить автомобиль в противоположном направлении, и я хочу, чтобы он ушел.

Вот где я из идей. Я хочу относительно реалистичную трансмиссию, которая является модульной и может работать с двигателем. Купленный актив, скорее всего, не решит мою проблему, и я также хочу понять, как это работает, а не просто использовать его.

Есть ли у кого-нибудь опыт правильной модели трансмиссии?

Если я забыл что-то упомянуть, спросите.

4 голоса | спросил fredlllll 5 Jam1000000amThu, 05 Jan 2017 03:40:05 +030017 2017, 03:40:05

1 ответ


1

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

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

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

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

Для двигателя я бы рекомендовал сделать это немного больше, чем причудливый калькулятор - дать ему ввод, и он выдает значение, определяющее, как быстро вращается приводной вал, и как это вращает редукторы.

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

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

ответил Peter Ferrarotto 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 00:20:11 +0300 2017, 00:20:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132