Обновление физики

Доступна новая сборка демонстрации физического движка. Были исправлены кое-какие мелочи, улучшена точность солвера, сведен к пренебрежимому минимуму джиттеринг (дрожание покоящихся тел). Каркасное отображение тел заменено сплошным.

atrium-physics2-testbuild2-win32.zip (1,57 МБ).

Новый физический движок

Началась разработка нового физического движка для Atrium. Реализован новый солвер контактов. Планируется поддержка всех стандартных геометрических тел (сфера, бокс, цилиндр, капсула), а также разных типов сочленений. Доступна тестовая сборка*, иллюстрирующая динамику боксов:

atrium-physics2-testbuild1-win32.zip (1,56 МБ).

* — В главном меню приложения выберите «Sandbox».

Фиксированный шаг времени

Доступна новая тестовая сборка Atrium: в физическом движке реализован новый таймер, который учитывает интерполяцию между кадрами с фиксированным шагом времени. Физика «не любит» нефиксированный шаг, поэтому время между двумя кадрами рендеринга разбивается на определенное количество шагов, а остаток просто линейно интерполируется.

atrium-physics-test5-linux-x86.tar.bz2

Atrium: интеграция физики

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

atrium-physics-test2-win32.zip (3.13 Мб)

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

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

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

Поддержка 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