ПрограммированиеФорумФизика

Пишем симулятор гонок (комментарии) (4 стр)

Страницы: 13 4 5 616 Следующая »
#45
14:13, 20 июля 2010

Alexander K
почему не по настоящему?
там имхо смысл не в том, что бы эмитировать реальный наклон машины, в том или ином повороте,
а защет гравитации сэмитировать давление на человека в ту или иную сторону, поэтому монитор, жеско закреплен на платформе,
и допустим когда ты газуешь тебя в настоящей машине должно вдавливать в кресло,
а в этой фигне для создания подобного эффекта кресло наклоняется назад. (состороны кажется, что машина встала на дыбы, но это не так)
конечно реальных сил в таком симуляторе не добиться, но хотя бы что-то.
А ты как видешь подобную хрень?

#46
14:40, 20 июля 2010

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

#47
15:41, 20 июля 2010

Ну смотря, что обсуждаем LFS, или данный девайс

#48
0:09, 21 июля 2010

Alexander K
> Сделаю ролик!

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

#49
3:41, 25 июля 2010

Ну как там с моделированием увода шин? Ну ооооочень интересно, а нету ( Уже новая статья вышла, но тема то не та что интерисует. )

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

#50
10:49, 25 июля 2010

fzr125
Напишу, обещал же. Руки не доходят просто.

#51
11:17, 25 июля 2010

[добавка] За качество не ругать, видео старое (сейчас нет возможности скомпилировать проект). На 1:33 хорошо видно "мягкость" колеса.

[ещё добавка] Обновил статью, про симуляцию мягких шин. Ну и видео туда запихал.

#52
12:01, 25 июля 2010

Выглядит очень даже, конечно, хочется самому попробовать поуправлять) но чисто визуально ведёт себя достаточно натурально

#53
12:09, 25 июля 2010

Немного истории: этот проект был начат в 2007 году, заброшен был в начале 2008 из-за отсутствия моделей, текстур, арта и прочего. Потому что был только я - программист, найти кого-то ещё я не смог. Тем не менее, эту версию тестировало человек 5-6, все настоящие гонщики из нашего города и все они были на тот момент знакомы с LiveForSpeed - в принципе их оценки были высоки.

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

Так что довольствуйтесь чем есть :D

#54
12:48, 25 июля 2010

Alexander K
У девятки ход подвески очень большой, что делает её практически незаносимой машиной (в условиях асфальта), зато вместо этого перевернется она запросто.

#55
13:06, 25 июля 2010

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

dRPM = Torque[RPM] * Throttle / Inertia - pow(1.0f - torq, 2) * BackTorque 
// момент с учётом положения педили газа
RPM += dRPM * (1.0f - Clutch);

Если Clutch = 1, то RPM в этой части код не меняется, если ноль, то меняется без вопросов.
Мне такой подход не нравится.
Когда я поделировал сцепление (или гидротрансформатор коробки-автомата), я заводил две переменные - обороты вала, входящего в блок сцепления (обороты мотора, короче) и обороты вала, выходящего из блока - то есть обороты, которые идут в коробку. То есть есть RMP и cRPM. Сила трения, которая есть в спецлении и коэффициент которой зависит от положения педали сцепления, стремится "приблизить" друг к другу RMP и cRPM. То есть:

SMD = sqr(Transmission[TI]) * Inertia; 
// у меня передаточные числа имеют обратный смысл, 
// то есть чем больше - тем выше передача, для нейтралки
// естественным образом будет ноль.
cRPM += (RMP - cRMP) * Clutch / (SMD + Clutch); 
// чтобы реакция оборотов выходного вала зависела от передачи.
// На нейтралке реакция абсолютна, коэффициент будет равен
// единице, на других передачах зависимость будет
// пропорциональна Clutch и обратно пропорциональна SMD,
// почему так переменную назвал - не помню.
// Возможно, что коэффициент тут Clutch / sqrt(sqr(SMD)+sqr(Clutch));
// Вообще, Clutch в знаменатель добавлен именно для корректной
// обработки нейтральной передачи
RMP += Clutch * (cRMP - RPM); 
// заставляем мотор "приблизиться" по оборотам к оборотам выходного вала

Тут видно, что для Clutch = 1 мы будем иметь ускорение, обратно пропорциональное текущей передаче (с поправкой на то, что но сверхнизкой передаче мы не может ускориться быстрее, чем ускоряются обороты мотора - вот и ещё один смысл корректировки знаменателя), для Clutch = 0 мотору и колёсам пофиг друг на друга.
Для коробки-автомата Clutch выбирается в зависимости от оборотов мотора. Причём он у меня ещё так подгоняется, чтобы срабатывал эффект увеличения крутящего момента в 2.5-3 раза в гидротрансформаторе, но чтобы итоговый КПД не превысил 85%:

Clutch *= 2.5 * Abs(RPM) / (2 * Abs(cRPM) + Abs(RPM)); 
// или тут квадратный корень должен быть, у меня здесь так.

(если умножать на RPM/cRPM, то получим идеальный трансформатор, кстати).

#56
13:46, 25 июля 2010

TarasB
Что-то у меня начинают закрадываться сомнения что люди не в курсе как трение работает.

Оказываемое давление, в данном случае на сцепление, которое собственно и задается нажатием педали (именно оно, а не коэффициэнт), приводит в соприкосновение диски.
Существует два коэффициэета трения - трение покоя, и трение скольжения.
Логика проста, мы умножаем нормальную силу (в данном случае силу давления сцепления) на коэффициент трения покоя, и сравниваем полученное с продольной силой (т.е. силой пытающейся сдвинуть два тела относительно друг друга) которая в данном случае будет высчитываться из сопротивления колес и силы движка. Если она оказалась меньше - то сцепление 100%, т.е. вращение вала сцепления и мотора будут равны. Если она превысила, то мы обращаемся к силе трения скольжения, так же умножая её на силу давления сцепления, и получаем ту силу которая будет пытаться синхронизировать вращение дисков.
В случае с резиной колес эффект скольжения возникает за счет отрыва частичек резины которые превращаются в маленькие шарики, грубо говоря в смазку, по которой машина скользит, а потом зависимость трения скольжения от скорости нелинейная. В случае же со сцеплением мы имеем дело с металлом, который этого недостатка лишен, а соответственно трение будет постоянно вне зависимости от разницы в скорости вращения дисков.

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

#57
13:55, 25 июля 2010

Centuri0n

Возможно, для сцепления формулы придётся подправить. Я больше хотел АКПП смоделировать для автобуса с гидромеханикой.
Но общая суть такова - сцепление - это не поправочный член к dRMP, а некая сила, которая стремится сблизить RPM и cRPM, причём коэффициенты сближения относятся, как sqr(Transmission[TI]) и Inertia.

#58
14:39, 25 июля 2010

TarasB
Коробка автомат вещь сложная и так навскидку сказать не могу как там считать.
Но все же гидромеханика<>АКПП.
Силы которые увеличивают вращение диска сцепления и тормозят вращение диска двигателя должны быть одинаковы.

#59
14:51, 25 июля 2010

Centuri0n
> Но все же гидромеханика<>АКПП.

Почти всегда =. Понятно, что с какого-то момента гидротранформатор запирается, тогда расчёт идёт так, как если бы Clutch = 1.

Centuri0n
> Силы которые увеличивают вращение диска сцепления и тормозят вращение диска
> двигателя должны быть одинаковы.

А у меня они одинаковы как раз.

Страницы: 13 4 5 616 Следующая »
ПрограммированиеФорумФизика