Sobre el proyecto
Avian es un motor de física 2D y 3D impulsado por ECS, diseñado específicamente para el motor de juego Bevy. En lugar de envolver un motor existente, está construido desde cero con el Sistema de Componentes de Entidades (ECS) de Bevy en su núcleo, de modo que el estado físico reside en el mismo mundo que el resto de las entidades de un juego.
Principios de diseño
- Hecho con Bevy, para Bevy, sin envoltorios alrededor de motores existentes.
- API ergonómica y familiar.
- Uso intensivo del ECS en lugar de un mundo físico separado.
- Arquitectura de plugins modular para que partes del motor puedan reemplazarse.
- Énfasis en la documentación.
Características
- Cuerpos rígidos: dinámicos, cinemáticos y estáticos, con velocidad lineal y angular, fuerzas externas, torque e impulsos, gravedad y escala de gravedad, amortiguación lineal y angular, bloqueo de ejes, dominancia de cuerpos rígidos, detección continua de colisiones (CCD) y desactivación automática mediante suspensión.
- Detección de colisiones impulsada por Parry: colisionadores con capas de colisión configurables, densidad y propiedades de material; generación de colisionadores para mallas y escenas completas; eventos de colisión; acceso a entidades en colisión; ganchos de colisión para filtrar y modificar colisiones; consultas de contacto manuales y pruebas de intersección.
- Restricciones y articulaciones: articulaciones integradas fijas, de distancia, prismáticas, revolutas y esféricas, además de soporte para articulaciones y restricciones personalizadas mediante XPBD.
- Consultas espaciales: trazado de rayos, trazado de formas, proyección de puntos y pruebas de intersección, con una API basada en componentes, un parámetro de sistema SpatialQuery flexible y filtros de consulta.
- Interpolación y extrapolación de transformaciones para pasos de tiempo fijos.
- Renderizado de depuración para colisionadores, AABBs, contactos, articulaciones y consultas espaciales.
- Programación configurable, alta personalización, plugins modulares, soporte para backends de colisión personalizados y precisión f32/f64 (f32 por defecto).
Uso
Agrega avian2d o avian3d a Cargo.toml, registra PhysicsPlugins junto con DefaultPlugins de Bevy, luego genera entidades con componentes como RigidBody, Collider, AngularVelocity y Transform. El README incluye un ejemplo 3D completo donde un cubo giratorio cae sobre una plataforma cilíndrica estática.
Ejemplos y versiones
Numerosos ejemplos 2D y 3D se encuentran en crates/avian2d/examples y crates/avian3d/examples. Soportan precisión f32 y f64; f64 requiere deshabilitar las características predeterminadas y seleccionar dimensión y precisión manualmente. Una tabla de versiones mapea las versiones de Bevy a las de Avian (por ejemplo, Bevy 0.19 con Avian 0.7), y se proporcionan guías de migración. Avian es el sucesor de Bevy XPBD.
Comunidad y licencia
Las contribuciones son bienvenidas mediante issues y pull requests, con una política de IA para revisar primero. La discusión de desarrollo ocurre en el Discord de Avian Dev y el Discord de Bevy. El proyecto tiene doble licencia bajo MIT o Apache-2.0, a elección del usuario.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.