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

Оцените движок

Страницы: 1 2 Следующая »
#0
2:17, 30 мар. 2007

Простой физический движок, есть проблемы на этапе солвинга - дрожание объектов, все кто может чнонибудь посоветовать по поводу этого прошу ответить. Ещё добавил демо с тканью, ко может, пожалуйста оцените.
http://www.gamedev.ru/download/?id=5256
http://www.gamedev.ru/download/?id=5255


#1
10:06, 30 мар. 2007

Так, впринципе, неплохо. Кубики, упавшие на пол дрожат, поэтому немного двигаются в сторону.
Ткань прикольно, но было бы лучше если б она рвалась.

Посоветовать мне нечего, сам тока начал делать в 3D движок, но вопрос к тебе : ткань по статье Якобсона делал, или сам?

#2
22:36, 30 мар. 2007

hometown1988
хмм, интересно - я удивлен ;)

1) неплохой стэкинг боксов - стопки действительно почти не расползаются, но тдельные кубики/маленькие кучки так и наровят разъехаться
2) тела не просто не пересекаются, они всегда(?) находятся на некотором положительном расстоянии друг от друга!(фича? баг? особенность?)
3) ужаснейший из всех ужаснейших визуализаторов, какой я когда-либо видел ;) страшнущий альфа-канал GDI(GUI?), и кривой свет не дают сосредоточиться на физике. даже в моих пре-альфа дебажных версиях имхо было лучше ;)
4) ткань порадовала - сделать нетрудно, а как смотрится!
5) артефактно малый фпс в демке с боксами - вроде сцна нетяжелая, а на моем Cel 2.4 фпс около 15(тормозит физика), ткань летает шустро - молодец
6) народ требует тяжелых стресс-демок и общения в асе ;) нужны советы/хочешь поделиться опытом - всегда готов, ася в инфе.

#3
1:54, 31 мар. 2007

Andrew ZZZ
Suslik
ткань делал на основе интегрирования Верлет, по статье Якобсона. Взаимодействие между твёрдыми телами - на основе метода импульсов, для решения контакта в нескольких точках применяю последовательное, независимое разрешение контактов - за один раз только в одной точке(не строя систему уравнений), из - за этого получается дрожание объектов. Пробовал делать систему и решать методом Гаусса - Зейделя с проекциями на отрезок, всё решается нормально пока на какой-то итерации процесс не становится расходящимся - то есть все силы устермляются в бесконечность, в принципе есть идеи как решить эту проблему, но пока не реализововал. Солвер, который сейчас, в принципе даёт неплохие результаты
-тела практически никогда не проникают друг в друга(только если превышен предел по итерациям), на точности не сказывается коректность нахождения точек колижна(у меня некоторые точки могут дублироватся). Да и в принципе проблема дрожания объектов тоже решаема - надо определить когда тела должны уходить из симуляции и отключатся, единственная проблема - скорость. Если можете кинте исходники где нормально решается ЛЦП, и помогите с выше назваными проблемами. Добавлено демо рвущейся ткани на котороую падают боксы.
А визуализатор у меня нормальный, есть даже скайбокс, можно загружать модель из Макса(предварительно конвертировав в *.х), просто пришлось убрать всё лишне, чтобы меньше весило. Направление света совпадает с вектором взгляда, чтобы можно было рассматривать с разных сторон.
Демо сбоксами - 20 ФПС на Атлоне ХР 1.9 - на кождой итерации считеем силы заново, нет слипинга, нет оптимизации колижина - только самая примитивная.
Новое демо
http://www.gamedev.ru/download/?id=5261

#4
10:37, 31 мар. 2007

hometown1988
Во, прикольно! Ткань понравилась. Сделай демку, где тряпок больше, и рвущиеся и нервущиеся. Только освещение в демке нормальное сделай, а то смотреть перпендикулярно плоскости невозможно.

#5
13:26, 31 мар. 2007

hometown1988
дай мне свою асю, или сам мне напиши. думаю, нам будет о чем побеседовать ;)

#6
13:37, 31 мар. 2007

