dmech - это физический движок реального времени, написанный на D. Разрабатывается специально для проекта Atrium, но его вполне можно использовать и в других игровых движках.
Движок ориентирован на симуляцию динамики твердых тел (в планах - поддержка деформируемых тел), но при этом написан с учетом игровой кинематики и логики - то есть, dmech можно использовать не только для физики как таковой, но и для обычной проверки столкновений и raycasting'а. При этом динамические и кинематические объекты могут естественным образом взаимодействовать друг с другом: с минимальными надстройками можно создать движущиеся и вращающиеся платформы, контроллеры персонажей и многое другое.
Реализованные возможности:
Репозиторий dmech: https://github.com/gecko0307/dmech
Если вы заинтересованы в развитии этого проекта, поддержите его на Patreon: https://www.patreon.com/gecko0307. Все, кто пожертвует $10 и выше, будут перечислены в списке спонсоров на этой странице и в репозитории dmech. Вы также можете сделать разовое пожертвование через PayPal: https://www.paypal.me/tgafarov. Заранее благодарен!
Движок ориентирован на симуляцию динамики твердых тел (в планах - поддержка деформируемых тел), но при этом написан с учетом игровой кинематики и логики - то есть, dmech можно использовать не только для физики как таковой, но и для обычной проверки столкновений и raycasting'а. При этом динамические и кинематические объекты могут естественным образом взаимодействовать друг с другом: с минимальными надстройками можно создать движущиеся и вращающиеся платформы, контроллеры персонажей и многое другое.
Реализованные возможности:
- Основные геометрические тела - сфера, бокс, цилиндр, конус, эллипсоид. Геометрия задается support mapping'ом, поэтому имеется возможность добавлять новые типы тел;
- Поддержка составных тел (нескольких геометрий на тело). Расчет тензоров инерции для составных тел осуществляется по теореме Гюйгенса-Штейнера;
- Проверка столкновений, включающая алгоритм MPR (Minkowski Portal Refinement) и динамический кэш контактов (Persistent Contact Manifold);
- Поддержка статических полигональных мешей любой сложности (оптимизация проверки столкновений на основе BVH - фактически, для физики можно использовать тот же меш, что и для графики, и это не скажется на производительности);
- Простейшие сочленения тел: ограничение расстояния (distance constraint), угловое ограничение (angle constraint), шарнирное сочленение (ball-socket), скользящее (slider);
- Пересечение тел с лучом (raycast). В качестве алгоритма для этого используется разновидность GJK;
- Прямая совместимость с OpenGL;
- Есть C-интерфейс (в разработке), движок можно собрать как динамическую библиотеку.
Репозиторий dmech: https://github.com/gecko0307/dmech
Если вы заинтересованы в развитии этого проекта, поддержите его на Patreon: https://www.patreon.com/gecko0307. Все, кто пожертвует $10 и выше, будут перечислены в списке спонсоров на этой странице и в репозитории dmech. Вы также можете сделать разовое пожертвование через PayPal: https://www.paypal.me/tgafarov. Заранее благодарен!
Комментариев нет:
Отправить комментарий