Поддержка мешей в dmech

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

Изменения доступны в репозитории dmech на GitHub.

Цилиндры и MPR

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

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