hometown1988
да епт! ни на новых, ни на старых демках я так и не смогг установить, коллайдится ткань сама с собой, или нет. почему-то не работает стрейф (a, d). ну вобщем много всего. очень маленькие кусочки ткани ведут себя очень глючно. вобщем, можно много сказать. я, возможно понял откуда такие тормоза - ты решаешь итерации, пока тела не перестанут проникать друг в друга/не будет превышен предел числа итераций? это нот гуд. стек из сотни ящиков таким методом вряд ли устоит.

>на каждой итерации считеем силы заново
совершенно зря. на мой взгляд warmstarting - одна из самых гениальных веще в симуляци физики, какую только придумали

расскажи плиз про свой коллижн детекшн

#7
14:09, 31 мар. 2007

hometown1988
Интересная демка, ткань-2. Интересно, есть ли у тебя разбиение на острова, слип. Если есть, то по какой системе реализовано, и как решена проблема формирования островов двух групп твердых тел, связанных, например, нитью.. Или тканью например. Так же интересует вопрос формирования новых частиц связей в треугольники после рвания ткани.
P/S: если есть вопросы по лцп, готов обсудить/помочь, заходи в ирку на канал gamedev_physics, или кинь в ПМ мне свою асю, побеседуем.

#8
14:14, 31 мар. 2007

XperienS
читай:
> нет слипинга, нет оптимизации колижина

>вопрос формирования новых частиц связей в треугольники после рвания ткани
новые-то откуда берутся? Это ткань по якобсону. Там вроде не создаются новые связи

#9
14:32, 31 мар. 2007

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

#10
18:48, 31 мар. 2007

Неплохо!
Только управление очень неудобное.
И ФПС я не увидел где(заголовок окна не видно, он там?).
И я не понял - зачем тебе ЛЦП в импульс симуляции или ты решаешь не для силы, а для импульсов ЛЦП?

#11
22:51, 31 мар. 2007

Добавлено новое демо http://www.gamedev.ru/download/?id=5267
Сделал новое демо - пирамида из 231 куба, изменил освещение, добавил скайбокс. У меня в среднем 14 фпс. Думаю её можно назвать тяжёлой стресс демкой (по крайней мере для моего движка). Новые демки с тканями сделаю позже.
В демках с тканью стрейфа нет(лень было делать), ткань сама с собой не колайдится. Хотелось бы узнать побольше про
warmstarting.
Мой колижн детекшин :
Идея у меня осталсь, еще с двухмерой демки. Суть такова:для каждой точки тела мы расчитываем линейную скорость*dt,строим отрезок, проходящий через эту точку и имеющий длину как у расчитаной скорости( тоест куда точка переместится за время dt ), проверяем пересечения с линиями другого тела, и находим время, через которое тела столкнутся и точки пересечения. В принципе точка тела движется не по прямой, а по циклойде - но за маленькое время можно считать, что он движется по прямой. Пересечение находится всегда, даже когда скорость очень большая, однако если тела большое и имеет большую угловую скорость, могут возникать ошибки, и сесли тела провалятся друг в друга - то всё, уже ничего не сделаеш. Для трёхмерной, в принципе тоже, только вместо пересечения я проверяю проекцию скорости на нормаль, и если она больше расстояния точки до плоскости - то они будут в контакте. Понятно?
На счёт разрыва ткани - новые точки в разрыве не создаются, хотя в принципе это сделать не сложно.
Острова пока не создаю, хотя уже подошёл к реализации этого(сегодня-завтра сделаю).
В ЛЦП нахожу импульсы для тел.gexogen, если ты знаешь другой метод импульсов - раскажи, или дай ссылку.

#12
23:35, 31 мар. 2007

Где можно скачать нормальный физический движок NewTon для Delphi, и учебники к нему?
Пожалуйста ответьте!

#13
0:44, 1 апр. 2007

Понятия не имею

#14
1:37, 1 апр. 2007

hometown1988
да напиши мне в асю - ты парень толковый, интересно побазарить

вкратце warmstarting - метод, при котором на каждой следующей используются результаты предыдущей итерации

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

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