J'ai téléchargé le fichier de version trouvé ici , mais je ne sais pas par où commencer. Dans mon jeu, j'ai un certain nombre d'oblongs et une sphère, je veux que tous ceux-ci entrent en collision les uns avec les autres. (Ils ont tous des maillages et des volumes englobants associés)
modifier - Je viens de réaliser que les cuboïdes sont associés à des AABB. Je suppose que je vais devoir changer cela au moins.
Quelles sont les étapes à suivre?
c++
directx
physics-engine
bullet-physics
SirYakalot
la source
la source
4.4 Integration overview
Je sais que c'est très spartiate mais il décrit le processus de base. Donc, si vous regardez cela et le code de l'exemple de démonstration, vous ne devriez pas avoir trop de problèmes.Réponses:
Voici les étapes de base que vous devrez suivre:
Créez d' abord un objet mondial (c'est
btDiscreteDynamicsWorld
-à- dire ) pour piloter votre simulation physique.Vous devriez déjà avoir une classe telle que
GameObject
celle qui stocke peut-être un modèle avec sa boîte englobante et sa position / orientation dans le monde. Remplacer la position / orientation d' informations avec une instance d'un physique corps objet ( par exemplebtRigidBody
) et lors du rendu du modèle, utiliser les informations fournies par l'organisme à la place. Lors de la création du corps, vous devrez fournir sa masse et sa forme de collision qui devraient correspondre aux volumes limites que vous avez déjà. J'en ai également parlé dans votre autre question .Ajoutez chacun des corps de votre objet de jeu à l' objet monde .
Mettez à jour la simulation en parcourant le monde (c'est-à-dire en faisant appel
stepSimulation
à votre monde).Et prenez le temps de lire le manuel car il contient aussi beaucoup d'informations.
Modifier pour répondre au commentaire
Eh bien, il semblerait d'après votre commentaire que vous n'avez jamais travaillé avec des bibliothèques C ++ externes auparavant. Cela fait un moment que je n'ai pas fait ça, mais c'est ainsi que je me souviens du processus (dans Visual Studio).
Pour commencer, je cite le manuel qui explique déjà ce dont vous avez besoin:
Et voici les étapes de base que vous devrez suivre pour remplir les conditions ci-dessus ...
1. Étape de préparation
Tout d'abord, extrayez le fichier que vous avez téléchargé dans un répertoire connu, par exemple
C:\Bullet
. Vous devrez connaître le chemin d'accès à ce dossier ultérieurement.À l'intérieur, il y a deux dossiers que vous devrez référencer dans votre projet. Le premier est le
src
dossier qui contient les.h
fichiers d'en-tête que vous allez inclure dans votre code source. Le second est lelib
dossier qui contiendra les.lib
fichiers de bibliothèque que vous lierez à votre projet. Notez que l'inclusion et la liaison sont deux choses différentes.Mais le
lib
dossier doit être vide pour l'instant, car vous n'avez pas encore construit le moteur. Référez-vous donc au manuel sur la façon de construire le projet en utilisant CMake et Visual Studio par exemple. C'est à la page 7.Une fois que vous réussissez, vous devez avoir au moins trois fichiers dans le
lib
dossier:BulletDynamics.lib
,BulletCollision.lib
etLinearMath.lib
(je devine du manuel). Maintenant, pour faire le lien entre Bullet et votre projet ...2. Inclure les en-têtes
Tout d'abord, vous devrez ajouter le
C:\Bullet\src
dossier aux options de chemin d'inclusion de votre projet. Vous pouvez le faire dans Visual Studio en cliquant avec le bouton droit sur votre projet, en naviguantConfiguration Properties -> C/C++ -> General -> Additional Include Directories
et en écrivant le chemin du répertoire là-dedans.Après avoir configuré cela, vous pouvez simplement faire
#include “btBulletDynamicsCommon.h”
votre code. Cet en-tête semble servir de plaque tournante à toutes les fonctionnalités dont vous avez besoin.3. Lier les bibliothèques
Enfin, vous devrez lier les bibliothèques mentionnées ci-dessus. Frist, sous
Configuration Properties -> Linker -> General -> Additional Library Directories
ajouter le chemin d'accès aulib
dossier, ou en d' autres termes,C:\Bullet\lib
.Ensuite, sous
Configuration Properties -> Linker -> Input-> Additional Dependencies
, ajoutez le nom des bibliothèques à la liste des dépendances. Séparez chaque bibliothèque par un;
et n'oubliez pas l'extension du fichier. Ainsi , par exemple, vous pouvez ajouter cela à la fin de la liste:BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.Après cela, vous devriez pouvoir créer et exécuter votre projet.
la source