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

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

Страницы: 124 25 26 2739 Следующая »
#360
19:54, 26 июня 2020

Suslik
> я, вроде, выкладывал SusliX lite когда-то, который реализовал подход из статьи
> на минимальном примере физики шариков
там вроде квадраты были

#361
3:17, 27 июня 2020

Suslik
> я, вроде, выкладывал SusliX lite когда-то, который реализовал подход из статьи
> на минимальном примере физики шариков
Вот это?

https://www.gamedev.ru/code/articles/PositionBasedPhysics

#362
3:18, 27 июня 2020

Adler
> там вроде квадраты были
Это тот же самый код что и здесь.

#363
16:57, 1 июля 2020

Появилась проблема.
Бокс падает на цилиндр. Если падает ровно посередине - все нормально, в ином случае его начинает колбасить (если крутящий момент уменьшать, то дрожать перестает). Причина понятна - коллайдер возвращает контактную точку не ровно посередине нижней грани бокса, а примерно, поэтому возникает крутящий момент. Но правильный солвер такое должен учитывать и решать, я же что-то не доделал. Что именно?

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


Suslik
Так же у меня очень странно ведет себя шар - при падении с цилинлдра крутится не в ту сторону, хотя бокс крутится как надо.

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


> 4) Если реализовать солвер прямо так, как написано в статье, то у него будут
> нестабильности, но немного другого характера: тела должны немного подрагивая,
> медленно ползти друг по другу.
И такое у меня тоже есть.

#364
(Правка: 5:14) 5:08, 2 июля 2020

Подробный разбор полетов.

Есть два бокса (картинка), черный неподвижен, синий падает вниз под под влиянием гравитации (красная стрелка), при столкновении получаются нормаль и точка контакта (зеленая стрелка):

Изображение

Если делать по статье - синий бокс приобретет угловую скорость, а так же его линейная скорость получит изменение по координате икс, чего происходить не должно:

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

В suslik_lite, приложенном к статье, такого нет, там все работает правильно.
Хотелось бы понять как это фиксится, познать теорию, так сказать..

Опять возвращаясь к этому моменту:
> 4) Если реализовать солвер прямо так, как написано в статье, то у него будут
> нестабильности, но немного другого характера: тела должны немного подрагивая,
> медленно ползти друг по другу.
Почему, что не учтено в статье?


PS Так.. похоже до меня дошло.. это все потому что у меня нет вармстартинга?

#365
5:19, 2 июля 2020

MikeNew
> при столкновении получаются нормаль и точка контакта (зеленая стрелка):
брехня же, ну. контактов должно быть столько, чтобы сформировать площадку устойчивого взаимодействия. в идеале это должно быть 4 точки, но иногда трудно выбрать 4 оптимальных точки, поэтому их находят больше. с одной точкой, тем более выбранной посередине (лол это вообще откуда), точно ничего работать не будет.

#366
5:23, 2 июля 2020

MikeNew
> Если делать по статье - синий бокс приобретет угловую скорость, а так же его
> линейная скорость получит изменение по координате икс, чего происходить не
> должно:
в первую очередь у тебя просто строится один левый контакт и он, ясное дело, придаст это левое угловое ускорение в таком случае. по-нормальному контактов должно быть 4 и их угловые ускорения должны компенсировать друг друга, бокс должен отскочить без подкрутки (почти). во-вторых, у тебя сейчас очень низкий момент инерции у боксов, поэтому они закручиваются медленнее, чем должны, и тебе трудно отлавливать ошибки, связанные с угловой скоростью. в-третьих, основное, чего у тебя нет — это трения. именно трение играет ключевую роль в том, чтобы сцена выглядела физично, а не warmstarting.

#367
(Правка: 6:39) 6:38, 2 июля 2020

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

#368
7:52, 2 июля 2020

MikeNew
> mpr-алгоритм, который я использую, возвращает подобную точку контакта для
> такого столкновения.
> Придется все-таки в нем копаться и переделывать чтобы возвращал несколько точек
> для таких случаев. Воспользовался готовой библиотекой, блин.
ни один из стандартных алгоритмов вроде gjk, epa, mpr, sat и подобных не возвратит тебе весь contant manifold, они все возвращают только одну точку. ты сам должен придумать алгоритм, который сгенерирует всю контактную площадку. здесь я описал алгоритм, который я переизобрёл: https://gamedev.ru/code/articles/convex_collisions

#369
(Правка: 11:36) 11:35, 31 июля 2020

Suslik

Обнаружил у себя "проблему" с псевдоскоростями, полез смотреть как устроен SusliX Lite, и обнаружил что у него те же самые "симптомы" - слишком визуально заметное проникновение на больших скоростях:

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


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

Как решают такую проблему?

#370
7:34, 2 авг. 2020

MikeNew
> Обнаружил у себя "проблему" с псевдоскоростями, полез смотреть как устроен
> SusliX Lite, и обнаружил что у него те же самые "симптомы" - слишком визуально
> заметное проникновение на больших скоростях
Проблема решилась с помощью }:+()___ [Smile] здесь:
https://gamedev.ru/code/forum/?id=253933

#371
10:09, 2 авг. 2020

MikeNew
это не решит проблему на 100%. точное решение делается через CCD и это гораздо медленнее (и вносит кучу своих артефактов), чем если на это забить.

#372
10:47, 2 авг. 2020

Suslik
> это не решит проблему на 100%. точное решение делается через CCD и это гораздо
> медленнее
Вот здесь можно попродробнее, CCD надо применять даже когда нет туннелирования (в данном случае )?
Или ты имел в виду что CCD нужен на случаи когда из-за слишком больших скоростей туннелирование все же начнет возникать?

Пока, чтобы не распыляться, решаю проблемы по мере поступления.
Вот, к примеру, странное поведение - бокс падает на землю, стоит нормально, а через короткое время его начинает колбасить (почему не сразу, накапливаются лишние псевдоскорости?). Из-за чего такое обычно бывает, где я недоглядел? Не может такого быть из-за того что пока что нет трения?

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#373
11:08, 2 авг. 2020

MikeNew
> Вот, к примеру, странное поведение - бокс падает на землю, стоит нормально, а
> через короткое время его начинает колбасить (почему не сразу, накапливаются
> лишние псевдоскорости?)
ну просто значит, что ты какую-то ерунду считаешь. ещё советовал бы проверить все те же самые случаи упругого/неупругого столкновения и относительной скорости, как ты проверял для шаров, только для боксов, сталкивающихся по касательной (одной точкой контакта).

#374
20:25, 2 авг. 2020

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

Страницы: 124 25 26 2739 Следующая »
ПрограммированиеФорумФизика