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

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

Страницы: 112 13 14 1535 Следующая »
#180
14:38, 10 июня 2018

vindast
значит, очевидно, ты неправильно ищешь глубину.


#181
14:38, 10 июня 2018

Логика работы не нарушена, просто солвер не будет выталкивать цилиндр из треугольника.

#182
14:39, 10 июня 2018

Вот если минимальная ось совпадает с нормалью треугольника то глубина проникновения ноль, вот что с этим делать?

#183
(Правка: 14:42) 14:41, 10 июня 2018

vindast
> Вот если минимальная ось совпадает с нормалью треугольника то глубина
> проникновения ноль, вот что с этим делать?
исправлять? я не знаю, откуда у тебя там ноль берётся, его там быть не должно хоть при нулевой проекции, хоть при ненулевой. ещё раз говорю, реши подзадачу из #177, и все вопросы отпадут.

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

#184
14:42, 10 июня 2018

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

float min1, min2, max1, max2;
        triangle.axisProjection(axis[i], min1, max1);
        cylindr.axisProjection(axis[i], min2, max2);


        if (!(max2 >= min1 && max1 >= min2))
        {
          //cout << i << endl;
          collision = false;
          break;
        }
        else
        {

          float a = max(min1, min2);
          float b = min(max1, max2);

          float x = abs(b - a);

          if (x < minProj)
          {
            minProj = x;
            minAxis = axis[i];
          }

        }
#185
14:44, 10 июня 2018

Suslik
> напомню, что здесь под глубиной пересечения понимается не геометрическая длина
> их общей части, а минимальное расстояние, на которое надо отрезки раздвинуть,
> чтобы они перестали пересекаться.
ААААААААААААААА
Все, вот теперь я понял

#186
12:01, 12 июня 2018

Вот что получается.

#187
12:02, 12 июня 2018

Косячек есть когда цилиндр стоит на плоскости.

#188
(Правка: 12:11) 12:10, 12 июня 2018

vindast
> Косячек есть когда цилиндр стоит на плоскости.
я не удивлён. именно из-за этого цилиндры почти никогда не используют.

мне не нравится твоё трение. рекомендую для разминки протестировать солвер на бесконечно большом коэффициенте трения, тела не должны никуда медленно съезжать даже на наклонных плоскостях. потом потестируй при коэффициенте трения, например, 1.0f. сделай наклонную плоскость под углом 44 градуса и ещё под 46. при коэффициенте трения 1, тела должны неограниченно долго держаться на 44 и соскальзывать с 46 градусов наклона.

#189
(Правка: 12:38) 12:25, 12 июня 2018

Suslik
> мне не нравится твоё трение
Трение на цилиндре шляпа, а на боксах (когда они по одиночке) хорошо работает.
Думаю это связано с тем что есть косяк в нахождении коллизий с плоскостью в случае когда он на ней стоит.

Suslik
> > Косячек есть когда цилиндр стоит на плоскости.
> я не удивлён. именно из-за этого цилиндры почти никогда не используют.
Что нибудь можно сделать?

#190
(Правка: 13:57) 13:56, 12 июня 2018

vindast
> Что нибудь можно сделать?
во, нашёл статью, наконец: https://gamedev.ru/code/articles/convex_collisions

#191
14:09, 12 июня 2018

Suslik
> во, нашёл статью
Я ее тоже нашел давно) Там не понятный шаг 2d clipping.

#192
14:12, 12 июня 2018

vindast
> Там не понятный шаг 2d clipping.
просто двумерный алгоритм поиска общей части двух выпуклых многоугольников. пробегаешься по всем рёбрам, ищешь точки пересечения с другими рёбрами и из полученных сегментов ищешь их пересечение.

#193
11:30, 16 июня 2018

в общем как работать с треугольник - бокс разобрался. 

У меня есть объект "земля", который представлен как треугольная сетка.
Собственно я сейчас просто ищу пересечение с каждым этим треугольником по отдельности.
Но возникает проблема когда тело пересекает два треугольника (смежных) оновременно, и в некоторых случаях (на пример когда треугольники в одной плоскости ),
может случить так что оси минимального проникновения противонаправлены.

как работать с тримешами?

Мне не понятно как найти общую для них ось минимального проникновения.

#194
14:29, 16 июня 2018

vindast
> как работать с тримешами?
никак. с тримешами стараются просто не работать, problem solved.

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