Eu vi box2d e bullet portados para JavaScript, mas nenhum deles me atraiu, exceto pelo código fonte. Tudo parecia bastante simples, uma vez que olhei para dentro.
O que eles estão fazendo em cada uma dessas bibliotecas para obter uma boa simulação de física? Não consigo encontrar nenhuma explicação.
Respostas:
A física do corpo rígido é realmente bastante simples em conceito - ou seja, os comportamentos que um mecanismo está tentando criar não são muito complicados. É provavelmente por isso que as bibliotecas que você consultou parecem bastante simples para você.
O truque é que fazer um sim robusto , estável e rápido , mesmo na presença de coisas como erro de ponto flutuante e taxas de quadros baixas e variáveis, é bastante difícil e geralmente envolve muitos ajustes e mexidas. Para complicar ainda mais o problema, muitas pessoas extremamente inteligentes fizeram esforços heroicos para encontrar melhores soluções e criaram algoritmos bonitos e poderosos, mas difíceis de entender, que deram ao campo uma reputação de magia negra.
Em geral, um mecanismo de física se preocupa com três coisas (a ordem em que eles são executados no loop interno varia):
Para a maioria deles, existem algoritmos simples, mas não tão precisos, e algoritmos complexos, mas mais precisos. Para começar:
Há uma excelente introdução a métodos simples e o que pode dar errado nos primeiros capítulos do livro recém-publicado Game Physics Pearls.
fonte
Leia a série de física de jogos de Glenn Fiedler: http://gafferongames.com/game-physics/
Além disso, Erin Catto (o autor do Box2D) tem um artigo sobre dinâmica restrita .
Para detecção de colisão, leia Detecção de colisão em tempo real de Christer Ericson
fonte
http://en.wikipedia.org/wiki/Rigid_body_dynamics pode ser um bom lugar para começar. Jogos diferentes dividem as coisas em corpos diferentes, mas, em geral, você tem vários corpos rígidos separados, ligados por juntas com propriedades específicas. A cada loop do jogo, você calcula as forças de cada corpo e calcula seus novos parâmetros (posição, velocidade, etc.). Você também deve transmitir forças de cada corpo para os outros com os quais compartilha articulações e fatorar as forças globais (gravidade).
Isso não cobre coisas como física de líquidos ou tecidos, essas são todas bobagens para mim. Existem equações diferenciais envolvidas e é sobre o ponto em que meus olhos brilham.
fonte
O OpenCloth detalha todas as técnicas de integração da maneira mais simples possível. Muito está no pipeline.
Detalhes: http://code.google.com/p/opencloth/
fonte
Uma coisa importante além das equações da física é rastrear todos os objetos, para que a verificação da detecção e interações de colisões seja o mais rápido possível. Hashing espacial é a técnica que o mecanismo de física Chipmunk usa.
fonte
Apenas para adicionar à lista de links, achei as notas SIGGRAPH de Baraff muito úteis.
fonte