À propos du projet
Avian est un moteur physique 2D et 3D piloté par l'ECS, conçu spécifiquement pour le moteur de jeu Bevy. Plutôt que d'envelopper un moteur existant, il est construit depuis zéro avec le système de composants d'entités (ECS) de Bevy comme cœur, de sorte que l'état physique vit dans le même monde que le reste des entités d'un jeu.
Principes de conception
- Conçu avec Bevy, pour Bevy, sans enveloppes autour de moteurs existants.
- API ergonomique et familière.
- Utilisation intensive de l'ECS au lieu d'un monde physique séparé.
- Architecture de plugins modulaires pour que des parties du moteur puissent être remplacées.
- Accent mis sur la documentation.
Fonctionnalités
- Corps rigides : dynamiques, cinématiques et statiques, avec vélocité linéaire et angulaire, forces externes, couple et impulsions, gravité et échelle de gravité, amortissement linéaire et angulaire, verrouillage d'axe, dominance de corps rigide, détection de collision continue (CCD), et désactivation automatique via le sommeil.
- Détection de collision propulsée par Parry : collisionneurs avec couches de collision configurables, densité et propriétés matérielles ; génération de collisionneurs pour maillages et scènes entières ; événements de collision ; accès aux entités en collision ; hooks de collision pour filtrer et modifier les collisions ; requêtes de contact manuelles et tests d'intersection.
- Contraintes et articulations : articulations intégrées fixes, de distance, prismatiques, révolutes et sphériques, plus prise en charge d'articulations et contraintes personnalisées utilisant XPBD.
- Requêtes spatiales : lancer de rayons, lancer de formes, projection de points et tests d'intersection, avec une API basée sur les composants, un paramètre de système SpatialQuery flexible et des filtres de requête.
- Interpolation et extrapolation de transformation pour les pas de temps fixes.
- Rendu de débogage pour collisionneurs, AABBs, contacts, articulations et requêtes spatiales.
- Planification configurable, haute personnalisation, plugins modulaires, prise en charge de backends de collision personnalisés, et précision f32/f64 (f32 par défaut).
Utilisation
Ajoutez avian2d ou avian3d à Cargo.toml, enregistrez PhysicsPlugins aux côtés de DefaultPlugins de Bevy, puis générez des entités avec des composants tels que RigidBody, Collider, AngularVelocity et Transform. Le README inclut un exemple 3D complet où un cube en rotation tombe sur une plateforme cylindrique statique.
Exemples et versions
De nombreux exemples 2D et 3D se trouvent sous crates/avian2d/examples et crates/avian3d/examples. Ils prennent en charge les précisions f32 et f64 ; f64 nécessite de désactiver les fonctionnalités par défaut et de sélectionner manuellement la dimension et la précision. Un tableau de versions fait correspondre les versions de Bevy aux versions d'Avian (par exemple, Bevy 0.19 avec Avian 0.7), et des guides de migration sont fournis. Avian est le successeur de Bevy XPBD.
Communauté et licence
Les contributions sont les bienvenues via les issues et les pull requests, avec une politique sur l'IA pour examen préalable. Les discussions de développement ont lieu sur le Discord Avian Dev et le Discord Bevy. Le projet est sous double licence MIT ou Apache-2.0, au choix de l'utilisateur.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.