forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Реализация физики танка с помощью PhysX Wrapper. (http://forum.boolean.name/showthread.php?t=15436)

St_AnGer 06.09.2011 16:52

Реализация физики танка с помощью PhysX Wrapper.
 
Доброго времени суток, Булчане!

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

Пробовал делать с использованием pxWheelAddToBody. Результатом остался совсем не доволен даже после долгих экспериментов с трением и скоростью вращения "катков" танка.
Так же, пробовал сделать настоящие гусеницы (да, знаю, что извращенец, но, блин, почему бы и нет :) ). Работало прекрасно, реалистично, но три танка (у каждого 2 гусеницы по 96 траков) фактически сжирал ресурсы моего ПК (далеко не слабого!!).

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

dsd 06.09.2011 17:13

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 


6 и 7 жестко связаны с корпусом танка. 1-4 прижимают гусеницу к земле, грубо говоря танк стоит на этих колесиках. Длина гусеницы постояна, соответственно переменная это сумма l1-l4 из величины которой можно получить провисание В. Сила возникающая в пружине F=k*x где к модуль упрогости, а икс смещение.

Танк это машина на множестве колес, отличие только в том что на колеса одета ленточка.

St_AnGer 06.09.2011 17:25

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
:) Знаю, благо что ходовую танка могу нарисовать с закрытыми глазами. Это уже пытался реализовать. Танк - далеко не машина на колёсах, хоть и имеет таковые.
При движении вперёд/назад всё хорошо при выборе способа с колёсами. Но при развороте гусеничной техники одна гусеница двигается в одну сторону, а другая - в противоположную. Попытка реализовать это на "колёсном" способе привела к грустным результатам вроде раскачивания/прыжков/переворотов танка. Попытка делать разную скорость вращения катков тоже ни к чему хорошему не привела.

УПД под раскачиванием/прыжками танка подразумевается некорректная работа колёс на неровных поверхностях. Целиковая гусенца ведь тянет корпус танка всей своей частью лежащей на поверхности. А колесо всего лишь поворачивается, из за чего получается что при банальном заезде на вершину горки разные колёса пытаются вести себя по разному (одно висит в воздухе, второе пытается тянуть корпус раскачивая его, третье поддаёт амплитуду этим раскачиваниям и т.д.)

dsd 06.09.2011 17:32

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Так передвигай танк двумя силами от гусениц. Для разворота тормози одну и вуаля возникает момент сил вокруг зед, который и развернет танк. Из суммы смещений пружин можно получить силу трения создаваемую каждой гусеницей...

Я не знаю зачем тут физику чужую юзать быстрей будет свою написать.

сумма сил для трех осей. делим на массу вектор скорости.
Сумма моментов на все три оси => делим на соответсвующий момент инерции имеем вращение основы танка. Причем легко получится учитывать вращение башни, чтобы если ось башни с центром тяжести танка не совпадает, во время выстрела весь танк подрывало :)

dsd 06.09.2011 17:50

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Ну, нет. Смотри у тебя те валики которые прижимают гусеницу возвращают реакцию опоры. От направления движения зависит куда будет направлена сила трения от каждого валика, которая и двигает танк. Реально попрубуй сделать машину на этак 10-12 колесах, которые не поворачиваются, но все ведущие. Поведение должно быть как у танка.

Вот что я имею в виду :


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

St_AnGer 06.09.2011 18:20

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Цитата:

Сообщение от dsd (Сообщение 201466)
Реально попрубуй сделать машину на этак 10-12 колесах, которые не поворачиваются, но все ведущие. Поведение должно быть как у танка.

Пробовал, но во враппере получается то, что я написал.

Большое спасибо за схемы, они меня на мысль натолкнули одну. Если всё получится - выложу саму мысль и код.

Igor 06.09.2011 20:48

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Вложений: 1
Цитата:

под раскачиванием/прыжками танка подразумевается некорректная работа колёс на неровных поверхностях. Целиковая гусенца ведь тянет корпус танка всей своей частью лежащей на поверхности.
По идее не совсем.
Заднее колесо (шестерня) тянет гусеницу. допустим, с силой F.
натяжение провисающей гусеницы сверху Fx.
тогда самый задний каток забирает столько силы, чтобы не проскальзывать. (F1=k*N1).
между вторым и первым катком сила натяжения гусеницы F12=F+Fx-F1.
Между вторым и третьим F23=F+Fx-F1-F2
И так до тех пор пока не станет сила натяжения между траками F(i,i+1)>=Fx (т.е. гусеница не проскальзывает в направлении движения танка, тянет его вперёд с силой Fт=F)
если траки кончатся раньше - тогда гусеница проскальзывает, тянет танк вперёд с силой Fт=(N1+N2+N3 ...)*k

Плечи всех "рычагов" сил трения вдоль направления гусениц для каждого трака одинаковы, вращательный момент M=Fт*R (R - перпендикуляр от центра танка на гусеницу)

Правда, что-то надо делать с силами трения поперёк гусениц (танк занесло боком), которые я никак не учитывал

UPD: Fx вообще не нужна, она сокращается
UPD2: Что-то мне кажется, что сила трения при движении вдоль направления гусеницы и поперёк должна считаться по разному. -гусеница продавливает землю на некоторую глубину, при проскальзывании вдоль она движется по своей колее, а поперёк- должна из-неё вытащиться и утрамбовать землю в другом месте. (смотрим картинку)
UPD3: передний трак должен немного сопротивляться движению - он "укатывает" землю.

dsd 06.09.2011 22:53

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Пестец, вы там чо гонки на танках или ваще ралли делаете чтоли? :-D Ищо надо влажность и различный грунт учитывать. Ну и аэродинамику надо проработать :)

Да, глубина продавливания должна считаться правильно, по всем правилам механики грунтов. И если подъехать к краю обрыва, чтобы он осыпался и танк в овраге.


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

Плечи для каждого катка разные. Момент же вокруг точки вращения считается, однако.

St_AnGer 06.09.2011 23:12

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Люди, люди, люди! Вас куда то очень уж далеко понесло :) я конечно хочу супермегауберреалистичный симулятор танка сделать, но не до такой же степени :)
мне всего лишь интересно было узнать чьи либо идеи по поводу физики движения танка с использованием враппера, а не идеи, как разработать свой собственный физический движок :)
Хотя мысли и очень интересные (по крайней мере мне, как человеку плохо разбирающимуся в векторах и физике).

Igor 07.09.2011 11:42

Ответ: Реализация физики танка с помощью PhysX Wrapper.
 
Цитата:

Так же, пробовал сделать настоящие гусеницы ... Работало прекрасно, реалистично, но три танка (у каждого 2 гусеницы по 96 траков) фактически сжирал ресурсы моего ПК (далеко не слабого!!).
Было бы неплохо посмотреть демку с честным расчётом физики одного танка. такое нигде и не увидишь)


Часовой пояс GMT +4, время: 09:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot