Ich habe die hier gefundene Release-Datei heruntergeladen , bin mir aber nicht sicher, wo ich anfangen soll. In meinem Spiel habe ich eine Reihe von Rechtecken und eine Kugel, ich möchte, dass all diese miteinander kollidieren. (Sie haben alle Maschen und zugehörige Begrenzungsvolumina)
edit - Ich habe gerade festgestellt, dass den Quadern tatsächlich AABBs zugeordnet sind. Ich denke, ich muss das zumindest ändern.
Welche Schritte muss ich befolgen?
c++
directx
physics-engine
bullet-physics
Sir Yakalot
quelle
quelle
4.4 Integration overview
geworfen ? Ich weiß, dass es sehr spartanisch ist, aber es beschreibt den grundlegenden Prozess. Wenn Sie sich das und den Code für die Beispieldemos ansehen, sollten Sie nicht zu viele Probleme haben.Antworten:
Hier sind die grundlegenden Schritte, die Sie ausführen müssen:
Zunächst erstellen Sie ein Welt - Objekt (dh
btDiscreteDynamicsWorld
) Ihre Physik - Simulation zu fahren.Sie sollten bereits eine Klasse wie diese haben
GameObject
, die möglicherweise ein Modell zusammen mit seinem Begrenzungsrahmen und seiner Position / Ausrichtung in der Welt speichert. Ersetzen der Position / Orientierung Informationen mit einer Instanz eines physikalischen Körpers Objekt (dhbtRigidBody
) , und wenn das Modell Rendering verwenden , um die Stelle durch den Körper zur Verfügung gestellten Informationen. Wenn Sie den Körper erstellen, müssen Sie seine Masse und Kollisionsform angeben, die mit den bereits vorhandenen Begrenzungsvolumina übereinstimmen sollten. Ich habe auch in Ihrer anderen Frage darüber gesprochen .Fügen Sie dem Weltobjekt jeden Körper Ihres Spielobjekts hinzu.
Aktualisieren Sie die Simulation, indem Sie die Welt betreten (dh
stepSimulation
Ihre Welt anrufen ).Nehmen Sie sich etwas Zeit, um das Handbuch zu lesen, da es auch viele Informationen enthält.
Bearbeiten, um den Kommentar zu adressieren
Aus Ihrem Kommentar geht hervor, dass Sie noch nie zuvor mit externen C ++ - Bibliotheken gearbeitet haben. Es ist schon eine Weile her, seit ich das getan habe, aber so erinnere ich mich an den Prozess (in Visual Studio).
Für den Anfang zitiere ich das Handbuch, das bereits erklärt, was Sie brauchen:
Und hier sind die grundlegenden Schritte, die Sie ausführen müssen, um die oben genannten Bedingungen zu erfüllen ...
1. Vorbereitungsschritt
Extrahieren Sie zunächst die heruntergeladene Datei in ein bekanntes Verzeichnis, z
C:\Bullet
. Sie müssen den Pfad zu diesem Ordner später kennen.Im Inneren befinden sich zwei Ordner, auf die Sie in Ihrem Projekt verweisen müssen. Der erste ist der
src
Ordner, der die hält.h
Header - Dateien , dass Sie umfassen im Quellcode. Der zweite ist derlib
Ordner, in dem sich die.lib
Bibliotheksdateien befinden, die Sie mit Ihrem Projekt verknüpfen . Beachten Sie, dass das Einschließen und Verknüpfen zwei verschiedene Dinge sind.Aber der
lib
Ordner sollte nun leer sein, weil Sie nicht haben , gebaut um den Motor noch. Lesen Sie daher das Handbuch, wie Sie das Projekt beispielsweise mit CMake und Visual Studio erstellen. Es ist auf Seite 7.Nachdem Sie erfolgreich waren, sollten Sie mindestens drei Dateien im
lib
Ordner haben :BulletDynamics.lib
,BulletCollision.lib
undLinearMath.lib
(ich vermute aus dem Handbuch). Nun stellen Sie die Verbindung zwischen Bullet und Ihrem Projekt her ...2. Überschriften einschließen
Zunächst müssen Sie den
C:\Bullet\src
Ordner zu den Include-Pfadoptionen Ihres Projekts hinzufügen . Sie können dies in Visual Studio tun, indem Sie mit der rechten Maustaste auf Ihr Projekt klicken, zuConfiguration Properties -> C/C++ -> General -> Additional Include Directories
dem dort angegebenen Verzeichnispfad navigieren und diesen schreiben.Nachdem Sie das eingerichtet haben, können Sie einfach
#include “btBulletDynamicsCommon.h”
Ihren Code bearbeiten. Dieser Header scheint als Hub für alle Funktionen zu dienen, die Sie benötigen.3. Bibliotheken verknüpfen
Schließlich müssen Sie die oben genannten Bibliotheken verknüpfen. Frist, unter
Configuration Properties -> Linker -> General -> Additional Library Directories
fügen Sie den Pfad zumlib
Ordner hinzu, oder mit anderen Worten ,C:\Bullet\lib
.Fügen Sie dann unter
Configuration Properties -> Linker -> Input-> Additional Dependencies
den Namen der Bibliotheken zur Liste der Abhängigkeiten hinzu. Trennen Sie jede Bibliothek mit einem;
und vergessen Sie die Dateierweiterung nicht. So können Sie dies beispielsweise am Ende der Liste hinzufügen :BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.Danach sollten Sie in der Lage sein, Ihr Projekt zu erstellen und auszuführen.
quelle