|
| Índice do Artigo |
|---|
| Utilizando Motores de Física |
| Criando um Programa Exemplo |
| Integrando Bullet com Ogre3d |
| Configurando o Projeto e Download |
| Todas Páginas |
No artigo anterior tivemos uma visão geral de como funciona a física nos jogos modernos e vimos alguns conceitos sobre o funcionamento e utilização de motores de física. Neste artigo iremos ver como integrar um desses motores e integrá-lo a um jogo 3d utilizando a Bullet Physics e o Ogre 3d.
Bullet Physics
A biblioteca Bullet é uma biblioteca para detecção de colisões e simulação da dinâmica de corpos rígidos e corpos macios. Ela possui código aberto e pode ser usada em projetos comerciais ou não, contanto que o projeto se encaixe nos termos da licença ZLib, que inclusive torna possível o uso da biblioteca em consoles e outros dispositivos que não permitam ligação dinâmica.
Das bibliotecas físicas que conheço a Bullet é uma das mais completas e esta sempre em constante evolução. Escolhi ela devido a minha experiência com ela e por achar uma biblioteca fácil de se usar, apesar de a documentação a principio não ser muito amigável, ela possui uma interface intuitiva e consistente, o que simplifica o trabalho do programador.
A Bullet suporta as funcionalidades que geralmente qualquer biblioteca desse nível suporta e outras que não são tão comuns assim, sendo algumas funcionalidades:
- Detecção de colisão discreta e continua, incluindo raios e formas convexas
- Formas de colisão que incluem malhas côncavas e convexas, além de primitivas básicas
- Simulação de corpos rígidos, dinâmica de veículos, controlador de personagens, juntas variadas e ragdolls
- Corpos macios para simulação de tecidos, cordas e volumes que sofrem deformação, podendo interagir com corpos rígidos
- Integração com o Blender, suporte a COLLADA
Instalando a Bullet
O primeiro passo para se utilizar a Bullet é fazer o download do pacote com o código fonte, para este artigo foi utilizada a versão 2.78, que pode ser encontrada na seção de downloads do projeto no Google Code clicando-se aqui. O arquivo utilizado foi o bullet-2.78.zip. Não espero mudanças nas versões futuras que venham a mudar a forma de instalação, caso isso ocorra vou atualizar o artigo com os novos passos.
Feito o download basta extrair os arquivos para o diretório de sua preferência, para o resto do artigo vou assumir que a biblioteca foi instalada no diretório “C:\develop\libs\bullet-2.78”, caso você use outro caminho, apenas modifique os passos a seguir conforme a necessidade.
A instalação não difere muito da instalação de qualquer outra biblioteca C/C++, a maior diferença é que é preciso compilar a Bullet antes do uso, pois ela não vem pré-compilada. Para este artigo foi utilizado o Visual Studio 2008 Express, que você pode aprender como instalar e utilizar com os artigos da seção sobre o Visual do PontoV, bastando clicar aqui. Caso utilize outro ambiente ou outra versão do Visual basta adaptar os passos conforme a necessidade.
Compilando a Bullet
Após extrair os arquivos você vai encontrar dentro da pasta de instalação a pasta “msvc”, que contém os projetos para serem utilizados com o Visual Studio. No meu caso acessei a pasta 2008 (que fica dentro de msvc) para abrir a solução “BULLET_PHYSICS.sln”.
Ao carregar a solução você vai se deparar com uma cena semelhante a da figura abaixo:
Os projetos com o nome de “App*” são demonstrações de como utilizar a biblioteca e a principio precisamos de apenas os projetos que constroem a biblioteca, os projetos chamados “Bullet*” (e a LinearMath), selecione então estes projetos (BulletCollision, BulletDynamics, BulletFileLoader, BulletMultiTheaded, BulletSoftBody, BulletWorldImporter e LinearMath), clique no menu Build –> Build Selection, conforme mostra a figura abaixo:
Assim que a compilação for concluída, modifique a configuração do projeto para “Release” (conforme mostrado na figura abaixo) e execute novamente a compilação, para assim construir a versão “Release” da biblioteca.
Concluída compilação, observe que foram criadas duas pastas dentro da pasta 2008 da biblioteca, uma para a versão Debug e outra para versão Release:
Agora que a biblioteca já foi construída, basta configurar o Visual Studio.
Configurando o Visual Studio
Para configurar o compilador, prefiro criar uma variável de ambiente que contenha o caminho para a biblioteca, dessa forma fica simples atualizar versões da biblioteca apenas modificando-se o valor da variável, este é o mesmo processo utilizado para se configurar o Ogre 3D neste artigo, onde você pode conferir detalhes de como criar variáveis de ambientes.
Criada a variável basta abrir o Visual novamente, se você não fechou o Visual durante a criação da variável é preciso re-iniciar ele para que ele possa “enxergar” a nova variável de ambiente, caso não esteja utilizando uma variável, não é preciso fechá-lo.
Com o Visual aberto, clique em “Tools –> Options” e na janela que se abriu selecione “Projects and Solutions –> VC++ Directories”, na opção “Show Directories for:” selecione “Include Files”, de um duplo clique numa linha em branco e entre com o valor: $(BULLET_HOME)\src. O valor “$(BULLET_HOME)” indica a variável de ambiente recém criada, “\src” é a pasta dentro da pasta da Bullet onde podemos encontrar os arquivos de cabeçalho. Caso não tenha usado a variável de ambiente, entre apenas com o caminho de instalação da Bullet junto com a pasta src, como, por exemplo: C:\bullet-2.78\src.
Por enquanto iremos configurar apenas os arquivos de cabeçalho, pois os arquivos de biblioteca iremos configurar diretamente no projeto. Faremos isso devido a um pequeno inconveniente da Bullet: os arquivos de “Debug” e “Release” possuem exatamente o mesmo nome. Como é preferível utilizar a versão correta de cada compilação de acordo com a compilação do nosso projeto, teremos que configurar quais arquivos utilizar diretamente no nosso projeto, então vamos partir para a construção do programa exemplo!
-
07/09/2011 23:18:30 | Vinícius Godoy de Mendonça

