Об этом проекте
Avian — это управляемый ECS физический движок для 2D и 3D, разработанный специально для игрового движка Bevy. Вместо обёртки над существующим движком он построен с нуля на основе Entity Component System от Bevy, поэтому физическое состояние находится в том же мире, что и остальные сущности игры.
Принципы проектирования
- Сделан с Bevy, для Bevy, без обёрток вокруг существующих движков.
- Эргономичный, привычный API.
- Активное использование ECS вместо отдельного физического мира.
- Модульная архитектура плагинов, позволяющая заменять части движка.
- Акцент на документации.
Возможности
- Твёрдые тела: динамические, кинематические и статические, с линейной и угловой скоростью, внешними силами, крутящим моментом и импульсами, гравитацией и масштабом гравитации, линейным и угловым демпфированием, блокировкой осей, доминированием твёрдых тел, непрерывным обнаружением столкновений (CCD) и автоматической деактивацией через сон.
- Обнаружение столкновений на основе Parry: коллайдеры с настраиваемыми слоями столкновений, плотностью и свойствами материала; генерация коллайдеров для мешей и целых сцен; события столкновений; доступ к сталкивающимся сущностям; хуки столкновений для фильтрации и изменения столкновений; ручные запросы контактов и тесты пересечений.
- Ограничения и соединения: встроенные фиксированные, дистанционные, призматические, вращательные и сферические соединения, а также поддержка пользовательских соединений и ограничений с использованием XPBD.
- Пространственные запросы: лучевые броски, броски форм, проекция точек и тесты пересечений, с API на основе компонентов, гибким системным параметром SpatialQuery и фильтрами запросов.
- Интерполяция и экстраполяция трансформаций для фиксированных временных шагов.
- Отладочная отрисовка для коллайдеров, AABB, контактов, соединений и пространственных запросов.
- Настраиваемое планирование, высокая кастомизируемость, модульные плагины, поддержка пользовательских бэкендов столкновений и точность f32/f64 (по умолчанию f32).
Использование
Добавьте avian2d или avian3d в Cargo.toml, зарегистрируйте PhysicsPlugins вместе с DefaultPlugins от Bevy, затем создайте сущности с такими компонентами, как RigidBody, Collider, AngularVelocity и Transform. README содержит полный 3D-пример, в котором вращающийся куб падает на статическую цилиндрическую платформу.
Примеры и версии
Многочисленные 2D- и 3D-примеры находятся в crates/avian2d/examples и crates/avian3d/examples. Они поддерживают как точность f32, так и f64; для f64 требуется отключить функции по умолчанию и вручную выбрать размерность и точность. Таблица версий сопоставляет выпуски Bevy с выпусками Avian (например, Bevy 0.19 с Avian 0.7), и предоставлены руководства по миграции. Avian является преемником Bevy XPBD.
Сообщество и лицензия
Вклад приветствуется через issues и pull requests, с политикой AI, требующей предварительного рассмотрения. Обсуждение разработки происходит в Avian Dev Discord и Bevy Discord. Проект имеет двойную лицензию MIT или Apache-2.0 на выбор пользователя.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.