Повышение стабильности

Повышена точность солвера, улучшена стабильность объектов в стеке (в представленной демке вы можете наблюдать стопку из 10 боксов, устойчиво стоящих один на другом), реализованы упругие столкновения. Добавлена поддержка треугольников – идет работа над реализацией статичных trimesh’ей для игровых уровней.

Cборка для Windows (1,88 МБ)
Сборка для Linux (2,67 МБ)
Исходники (4,1 МБ)

Цилиндры и MPR

В физическом движке реализован новый алгоритм проверки столкновений – Minkowski Portal Refinement (MPR), который позволяет ввести поддержку таких тел, как цилиндр, конус, пирамида, призма, капсула, октаэдр и т.д. Этот же алгоритм работает и для привычных сфер с боксами – самое замечательное в том, что список поддерживаемых тел можно расширить вообще любым выпуклым объектом, для которого определена функция экстремальной точки в заданном направлении (иными словами, геометрия должна знать, какая ее точка является “самой далекой” от центра в каждом направлении).

Сборка для Windows (1,62 МБ)
Сборка для Linux (2,48 МБ)
Исходники (3,11 МБ)

Меню в Atrium

Состоялось довольно значительное обновление кодовой базы Atrium. В частности, было реализовано главное меню и меню паузы. Кроме того, репозиторий был синхронизирован с последней ревизией dlib.

Доступны свежие сборки:
Для Windows (1,74 МБ)
Для Linux (2,76 МБ).

Исходники проекта доступны на GitHub.

Пример физики на движке 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