Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Помогите написать физический движок :) (11 стр)

Помогите написать физический движок :) (11 стр)

Страницы: 110 11 12 13 14 Следующая »
vindastПостоялецwww25 мая 201817:53#150
Я сейчас подкидываю момент сил трения в зависимости от разности скорости вращения.

Правка: 25 мая 2018 19:22

SuslikМодераторwww25 мая 201821:40#151
vindast
я писал только motor joint'ы для шаговых двигателей, электрических. но если бы писал для ДВС, то сделал бы так: хранил бы внутреннее состояние двигателя как угловую скорость вращения коленвала. если сцепление выжато, то джойнтом передачи соединил бы угловую скорость дифференциала колёс с этим коленвалом. то есть джойнт на три тела, одно из которых существует только внутри джойнта. все правила — те же самые.

рекомендую начать просто с реализации дифференциала.

vindastПостоялецwww26 мая 20180:16#152
Suslik, Вы переоценили мои способности.
Там джоинтов внутри машины нет никаких.
Я сейчас считаю трение на сцеплении как (скорость вала двигателя - скорость вращения со стороны коробки) * базовую силу * степень сжатия сцепления.
Но при таком подходе возникает проблема как с тормозами, когда скорости почти сравнялись сила териня начинает быть обращенной то туда то сюда.
vindastПостоялецwww30 мая 20186:55#153
Начал делать collision detection, но что-то сложно.
Решил начать с obb vs obb, со сферами и неориентированными боксами понятно.
В общем саму коллизию нахожу нормально (вроде как), проблема начинается тогда, когда я пытаюсь найти точки контакта.
Пытался читать Ваши туториалы по support mapping и collision detection, но там полетели картинки, и не очень все от того понятно.
SuslikМодераторwww30 мая 20187:32#154
vindast
> В общем саму коллизию нахожу нормально (вроде как), проблема начинается тогда,
> когда я пытаюсь найти точки контакта.
это ж самое интересное. обычно этот код просто воруют откуда-то и не парятся, как он работает.

vindast
> Пытался читать Ваши туториалы по support mapping и collision detection, но там полетели картинки, и не очень все от того понятно.
отстойно. когда я писал статью, imageshack казался железобетонным хостингом, который никогда не сможет упасть.

vindastПостоялецwww30 мая 201816:40#155

Suslik
> отстойно. когда я писал статью, imageshack казался железобетонным хостингом,
> который никогда не сможет упасть.
Почините?)
vindastПостоялецwww30 мая 201816:46#156
Вот до того как принялся делать obb vs obb был уверен в том что этот случай вообще решен точно кем нибудь умным...
vindastПостоялецwww30 мая 201816:49#157
Suslik
> это ж самое интересное. обычно этот код просто воруют откуда-то и не парятся,
> как он работает.
Замутил свой код )
vindastПостоялецwww30 мая 201817:05#158
Думаю скачусь пока что до уровня проверки каждой пары ребро (отрезок) vs четырехугольник (ограниченный участок плоскости) для каждого бокса.
vindastПостоялецwww1 июня 20189:55#159
В общем, сделал я коллизию бокс-бокс ( с нахождением всех точек пересечений боксов).
Но у меня возникла проблема, а куда направлена нормаль контакта? Как только начал думать, так ведь если взять нормаль плоскости (самый простой вариант), то может получится что два джоинта будут тянуть в обратных направлениях. А других вариантов я  не вижу.

vindastПостоялецwww1 июня 20189:58#160
После всех раздумий, я понял что для всех точек по которым у меня тела пересеклись - нормаль должна быть одна.
vindastПостоялецwww1 июня 201810:06#161
Я вот подумал просчитать скорости встречи боксов в каждой точке контакта, приняв ее (нормализированую) за нормаль контакта. Но есть "но", не всегда эти скорости есть, на сколько я могу судить.
vindastПостоялецwww1 июня 201810:08#162
особенно волнует случай с лежанием обьектов друг на друге.
vindastПостоялецwww1 июня 201810:11#163
Вот что сейчас получается.
На видео, за нормаль контакта принят Y-вектор одного из тел, потому они и рассыпаются когда появляется вращения.

SuslikМодераторwww1 июня 201816:22#164
vindast
> Я вот подумал просчитать скорости встречи боксов в каждой точке контакта,
> приняв ее (нормализированую) за нормаль контакта. Но есть "но"
это полная ерунда

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

в общем случае для любых выпуклых геометрий план такой:
- найти ось минимального проникновения (minimal translation distance). эта ось будет нормалью для всех контактов.
- на каждом из тел найти область поверхности, нормали которой находятся в пределах небольшой погрешности от найденной оси.
- волшебным образом найти пересечение этих областей, представив его множеством точек — это и будут точки контактов.

Страницы: 110 11 12 13 14 Следующая »

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

2001—2018 © GameDev.ru — Разработка игр