Журнал FPS

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Журнал FPS » Язык D » dmech - физический движок на D


dmech - физический движок на D

Сообщений 1 страница 4 из 4

1

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

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

Реализованные возможности:

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

В качестве математической библиотеки dmech использует dlib. Исходники проекта распространяются по лицензии Boost.

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

Подробнее о истории создания dmech можно почитать в моем блоге и в на форуме Gamedev.ru.

Глубокие оптимизации производительности движка не проводились, но уже сейчас он способен с приемлемым FPS обрабатывать несколько сотен несвязанных тел (я проверял до 1000 тел на железе 2008 года). Конечно, для каких-то сверхзадач вроде симуляции жидкостей на основе частиц он не подходит (все равно без ускорения на GPU такие вещи сейчас уже не делаются), но в играх вроде шутеров ответственность за физику вполне может на себя взять. В будущем планирую добавить необходимые компоненты для реализации физики автомобиля и гонок (сплайновые трассы, convex cast и т.д.)

Демки:

- Составное тело 1
- Составное тело 2
- Пример игровой кинематики с динамическим миром

0

2

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

http://se.uploads.ru/t/PD0QJ.jpg

0

3

dmech теперь есть в реестре Dub:

http://code.dlang.org/packages/dmech

0

4

Хорошая новость для тех, кто не пишет на D: dmech обзавелся C-интерфейсом - то есть, движок можно собрать как динамическую C-библиотеку, которую затем можно использовать в C, C++ и вообще в любом другом языке. Есть поддержка Windows и Linux. Пока, правда, реализован далеко не весь API, но начало положено.

0


Вы здесь » Журнал FPS » Язык D » dmech - физический движок на D