dmech

dmech - это физический движок реального времени, написанный на D. Разрабатывается специально для проекта Atrium, но его вполне можно использовать и в других игровых движках.

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

Реализованные возможности:
  • Итеративный SI-солвер на основе импульсов с поддержкой двухосевого трения контакта;
  • Основные геометрические тела - сфера, бокс, цилиндр, конус, эллипсоид. Геометрия задается support mapping'ом, поэтому имеется возможность добавлять новые типы тел;
  • Поддержка составных тел (нескольких геометрий на тело). Расчет тензоров инерции для составных тел осуществляется по теореме Гюйгенса-Штейнера;
  • Проверка столкновений, включающая алгоритм MPR (Minkowski Portal Refinement) и динамический кэш контактов (Persistent Contact Manifold);
  • Поддержка статических полигональных мешей любой сложности (оптимизация проверки столкновений на основе BVH - фактически, для физики можно использовать тот же меш, что и для графики, и это не скажется на производительности);
  • Простейшие сочленения тел: ограничение расстояния (distance constraint), угловое ограничение (angle constraint), шарнирное сочленение (ball-socket), скользящее (slider);
  • Пересечение тел с лучом (raycast). В качестве алгоритма для этого используется разновидность GJK;
  • Прямая совместимость с OpenGL; 
  •  Есть C-интерфейс (в разработке), движок можно собрать как динамическую библиотеку.
В качестве математической библиотеки движок использует dlib. Исходники проекта распространяются по лицензии Boost.

Репозиторий dmech: https://github.com/gecko0307/dmech

Если вы заинтересованы в развитии этого проекта, поддержите его на Patreon: https://www.patreon.com/gecko0307. Все, кто пожертвует $10 и выше, будут перечислены в списке спонсоров на этой странице и в репозитории dmech. Вы также можете сделать разовое пожертвование через PayPal: https://www.paypal.me/tgafarov. Заранее благодарен!

Комментариев нет:

Отправить комментарий