Fiz o download do arquivo de versão encontrado aqui , mas não sei por onde começar. No meu jogo, tenho vários oblongos e uma esfera, quero que todos colidam uns com os outros. (Todos eles têm malhas e volumes delimitadores associados)
edit - Acabei de perceber que os cuboides realmente têm AABB's associados a eles. Acho que vou ter que mudar isso pelo menos.
Quais são os passos que preciso seguir?
c++
directx
physics-engine
bullet-physics
SirYakalot
fonte
fonte
4.4 Integration overview
Eu sei que é muito espartano, mas descreve o processo básico. Portanto, se você olhar para isso e o código do exemplo Demos, não deverá ter muitos problemas.Respostas:
Aqui estão as etapas básicas que você precisará seguir:
Primeiro, crie um objeto mundial (ou seja
btDiscreteDynamicsWorld
) para conduzir sua simulação de física.Você já deve ter uma classe como essa
GameObject
que talvez armazene um modelo junto com sua caixa delimitadora e posição / orientação no mundo. Substitua as informações de posição / orientação por uma instância de um objeto de corpo físico (ou sejabtRigidBody
) e, ao renderizar o modelo, use as informações fornecidas pelo corpo. Ao criar o corpo, você precisará fornecer sua forma de massa e colisão, que deve corresponder aos volumes delimitadores que você já possui. Eu já falei sobre isso na sua outra pergunta também.Adicione cada um dos corpos do seu objeto de jogo ao objeto mundial .
Atualize a simulação pisando no mundo (ou seja, chamando
stepSimulation
seu mundo).E reserve um tempo para ler o manual, pois também possui muitas informações.
Editar para endereçar o comentário
Bem, parece que em seu comentário você nunca trabalhou com bibliotecas C ++ externas antes. Já faz um tempo desde que fiz isso, mas é assim que me lembro do processo (no Visual Studio).
Para começar, cito o manual que já explica o que você precisa:
E aqui estão as etapas básicas que você deverá seguir para atender às condições acima ...
1. Etapa de preparação
Primeiro, extraia o arquivo que você baixou para um diretório conhecido, por exemplo
C:\Bullet
. Você precisará conhecer o caminho para esta pasta posteriormente.Dentro, existem duas pastas que você precisará referenciar em seu projeto. A primeira é a
src
pasta que contém os.h
arquivos de cabeçalho que você incluirá no seu código-fonte. A segunda é alib
pasta que conterá os.lib
arquivos da biblioteca que você vinculará ao seu projeto. Observe que incluir e vincular são duas coisas diferentes.Mas a
lib
pasta deve estar vazia por enquanto, porque você ainda não criou o mecanismo. Portanto, consulte o manual sobre como criar o projeto usando o CMake e o Visual Studio, por exemplo. Está na página 7.Depois de ter sucesso, você deve ter pelo menos três arquivos na
lib
pasta:BulletDynamics.lib
,BulletCollision.lib
eLinearMath.lib
(eu estou supondo do manual). Agora, para fazer a conexão entre o Bullet e seu projeto ...2. Incluir cabeçalhos
Primeiro de tudo, você precisará adicionar a
C:\Bullet\src
pasta às opções de caminho de inclusão do seu projeto. Você pode fazer isso no Visual Studio clicando com o botão direito do mouse no seu projeto, navegandoConfiguration Properties -> C/C++ -> General -> Additional Include Directories
e gravando o caminho do diretório.Depois de configurar isso, você pode simplesmente fazer
#include “btBulletDynamicsCommon.h”
no seu código. Esse cabeçalho parece servir como um hub para todos os recursos necessários.3. Bibliotecas de Link
Finalmente, você precisará vincular as bibliotecas mencionadas acima. Primeiro, em
Configuration Properties -> Linker -> General -> Additional Library Directories
adicionar o caminho para alib
pasta, ou em outras palavrasC:\Bullet\lib
,.Em seguida,
Configuration Properties -> Linker -> Input-> Additional Dependencies
adicione o nome das bibliotecas à lista de dependências. Separe cada biblioteca com um;
e não esqueça a extensão do arquivo. Assim, por exemplo, você pode adicionar isso para o final da lista:BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.Após isso, você poderá criar e executar seu projeto.
fonte