Para jogos 2D provavelmente será mais fácil utilizar a Box2D:
http://box2d.org/O VC++ só será habilitado depois que você criar o primeiro arquivo .cpp dentro do seu projeto. Crie ele e o menu aparece.

-
08/09/2011 12:34:48 |201.0.119.xxx| Luis Eduardo Nery Santos - Instalação da biblioteca

Valeu Vinicius! vou utilizar essa biblioteca para fazer meu jogo então.
Mas eu não sei muito bem como instalar bibliotecas, tem algum tutorial pra me indicar?
ou se for simples tem como dar uma explicada resumida?
Obrigado.
-
08/09/2011 12:38:41 | Bruno Crivelari Sanches

Luis,
no geral bibliotecas C/C++ seguem sempre um mesmo padrão:
- extrair os arquivos para algum lugar
- configurar diretório de includes do compilador
- configurar diretório de libs do linker
- nas configurações do seu projeto, adicionar as bibliotecas novas como dependenciasNesse artigo é feito tudo isso e ainda inclui o passo extra de compilar a bilbioteca. O processo pode variar uma biblioteca para outra, mas os passos básicos são os que listei aqui.
Esse outro artigo mostra o processo para uma outra biblioteca (SDL) e explica em mais detalhes alguns conceitos, serve como uma "receita" para instalação de bibliotecas:
http://pontov.com.br/site/cpp/46-conceitos-basicos/1 55-como-usar-bibliotecas-cc
-
10/10/2011 14:25:04 |189.9.22.xxx| augustowebd - Versão para impressão

Bruno mais uma vez parabéns pelo excelente artigo, só gostaria de solicitar, não querendo ser abusado, uma versão para impressão completo, porque a versão para impressão atual pega apenas a página corrente.
Grato.
-
11/10/2011 09:23:46 | Bruno Crivelari Sanches

Obrigado Augusto!
Quando clico ali no "Todas as páginas" e depois na impressorinha, funciona com todas as páginas.
T+
-
01/12/2011 07:29:54 |186.201.143.xxx| Napoleon - Oiii

Ei eu gostei muito de sua matéria, tem como falar do box2D
-
14/02/2012 09:51:58 |200.222.8.xxx| japaseki

Fala Sanches, estou tentando executar este projeto mas quando ele entra na tela para escolher o render (opengl ou DIRECTX), ele cai automaticamente....o q poderia ser ?
-
14/02/2012 09:55:08 | Bruno Crivelari Sanches

Olá,
você seguiu a risca as instruções da ultima página no ultimo item "Configurando o Projeto" ?
Se sim, tem que depurar para ver onde ocorre o erro e o porque.
Para saber como usar o depurador: http://www.pontov.com.br/site/cpp/41-visual-c/216-como-usar-o-depurado r-do-visual-c
T+
-
17/03/2012 01:19:01 |189.15.217.xxx| matheus bueno

ola,
parabens pelo post, muito bom mesmo,fugindo um, pouco do assunto, eu estou criando um jogo( na verdadde é uma especie d PacMan modficado) em allegro, tem como usar a box 2D junto com o allegro, e se tiver, compensa usar?
obriigado.
-
18/03/2012 18:38:22 | Bruno Crivelari Sanches

Para um pacman? Não vejo porque usar biblioteca de física. É um sistema de colisão tão simples.
-
19/03/2012 10:59:58 |189.15.236.xxx| Matheus Bueno

no caso haveriam modificações nele, seria meio temático, por exemplo em uma faze com o tema espaço sideral os fantasmas seriam et's que disparariam lazer's e por ai vai, o pacman também ganharia up grades de acordo com os pontos acumulados, esses up grades poderiam ser, por exemplo, mais tempo invencivel quando se come uma pirula, ou almento na velocidade,pensei q em algumas ocasioens aplicar uma biblioteca de física facilitaria meu trabalho.
o problema maior no jogo esta sendo a AI, mas eu ta pensando em criar um grafo pra representar o labirinto, e calcular o menor caminho entre o fantasma e o pacman, só q eu to em duvida, se isso vai pesar meu jogo(se existe uma solução melhor ficaria grato em ouvir).
quanto a biblioteca de fisica, gostaria de saber apenas se existe essa possibilidade, ate pra outros jogos com allegro, o pacman é meu primeiro jogo, é mais pra aprendizado, mas eu gostaria de fazer direitinho.











Olá, Bruno.
Estou criando um jogo estilo Arkanoid, como projeto na faculdade.
Gostaria de saber se essa biblioteca é indicada para utilizar em jogos 2d, feitos com c++ e OpenGL e também estou com duvidas na hora de configurar a variavel de ambiente no visual studio 2010, pois o VC++ não está habilitado.
Parabéns pelos posts.
Obrigado. =)