Sobre o projeto
Avian é um motor de física 2D e 3D orientado a ECS, projetado especificamente para o motor de jogos Bevy. Em vez de encapsular um motor existente, ele é construído do zero com o Entity Component System do Bevy em seu núcleo, de modo que o estado da física vive no mesmo mundo que o restante das entidades de um jogo.
Princípios de design
- Feito com Bevy, para Bevy, sem wrappers em torno de motores existentes.
- API ergonômica e familiar.
- Uso intenso do ECS em vez de um mundo de física separado.
- Arquitetura de plugins modulares para que partes do motor possam ser substituídas.
- Ênfase na documentação.
Recursos
- Corpos rígidos: dinâmicos, cinemáticos e estáticos, com velocidade linear e angular, forças externas, torque e impulsos, gravidade e escala de gravidade, amortecimento linear e angular, bloqueio de eixos, dominância de corpo rígido, detecção contínua de colisão (CCD) e desativação automática via suspensão.
- Detecção de colisão alimentada pelo Parry: colliders com camadas de colisão configuráveis, propriedades de densidade e material; geração de colliders para malhas e cenas inteiras; eventos de colisão; acesso a entidades em colisão; ganchos de colisão para filtrar e modificar colisões; consultas manuais de contato e testes de interseção.
- Restrições e juntas: juntas fixas, de distância, prismáticas, rotativas e esféricas integradas, além de suporte a juntas e restrições personalizadas usando XPBD.
- Consultas espaciais: raycasting, shapecasting, projeção de pontos e testes de interseção, com uma API baseada em componentes, um parâmetro de sistema SpatialQuery flexível e filtros de consulta.
- Interpolação e extrapolação de transformação para timesteps fixos.
- Renderização de depuração para colliders, AABBs, contatos, juntas e consultas espaciais.
- Agendamento configurável, alta customização, plugins modulares, suporte a backends de colisão personalizados e precisão f32/f64 (f32 por padrão).
Uso
Adicione avian2d ou avian3d ao Cargo.toml, registre PhysicsPlugins junto com DefaultPlugins do Bevy e, em seguida, crie entidades com componentes como RigidBody, Collider, AngularVelocity e Transform. O README inclui um exemplo 3D completo em que um cubo giratório cai sobre uma plataforma cilíndrica estática.
Exemplos e versões
Numerosos exemplos 2D e 3D estão em crates/avian2d/examples e crates/avian3d/examples. Eles suportam precisões f32 e f64; f64 requer desabilitar os recursos padrão e selecionar dimensão e precisão manualmente. Uma tabela de versões mapeia lançamentos do Bevy para lançamentos do Avian (por exemplo, Bevy 0.19 com Avian 0.7), e guias de migração são fornecidos. Avian é o sucessor do Bevy XPBD.
Comunidade e licença
Contribuições são bem-vindas via issues e pull requests, com uma política de IA para revisão prévia. A discussão de desenvolvimento acontece no Avian Dev Discord e no Bevy Discord. O projeto é licenciado duplamente sob MIT ou Apache-2.0, à escolha do usuário.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.