Skip to content

Tecnologia: Chipmunk Physics

27 de outubro de 2008

Eu vi hoje que uma pessoa chegou aqui no blog procurando por “rotação colisão allegro”

Eu digo, tive o mesmo problema durante a criação de meu jogo (que ainda não está pronto) CUT Asteroids, a solução foi achar esse motor de física espetacular, e facilmente acoplável ao Allegro, chamado Chipmunk Physics.

O Chipmunk Physics funciona somente em 2D, apesar de que algumas pessoas acham isso uma desvantagem na verdade é uma grande vantagem, pois permite cálculos muito mais rápidos do que em 3D, a ponto de que é possível fazer simulações de física bem realistas em tempo real.

Apesar de que aparentemente o Chipmunk Physics não é poderoso por não suportar coisas como cordas e fluidos, isso não é exatamente um problema, além do Chipmunk usar a licensa MIT (significa que você pode altera-lo livremente) e ser feito em C, o motor é muito flexível, permite que sejam feitas coisas incríveis a partir de sua simulação de objetos sólidos, dois ótimos exemplos é uma simulação de fluidos usando círculos com baixo atrito ou o trabalho de um dos usuários do Chipmunk chamado Sketch, que de alguma forma simula cordas de forma muito interessante (http://files.slembcke.net/chipmunk/movies/sketches.mov).

O uso do motor é também muito simples, você pode criar um “espaço” e ir adicionando corpos e “formas”, os corpos são os objetos em si, lendo as variáveis deles você pode transformar em algo gráfico, ja as formas é como o motor calcula colisões (sim, o próprio motor calcula as colisões) e permite que você selecione desde formas simples (como círculos, que permitem extrema velocidade de cálculo) até formas mais complexas como formas poligonais de vários lados (óbviamente, ainda bidimensionais). Depois de criar o espaço, adicionar os objetos e formas, tudo o que o programador tem que fazer é chamar uma única função que atualiza o espaço automaticamente (e este calcula as colisões usando um algorítimo especial que é muito veloz!) e então tudo o que é necessário ser feito é ler as variáveis e renderizar.

Para casos em que colisões tem outros efeitos (como causar danos por exemplo) o motor também permite que seja programado funções especiais que serão chamadas quando houver colisões entre objetos dos tipos especificados, assim tendo-se fácil controle sobre isso também.

Como eu disse ali em cima, escolhi o motor porque eu queria colisões com rotação, e o resultado não me desapontou, o Chipmunk calcula as colisões e depois aplica impulsos (que você também pode aplicar manualmente por programação, o que permite outros tipos de interações com o sistema) corretamente levando em conta a elasticidade e a fricção dos objetos, isso permite que por exemplo dois círculos ao se tocarem transfiram velocidade de rotação de um para o outro, ou a simulação de rodas em um terreno (existe uma pessoa tentando fazer um simulador de jipe usando o Chipmunk) e até mesmo ver um quadrado rolando escada abaixo.

Apesar de que como eu disse eu usei o Chipmunk com o Allegro, nada impede que ela seja usado com SDL, ou até mesmo motores 3D, como Horde3D (eu uso esse além do Allegro), ou Irrlicht, ou até mesmo Ogre3D.

Links:

Site do Chipmunk: http://wiki.slembcke.net/main/published/Chipmunk
Vídeo no Youtube com OpenGL: http://www.youtube.com/watch?v=6stHi1u-pRg
Vídeo no Youtube PSP: http://www.youtube.com/watch?v=Jn27Hi59bw0

A propósito: O Chipmunk pode ser usado tanto em C (sua linguagem nativa) como foi preparado também para ser facilmente usado em C++ e também em Ruby!

Vídeo do chipmunk usando Ruby: http://www.youtube.com/watch?v=oYuhYCiX12Q&feature=related

Anúncios
No comments yet

Deixe um comentário por favor!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: