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

Физика "на пальцах" (комментарии) (41 стр)

Страницы: 138 39 40 41 42 43 Следующая »
#600
10:32, 15 авг 2020

samrrr
> мой способ и += должны давать одинаковый результат на таких малых поворотах.
Понял.
Скажи, при прямом столкновении кубов такой разлет нормален? Думаю отсюда начать смотреть, если это неправильно. А то уже которую страницу не могу добиться ответа правильно такое поведение или нет.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Update: а они должны слипнутся намертво. Ну теперь хоть понятно на чем проверять.
Значит после столкновения и решения всех четырех джойнтов все угловые скорости должны быть нулевыми.

#601
11:37, 15 авг 2020

MikeNew
> Значит после столкновения и решения всех четырех джойнтов все угловые скорости
> должны быть нулевыми.
нет, я тебе уже кучу раз говорил, что итеративный солвер не даёт точное решение. и ты даже цитировал это, утверждая, будто понял. каждый раз, когда ты решаешь один джойнт в итеративном солвере, он может нарушать какой-то другой, поэтому угловая скорость обнулится только в пределе с бесконечным числом итераций.

#602
12:39, 15 авг 2020

Suslik
> нет, я тебе уже кучу раз говорил, что итеративный солвер не даёт точное
> решение. и ты даже цитировал это, утверждая, будто понял. каждый раз, когда ты
> решаешь один джойнт в итеративном солвере, он может нарушать какой-то другой,
> поэтому угловая скорость обнулится только в пределе с бесконечным числом
> итераций.
Ну ок.
Я проследил что происходит в течение трех циклов после столкновения.
Первый цикл - четыре джойнта.
Второй цикл - один джойнт.
Я думаю что это правильно, раз уж тело получило угловые скорости и разлет (а не слипание) происходит именно по этой причине, это так? А то я уже ни в чем не уверен, хотя это звучит логично.

#603
13:09, 15 авг 2020

MikeNew
Это называется не сделал тесты на законы сохранения.

#604
13:15, 15 авг 2020

samrrr
> Это называется не сделал тесты на законы сохранения.
Не, я поторопился. Там все нормально.

#605
13:28, 15 авг 2020

samrrr
> Это называется не сделал тесты на законы сохранения.
Перепроверил точки контакта, солвер - все правильно.
Начинаю снова думать что угловые скорости интегрируются неправильно.
Смотрю чужой движок - там все по факту то же самое что и у меня, скорости интегрируются сложением, но кубики закручиваются и разлетаются правильно. Но я докопаюсь в чем тут дело. :)

#606
19:09, 15 авг 2020

MikeNew
> Смотрю чужой движок - там все по факту то же самое что и у меня, скорости
> интегрируются сложением, но кубики закручиваются и разлетаются правильно. Но я
> докопаюсь в чем тут дело. :)
возьми мой класс базиса и попробуй уже с ним. (там мой старый быдло код, но он заведомо рабочий)
В том видео что я кидал, движ юзает его как базовый класс для ригид бади.

#607
23:31, 15 авг 2020

MikeNew
> Почему способ первый способ не поломался, в отличие от второго? Почему поломался именно второй?
Потому что второй способ (через сложение) — это грубая аппроксимация первого.
Т. е. ошибка второго растет быстрее с ростом dt.

> Под малыми dt что подразумевается?
Нормальный код при dt ⟶ 0 должен стремиться к точному решению. Т. е., чем меньше dt, тем меньше ошибка. Начиная с некоторого dt ошибкой можно пренебречь, это и будет "малое dt". Это, кстати, еще один хороший тест движка: для, скажем, dt = 1/100 и dt = 1/1000 он должен выдавать одно и то же.

И это не на глаз одно и то же, это надо выводить цифры в лог и сравнивать логи.

#608
9:20, 16 авг 2020

Хех, зацените:

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

Сделал там так же два кубика, как у меня. Там они вели себя правильно, причем настолько, что при прямом столкновении слипались. При непрямом - правильно закручивались, с одинаковыми скоростями.

Потом я взял и выставил им массу от балды. И получил точно такие же баги как у меня. Точно такой же разлет при прямом столкновении как у меня. При непрямом - точно такие же кривые закручивания с разными (и лишними) угловыми скоростями как у меня.

Так что мне, определенно, стоит начать с тщательного расчета масс и моментов инерции. Наверное, момент инерции у меня великоват, несмотря на то что я его считал как:

\(I = \frac{2}{3}mR^{2}\)

не катит такое упрощение.

#609
10:23, 16 авг 2020

MikeNew
Я думал ты реальные цифры берёшь.

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

#610
10:25, 16 авг 2020

MikeNew
> Сделал там так же два кубика, как у меня. Там они вели себя правильно, причем
> настолько, что при прямом столкновении слипались. При непрямом - правильно
> закручивались, с одинаковыми скоростями.
А в physx что?

#611
10:47, 16 авг 2020

samrrr
> А в physx что?
В физ-икс это делать не пробовал.
samrrr
> Я думал ты реальные цифры берёшь.
Что значит "реальные"?
Ну вот есть у меня куб, размером 1.0f.
Пусть я считаю, что у меня 1 метр = 1.0f;
Почему я просто не могу принять что куб из такого материала, что при таких размерах весит 100 кг и что его приближенный момент инерции
I = 2/3*100* (0.5^2) = 16.666 ?
Метры-килограммы, почему так считать нельзя?

#612
11:03, 16 авг 2020

MikeNew
Бери реальные цифры сначала, потом попробуй поставить такие.

#613
11:04, 16 авг 2020

MikeNew
> Метры-килограммы, почему так считать нельзя?
По идее можно, проверь что в physx.

#614
16:55, 16 авг 2020

MikeNew, не слушай samrrr, он не понимает о чем говорит.


MikeNew, и возьми ты мой класс как базу наконец, убедишься точно что дело в поворотах или же нет.

Страницы: 138 39 40 41 42 43 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.