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

Зацените трехмерный физ. движок

Страницы: 1 2 3 4 5 6 Следующая »
#0
20:24, 7 июня 2013

Пишу для самообразования и использования в личных целях. Реализованы несколько типов геометрий (сфера, бокс, цилиндр, конус, эллипсоид) - можно добавить больше, так как алгоритм проверки столкновений (MPR) поддерживает любые выпуклые объекты. Поддерживаются статичные trimesh'и и рейкаст со всеми объектами.

Язык реализации - D. Демки написаны с использованием OpenGL.

Исходники на GitHub

Актуальные демки:
Составное тело 1
Составное тело 2
Пример игровой кинематики с динамическим миром

Старые демки:
Стек
Джоинты

Управление в демках:
Левая кнопка мыши - вращение камеры вокруг сцены;
Средняя кнопка мыши - перемещение камеры;
Колесико - зум;
Cтрелки, PageUp - управление активным телом;
Пробел - прыжок (только в примере кинематики);
Enter - переключение активного тела (оно выделяется красным цветом), есть не везде;
C - показать/скрыть точки контактов (есть не везде);
G - переключение гравитации (есть не везде);
Esc - пауза или выход.

Изображение Изображение Изображение Изображение


#1
20:53, 7 июня 2013

Gecko
Круто. На D вроде ничего похожего ещё нету, думаю что народ подтянется :)

#2
21:05, 7 июня 2013

bazhenovc
Да, есть только пара-тройка биндингов к сишным библиотекам, поэтому и взялся за это дело. Конечная цель - создание небольшого шутера с физическими головоломками. В принципе, я мог бы взять ODE (или, как вариант, написать враппер для Bullet), но у меня страсть к написанию своих велосипедов =)

#3
21:13, 7 июня 2013

Gecko
Я бы присоеденился, но у меня уже есть двиг на С++ :)

#4
2:23, 10 июня 2013

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

цилиндры, стоящие на торцах, куда-то медленно едут.

#5
9:25, 10 июня 2013

Вот, вроде выглядит не слишком ужасно:
Тест с цилиндрами-палками и блином

Заметил, что трение не очень правдоподобное. Оно у меня как бы есть, но тела все равно скользят слишком сильно, какой бы коэффициент ни выставил. Это сказывалось еще со стеком из боксов - нижние боксы медленно разъезжались. И сейчас стек из этих палок не стоит. К тому же, нельзя устойчиво прислонить одно тело к другому - тоже едет. Такое чувство, как будто между телами прослойка из жидкости. Надо фиксить...

Манифолд не строю, еще не придумал, как запилить это. Пока обхожусь одним контактом на пару тел.

Кстати, кто пользуется Хромом: у вас с Дропбокса нормально скачивается? А то моя девушка жалуется, что Хром не дает сразу скачать эти мои сборки, выводит предупреждение о потенциально опасном содержимом.

#6
14:17, 11 июня 2013

Gecko
> Пока обхожусь одним контактом на пару тел.
может в этом и причина?

#7
15:27, 11 июня 2013

repeat
Может быть. Я вчера пофиксил трение, стало значительно лучше, но под давлением большой тяжести тела все равно слегка разъезжаются. Наверное, стоит подумать над введением манифолдов. Впрочем, это все уже мелочи, мне для моей игры пока сойдет.

#8
22:07, 13 июня 2013

Gecko
Мне кажется, или ты уже кучу лет назад писал свою физику? Кажется, припоминаю тебя на форуме.

#9
22:14, 13 июня 2013

Suslik
Нет, путаешь с кем-то. Я физикой заниматься начал только в январе этого года. А на форуме действительно когда-то сидел более активно, года 2-3 назад.

#10
1:41, 14 июня 2013

дай исходник на с++

#11
13:22, 14 июня 2013

werasaimon
На C++ нет, только на D. Но D - это почти псевдокод, в нем любой разберется, даже не зная языка.

#12
0:10, 15 июня 2013

Gecko
ну хотя да он легкий

#13
23:38, 25 июня 2013

Зажмите и немного подержите пробел. Интересно получается.

#14
15:44, 29 июня 2013

Kornival
Так и задумано. Пробел включает "антигравитацию" для одного из тел (не знаю, как корректно это назвать, у меня в игре планируется такая возможность - перетаскивать предметы по воздуху гравитационным излучателем).

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

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