Поддержка боксов в физическом движке

Доступна новая сборка физического движка: идет работа над реализацией поддержки ориентированных боксов (OBB). На данный момент работает обнаружение столкновений бокс-сфера и бокс-плоскость.

physics-test7-win32.zip (0.9 Мб)

Исходники физического движка

Выложил в открытый доступ исходники физического движка по лицензии Boost, как и весь мой остальной код. Проект пока находится на ранней стадии, но в настоящее время это чуть ли не единственная реализация импульсной физики в трех измерениях для D, так что, думаю, мои наработки могут многих заинтересовать.

physics-src-alpha0.zip (0.95 Мб).

Поддержка trimesh’ей в физическом движке

Доступная новая сборка физического движка: реализована поддержка статических полигональных мешей. Проверка столкновений с треугольниками оптимизируется при помощи BVH.

physics-test6-win32-optimized2.zip (0.98 Мб)

Обновление физического движка

Доступная новая бинарная сборка моего физического движка. Повышена точность солвера контактов: тела больше не проникают друг в друга под тяжестью своего веса. Добавлена поддержка интегрирования методом Верле.
Исходники ждите в ближайшем будущем — они вскоре будут интегрированы в Atrium.

physics-test5-win32.zip (0.8 МБ)
physics-test5-linux-x86.tar.bz2 (2.0 МБ)

Кроме того, недавно я завел аккаунт на DropBox — теперь все публичные файлы буду выкладывать туда.

Пример физики на движке Chipmunk

Пример рисования мышью многоугольников, которые сразу же начинают «жить» в физическом мире. В качестве физического движка используется ChipmunkD — прямой порт Chipmunk на D. Демка может быть использована в качестве основы для physics-based 2D-игры. Единственное ограничение — поддерживаются только выпуклые многоугольники, неконвексная геометрия просто отсеивается и не тесселируется до простых форм.

В архиве — исходники и сборки для Win32 и Linux x86:
polyshaper-all-platforms.zip (1.16 МБ)

Внимание! Пример писался достаточно давно — исходный код, скорее всего, не скомпилируется современными версиями DMD без дополнительных «танцев с бубном».

Физический движок

Не писал уже целый месяц, приношу за это извинения читателям этого блога =) Месяц ушел на создание каркаса физического движка для Atrium. Для решения контактов используется метод Sequential Impulses, поддерживается трение. На данный момент реализованы два типа геометрических объектов — сфера и бесконечная плоскость. Интегрирование пока производится методом Эйлера, планируется поддержка метода Рунге-Кутты.

В представленной демке симулируется система из 6 шаров и плоскости. Красным шаром можно управлять с клавиатуры (клавиши-стрелки). Зеленый шар имеет повышенную массу, большой шар — пониженную.

Сборка для Linux:
physics-testbuild1-linux-glibc28-x86.tar.bz2